5 Dinge, die ich bei meinem ersten Arduino Projekt gelernt habe

Anna von Cody hat ein Semester in Porto studiert und dort jede Menge verblüffende aber auch nervenaufreibende Erfahrungen mit Arduino gesammelt. Arduino — das ist ein Microcontroller, der in Roboter oder Maschinen eingebaut wird. Auf diese kleine Leiterplatte aus verschiedenen Chips, Schaltern und Zugängen werden dann Befehle programmiert. Wie es Anna mir ihrem Arduino ergangen ist, lest ihr hier:

Im Rahmen meines Auslandssemesters in Porto hatte ich letztendlich mal genug Druck , sodass ich mich selbst mit einem Arduino Projekt befasst habe. Nachdem wir das Semester damit verbracht haben, uns mit den Grundlagen der Arduino Hardware und der eigentlichen Programmierung auseinanderzusetzen, ging es am Ende darum, ein kleines eigenes Projekt umzusetzen, das die gelernten Inhalte miteinander verknüpfen sollte.

Die anfängliche Euphorie

Die einzige Voraussetzung des Projektes war, dass es die gelernten Inhalte einbinden sollte, ansonsten sollten wir einfach nach unseren Interessen entscheiden. Kein Wunder, dass ich am Ende mit einem Projekt zum Thema Essen endete.

Nach dem Durchforsten des Internets über bereits existierende Projekte und damit ein bisschen Inspiration, habe ich mich letztendlich entschieden, ein Problem zu lösen, das besonders am Wochenende immer mal wieder auftritt. Das Problem des perfekten Frühstückseies. 
Wer kennt das nicht: Es ist Sonntag, man kocht sein Ei, ganz normal sechs Minuten, so wie immer, und dann ist es nicht so wie meistens weich, sondern hart. Die gute Laune schwindet. Dass das Ei mal so, mal so, wird, trotz gleicher Kochzeit, liegt natürlich daran, dass die Kochzeit nicht der einzige Faktor ist, der auf das Ergebnis Einfluss hat.

Daher hat der Physiker Werner Gruber eine Formel entwickelt, mit der man die Kochzeit des perfekten Eis berechnen kann. Mein Ziel des Projektes also: Diese Formel in den Arduino Code implementieren und eine Maschine bauen, die mir morgens das perfekte Ei zaubert. In meinem Kopf klang das alles gar nicht kompliziert, eher sehr spannend.

Zur Verfügung hatte ich ein sogenanntes Breadboard, ein Steckbrett auf dem man seine LED’s , Knöpfchen und was man sonst noch so braucht, stecken und mit dem Arduino selbst verkabeln kann. Vorgesehen waren eine LED-Leiste, die den Fortschritt des Kochprozesses anzeigen sollte, sowie eine weitere RGB-LED zur Anzeige der Eierkonsistenz und ein Knopf mit dem man die benötigten Variablen einstellen können sollte. Die Navigation durch das Menü und die Auswahl der Variablen sollte per Audioausgabe erfolgen und ein Song das Ende des Kochprozesses anzeigen.

Ich machte mir eine Skizze wie das Ganze aussehen sollte und fing an den Code zu schreiben. Mit dem Wissen aus dem Unterricht vor allem über das Erkennen unterschiedlicher Knopfdrücke sollte das kein Problem sein. Ein paar Mal musste ich noch Dinge nachlesen aber nach einer nicht allzu langen Zeit hatte ich meinen Code. Dann war es Zeit, den Code durch das Programm überprüfen zu lassen. Ich musste feststellen: Der Code verzeiht nicht. Vor allem keine Typos. Mindestens zehn Semikolons fehlten.

Learning Nummer 1

Codes Schreiben ist für jemanden wie mich, die beim schnellen Tippen gerne den einen oder anderen Schreibfehler macht, eine Qual. Definitiv ein weiterer Grund, wieso ich meine Schreibskills durch das Zehnfingersystem verbessern sollte. Ein Trost: Der Code Editor zeigt die meisten Fehler auf, sodass man sie schnell beheben kann. Dann das Board zusammenstecken, mit dem Arduino verbinden, das Programm hochladen und — nichts passiert.

Learning Nummer 2

Dass etwas nicht so funktioniert, wie geplant, kann unendlich viele Gründe haben. Die Ursache muss nicht immer schwierig zu finden sein. Bevor man sich in den Code vertieft, sollte man erstmal die Hardware überprüfen. Leuchten die Lampen, wenn ich sie ansteuere? Funktioniert der Knopf? In meinem Fall war einfach der Arduino kaputt und ich musste ihn gegen einen Neuen austauschen.

Dann nochmal die einzelnen Komponenten gecheckt, alles lief wir geschmiert. Bis auf den eigentlichen Code und es folgten: Die Phasen der Frustration. Da fing der ganze Spaß erst an. Schritt für Schritt, Zeile für Zeile, arbeitete ich mich durch den Code und versuchte die Bugs zu finden und zu beheben.

Learning Nummer 3

Vor allem als Anfänger verbringt man sehr viel Zeit in Online Foren und versucht Menschen zu finden, die das gleiche Problem oder zumindest ein ähnliches schon bekämpft haben und einem somit den Weg in die richtige Richtung weisen können. Wenns mal ganz gut läuft, wurde sogar ein Code Beispiel hochgeladen, das man dann eins zu eins kopieren kann.

Aber leider war das nicht für alle meine Bugs der Fall. Ich habe mich dumm und dusselig gegooglet, das ein und andere Mal meine Mitbewohner durch einen überraschenden Schrei verschreckt und trotzdem keine Lösung gefunden.

Learning Nummer 4

Es hilft, wenn man nicht ganz allein ist mit seinem Frust. Zum Glück konnte ich mir Hilfe von meinem Professor holen. Es gab diese Momente, da war ich mir so sicher mit dem Code und wie er funktionieren müsste, da hat es durchaus geholfen mit jemandem zu sprechen, der nochmal einen anderen Blick auf die Sache hatte und mir einen Stups in eine andere Richtung geben konnte. Wenn man so jemanden nicht hat und wirklich gar nicht mehr weiterkommt, kann man das eigene Problem auch selber in ein Forum posten. Dabei ist aber, genau wie bei meinem Gespräch mit meinem Professor, wichtig, dass man einerseits gut erklären kann, was man macht, was das Problem ist und andererseits auch aufzeigt, dass man mitdenkt und nicht einfach nur darauf hofft, dass jemand Anderes das Problem für einen löst.

Learning Nummer 5

Denn das ist es mitunter auch, was das Coden so spannend macht: Wenn man mitdenkt und nicht zu schnell aufgibt, dann erlebt man viele kleine und größere Erfolgsmomente und hat eine sehr steile Lernkurve. Es gibt tausend verschiedene Wege, ein Problem zu lösen. Das heißt: nicht sofort aufgeben, wenn du einen Lösungsweg nicht findest, dann findest du einfach einen anderen.

Das Projekt hat meine Geduld, Frustrationstoleranz und meine Problemlösekompetenz inklusive Gehirnzellen hart auf die Probe gestellt, aber am Ende war ich ziemlich stolz auf mich und habe nun das Gefühl das nächste Projekt kann kommen.