Ratgeber · 15 Min. Lesezeit

Arduino Code Schritt für Schritt erklärt: verstehen und ändern

Arduino Code Schritt für Schritt erklärt mit BlueGrays: Zusammenfassung, Schritte, Hilfe bei Problemen, Probier-es-selbst-Aufgaben, 15-Minuten-Routine.

Code verstehen ist der Reiter im Bereich Quellcode jeder BlueGrays-Projektseite, der den fertigen Arduino-Code Schritt für Schritt erklärt. Um herauszufinden, was der kopierte und hochgeladene Code eigentlich tut, gehst du so vor: Lies zuerst die Zusammenfassung Was macht dieser Code?, suche dann jeden Codeausschnitt aus dem Abschnitt Schritt für Schritt zusammen mit seiner Erklärung im vollständigen Code, schau bei Wenn du nicht weiterkommst nach, falls die Schaltung nicht wie erwartet arbeitet, und ändere zum Schluss mit der Aufgabe Probier es selbst eine einzige Sache im Code und beobachte das Ergebnis auf dem Board. Diese vier Abschnitte sind der kürzeste Weg von „es funktioniert, aber ich weiß nicht warum“ zu „ich weiß, was passiert, wenn ich diese Zeile ändere“.

In diesem Beitrag gehen wir Code verstehen von Anfang bis Ende anhand des echten Inhalts eines echten Projekts durch: Projekt Nummer 10, LED mit Taster ein- und ausschalten. Es ist kostenlos, als Anfänger eingestuft und hat auch eine Blockansicht, sodass jede und jeder die Erklärung für Code und Blöcke öffnen kann. Du findest hier die Abschnitte des Reiters, eine Methode, Code und Erklärung abzugleichen, eine 15-minütige Lernroutine, eine Strategie für Probier-es-selbst-Aufgaben, welche Änderung welches Konzept vermittelt, die Ansicht Blöcke verstehen, den Unterschied zwischen Wenn du nicht weiterkommst und Fehlerbehebung sowie Ideen für Lehrkräfte im Unterricht.

Dieser Beitrag setzt unsere Reihe fort, die BlueGrays Bereich für Bereich vorstellt. Im vorherigen Teil haben wir die ganze Projektseite am Beispiel des LDR-Nachtlichts erklärt und Code verstehen kurz vorgestellt; hier konzentrieren wir uns nur auf diesen Reiter und auf das Üben von Codeänderungen.

Wo ist Code verstehen und wer kann es nutzen?

Wenn du ein Projekt öffnest und zum Bereich Quellcode scrollst, siehst du oben eine Auswahl mit zwei Reitern: Code und Code verstehen. Der Reiter Code zeigt das ganze Programm, dort sind auch die Schaltflächen Kopieren und Link kopieren. Wechselst du zu Code verstehen, öffnet sich die kommentierte Fassung desselben Programms. Jedes der 200+ Projekte hat diesen Reiter, und er funktioniert bei Arduino-, ESP32- und Raspberry-Pi-Pico-Projekten gleich. Die Zugangsregel ist einfach: In den 60 kostenlosen Projekten (20 pro Plattform) ist Code verstehen für alle offen; auch mit einem kostenlosen Konto siehst du die Zusammenfassung, alle Schritte, Wenn du nicht weiterkommst und die Aufgabe Probier es selbst samt Lösung. In Premium-Projekten steht an der Stelle des Reiters eine Sperrkarte: „Mit Premium bekommst du den Code Schritt für Schritt erklärt.“ Die Methode aus diesem Beitrag kannst du also bei LED Blinken, Ampel, LED-Polizeilicht und den Tasterprojekten ohne Bezahlung anwenden.

Die Abschnitte: wofür ist welcher da?

AbschnittWas er zeigtWie du ihn nutzt
Was macht dieser Code?Eine Zusammenfassung in 2–3 Sätzen: was das Programm tut, in welcher Reihenfolge und warum es sich ständig wiederholtErkläre das Programm danach in einem Satz, ohne hinzuschauen; klappt das nicht, lies noch einmal
Schritt für SchrittNummerierte Schritte, jeweils mit Titel, kurzem Codeausschnitt und Erklärung (in den meisten Projekten 5–6 Schritte)Lies die Schritte der Reihe nach und finde jeden Ausschnitt im vollständigen Code
CodeausschnittNur die Zeilen, um die es in diesem Schritt geht, ohne den Rest des ProgrammsAchte auf Zahlen und Pinnummern; das sind meist die Stellen, die du ändern kannst
Wenn du nicht weiterkommstHäufige Symptome in diesem Projekt und ihre Lösungen (meist 4–5)Wenn die Schaltung nicht wie erwartet arbeitet, such dein Symptom zuerst hier
Probier es selbstEine kurze Aufgabe, die eine einzige Änderung im Code verlangtSag zuerst das Ergebnis voraus, dann ändere und lade hoch
TippEin Satz direkt unter der Aufgabe, der sagt, wo du hinschauen sollstLies ihn, wenn deine Vorhersage nicht stimmt; er verrät nicht die Antwort, sondern die Richtung
Lösung anzeigenEin LÖSUNG-Kasten, der sich beim Antippen öffnet: welche Zeile wozu wird und was dann passiertÖffne ihn zuletzt, vergleiche mit deiner Lösung und schließe ihn mit Lösung ausblenden wieder

Die Reihenfolge der Abschnitte ist bewusst gewählt: erst das große Ganze, dann die Teile, dann die Fehler und zum Schluss dein eigenes Experiment. Codeausschnitte sind nicht das ganze Programm, sondern nur die Zeilen, die der Schritt erklärt; die schließende geschweifte Klammer eines Blocks kann erst im nächsten Schritt auftauchen. Deshalb bringt es mehr, alle Schritte der Reihe nach zu lesen, statt nur einen anzuschauen. Der Tipp steht offen direkt unter dem Aufgabentext, die Lösung bleibt verborgen, bis du auf Lösung anzeigen tippst. So hast du Raum zum Nachdenken, bevor du die Antwort siehst.

Beispiel: Code verstehen im Projekt LED mit Taster ein- und ausschalten

Das Projekt besteht aus einem Taster und einer LED. Eine Seite des Tasters geht an 5V, die gegenüberliegende an Pin 13 des Boards; derselbe Pin wird über einen 10-kΩ-Widerstand auf GND gezogen. Das lange Bein der LED geht an Pin 7, das kurze über einen 330-Ω-Widerstand an GND. Die Zusammenfassung in Code verstehen beschreibt das Programm so: Bei jedem Tastendruck wechselt die LED einmal ihren Zustand, aus wird an und an wird aus; auch wenn du den Taster gedrückt hältst, wechselt die LED nur einmal, und eine Wartezeit von 50 ms ignoriert das Prellen des Tasters. Hier das vollständige Programm, mit zweisprachigen Kommentaren.

C++ (Arduino IDE)
1int ledState = 0;     // LED durumu: 0 sönük, 1 yanık / LED state: 0 = off, 1 = on
2int lastButton = 0;   // Butonun önceki okuması / Previous button reading
3
4void setup() {
5  pinMode(13, INPUT);   // Buton girişi, harici pull-down / Button input, external pull-down
6  pinMode(7, OUTPUT);   // LED çıkışı / LED output
7}
8
9void loop() {
10  int button = digitalRead(13);   // Butonu oku / Read the button
11  if (button != lastButton) {     // Buton durumu değişti / Button state changed
12    if (button == 1) {            // Yalnız basış anında (LOW -> HIGH) / Only at the press (LOW -> HIGH)
13      ledState = !ledState;       // Durumu tersine çevir / Flip the state
14      digitalWrite(7, ledState);  // Yeni durumu LED'e yaz / Write the new state to the LED
15    }
16    delay(50);                    // Sıçramayı atlamak için kısa bekleme / Short wait to skip the bounce
17    lastButton = button;          // Bu okumayı sakla / Store this reading
18  }
19}
SchrittCodeausschnittKern der ErklärungVermitteltes Konzept
1. Variablen, die sich LED und Taster merkenint ledState = 0; int lastButton = 0;ledState speichert den aktuellen Zustand der LED, lastButton den vorherigen Messwert des Tasters; da sie außerhalb der Funktionen deklariert sind, bleiben ihre Werte bei jedem loop-Durchlauf erhaltenGlobale Variable
2. setup(): Pins vorbereitenpinMode(13, INPUT); pinMode(7, OUTPUT);D13 ist Eingang, D7 Ausgang; INPUT reicht, weil die Schaltung einen externen 10-kΩ-Pull-down hat, sonst würde der Pin in der Luft hängenEingang, Ausgang, Pull-down
3. loop(): Taster lesen, Änderung erkennenint button = digitalRead(13); if (button != lastButton) { if (button == 1) {Ist der Messwert gleich dem vorherigen, passiert nichts; hat er sich geändert und ist jetzt 1, wurde der Taster genau in diesem Moment gedrücktFlankenerkennung (Wechsel von LOW auf HIGH)
4. Zustand umkehren, an die LED schreibenledState = !ledState; digitalWrite(7, ledState);Der Operator ! macht aus 0 eine 1 und aus 1 eine 0; der neue Wert wird an die LED geschriebenToggle (Ein/Aus)
5. 50 ms warten und letzten Messwert speicherndelay(50); lastButton = button;Ein mechanischer Taster prellt einige Millisekunden; 50 ms Warten ignoriert das, danach wird der Messwert für den nächsten Durchlauf gespeichertEntprellen

Beim Lesen der Schritte lohnt es sich darauf zu achten, dass die Erklärung nicht nur sagt, was passiert, sondern auch, was ohne diese Zeile passieren würde. Schritt 1 erinnert daran, dass ledState mit 0 beginnt und die LED deshalb beim Einschalten aus ist. Daraus ergibt sich eine gute Frage: Wenn du den Wert auf 1 setzt, startet die LED dann eingeschaltet? Nein, denn diese Zeile ändert nur die Variable; setup() schreibt nichts an die LED, also startet sie aus, und beim ersten Druck springt ledState auf 0 zurück, sodass sie aus bleibt. Der Wert einer Variable und der tatsächliche Zustand eines Pins sind zwei verschiedene Dinge. Schritt 2 begründet INPUT am Taster mit dem 10-kΩ-Widerstand in der Schaltung: Ist der Taster nicht gedrückt, zieht der Widerstand den Pin auf GND und es wird 0 gelesen. Ohne Widerstand hängt der Pin in der Luft und liefert Zufallswerte; das Symptom „LED geht von selbst an und aus“ in Wenn du nicht weiterkommst entspricht genau diesem Fall.

Die Schritte 3 und 5 gehören zusammen. Der Vergleich in Schritt 3 funktioniert nur, wenn lastButton nach jeder Änderung aktualisiert wird, und das passiert in der Zeile lastButton = button in Schritt 5. Wenn du beide Schritte abgleichst, wird die Kernidee des Programms sichtbar: Der Code prüft nicht, ob der Taster gedrückt ist, sondern ob sich sein Zustand geändert hat. Hältst du ihn gedrückt, wird bei jedem Durchlauf 1 gelesen, aber lastButton ist ebenfalls 1, der Vergleich ist falsch und die LED ändert sich nicht. Der Operator ! in Schritt 4 ist ein Ein-Aus-Schalter in zwei Zeilen. Schritt 5 endet mit einer Warnung: Ist die Wartezeit zu kurz, kann die LED bei einem Druck manchmal mehrmals wechseln. Daraus ergibt sich dein erstes Experiment vor der Aufgabe: Setz 50 auf 5, drück ein paar Mal und beobachte, ob die LED gelegentlich doppelt wechselt; das Ergebnis hängt von der Qualität des Tasters ab. Mehr zum Entprellen findest du im Beitrag Taster am Arduino anschließen.

Die deutschen Blöcke des Projekts LED mit Taster ein- und ausschalten: globale Variablen, im Setup Pin 13 als Eingang und Pin 7 als Ausgang, in immer wiederholen zwei verschachtelte falls-Blöcke
Dasselbe Programm als Blöcke. In der Ansicht Blöcke verstehen wird dieses Gesamtbild in Schritte aufgeteilt, und jeder Schritt zeigt nur seine eigenen Blöcke.

Der Abschnitt Wenn du nicht weiterkommst nennt in diesem Projekt fünf Symptome: Die LED leuchtet nie; die LED wechselt von selbst, ohne dass du den Taster berührst; beim Drücken passiert nichts; der Taster verhält sich, als wäre er dauernd gedrückt; der Code lässt sich nicht hochladen. Zu jedem Symptom gibt es eine konkrete Prüfung. Beim Symptom „dauernd gedrückt“ wird zum Beispiel erklärt, dass D13 ständig mit 5V verbunden bleibt, wenn die Tasterbeine falsch herum stecken, und dass du den Taster um 90 Grad drehen musst. Die Aufgabe Probier es selbst lautet: Die LED soll nicht beim Drücken, sondern beim Loslassen des Tasters wechseln. Der Tipp erinnert daran, dass die Variable button beim Drücken 1 und beim Loslassen 0 wird. Die Lösung ist eine Änderung um ein Zeichen: Aus der Zeile if (button == 1) wird if (button == 0). Diese kleine Aufgabe prüft, ob du die Flankenerkennung aus Schritt 3 wirklich verstanden hast.

Lesemethode: Zusammenfassung, Abgleich, Test

  1. Zusammenfassung lesen, in einem Satz notieren: Lies Was macht dieser Code? und schreib das Programm dann in einem Satz ins Heft, ohne aufs Handy zu schauen. Für das Tasterprojekt: „Jeder Druck schaltet die LED einmal ein oder aus.“
  2. Code von oben nach unten mit den Schritten abgleichen: Öffne den Code in der Arduino IDE (Link kopieren im Quellcode macht das einfach), finde den Ausschnitt jedes Schritts im vollständigen Code und schreib die Schrittnummer als Kommentar neben die Zeile. Die Schritte folgen der Reihenfolge des Codes: globale Variablen, setup(), loop().
  3. Nicht zugeordnete Zeilen markieren: Bleibt eine Zeile übrig, die in keinem Schritt vorkommt (meist sind es nur schließende Klammern), überleg, warum sie nicht erklärt wird; ist es keine Klammer, such sie noch einmal in den Erklärungen.
  4. An der Schaltung testen: Lade den Code hoch und teste das Verhalten aus der Zusammenfassung Punkt für Punkt. Beim Tasterprojekt reichen drei Tests: einmal drücken, gedrückt halten, schnell hintereinander drücken. Sag vor jedem Test laut, was passieren wird.

Der Abgleich ist der Schritt, der am häufigsten übersprungen wird und am meisten bringt. Wenn du Schrittnummern neben die Zeilen schreibst, wird das Gerüst des Codes sichtbar: welche Zeile einmal und welche ständig läuft, wo eine Variable gelesen und wo sie geschrieben wird. Im Tasterprojekt kommt lastButton an zwei Stellen vor: In Schritt 1 wird sie deklariert, in Schritt 5 aktualisiert. Das mit eigenen Augen zu sehen, bleibt viel besser hängen als der Satz „eine Variable ist eine Kiste“. Wenn du Variablen, Schleifen und Funktionen gesondert üben willst, lies Arduino-Programmierung: die Grundlagen.

Eine 15-Minuten-Routine mit Code verstehen

MinutenWas du tustWo
0–2Zusammenfassung Was macht dieser Code? lesen, das Programm in einem Satz notierenHandy, Code verstehen
2–6Jeden Ausschnitt aus Schritt für Schritt im vollständigen Code finden und die Schrittnummern als Kommentare an die Zeilen schreibenHandy + Arduino IDE
6–8Code hochladen, das Verhalten aus der Zusammenfassung Punkt für Punkt testenComputer + Schaltung
8–9Aufgabe Probier es selbst lesen, Ergebnis vorhersagen und notierenHandy + Heft
9–12Die eine Änderung machen, hochladen, Ergebnis beobachtenArduino IDE + Schaltung
12–13Stimmte die Vorhersage nicht, den Tipp lesen und noch einmal versuchenHandy
13–15Mit Lösung anzeigen vergleichen, dann eine zweite, selbst gewählte Änderung ausprobierenHandy + Arduino IDE

Diese Routine ist für ein Projekt gedacht, dessen Schaltung schon steht. Baust du die Schaltung zum ersten Mal auf, plane dafür zusätzlich 10–15 Minuten ein oder verschiebe die Routine auf den nächsten Tag. Die letzten zwei Minuten sind der wertvollste Teil: Eine eigene kleine Änderung nach der Lösung prüft die verstandene Idee, nicht die auswendig gelernte Antwort. Im Tasterprojekt könntest du zum Beispiel die LED an einen anderen Pin legen oder die 50 ms auf 300 ms erhöhen und schauen, was mit schnellen Tastendrücken passiert. Ein Projekt pro Tag in diesem Tempo heißt: fünf kostenlose Projekte in einer Woche, die du wirklich verstanden hast. Für einen längeren Plan lies den 30-Tage-Fahrplan für Arduino.

Strategie für Probier-es-selbst-Aufgaben

Die Aufgaben in Probier es selbst sind kurz, aber bewusst gewählt: Jede verlangt eine einzige Änderung, und das Ergebnis kannst du sehen oder hören. Wenn du beim Lösen diese Reihenfolge einhältst, lernst du doppelt so viel:

  1. Vorhersagen: Lies die Aufgabe und sag zuerst selbst, welche Zeile du anfasst und was du nach der Änderung sehen wirst. Die Vorhersage aufzuschreiben verhindert später die Täuschung „das hab ich doch gleich gedacht“.
  2. Ändern: Ändere nur eine Sache. Änderst du zwei Zeilen gleichzeitig, kannst du nicht unterscheiden, welche Änderung was bewirkt hat.
  3. Hochladen: Lade den Code aufs Board und warte auf die Meldung, dass das Hochladen fertig ist. Bei einem Kompilierfehler prüf Semikolons und Klammern in der geänderten Zeile.
  4. Beobachten: Vergleich das Ergebnis mit deiner Vorhersage. Bei Zeitaufgaben zählst du die Sekunden, bei Tonaufgaben hörst du alten und neuen Ton direkt nacheinander.
  5. Tipp ansehen: Lag deine Vorhersage daneben oder findest du die Zeile nicht, lies den Tipp. Weil der Tipp offen direkt unter der Aufgabe steht, hilft es, ihn beim ersten Lesen mit der Hand abzudecken.
  6. Lösung zuletzt öffnen: Tipp erst auf Lösung anzeigen, wenn du selbst einen Versuch gemacht hast. Stimmt die Lösung mit deiner überein, überleg, warum sie richtig ist; weicht sie ab, überleg, warum beide Wege zu unterschiedlichen Ergebnissen führen.

Ein weiterer Vorteil dieser Reihenfolge: Fehler werden lehrreich. Angenommen, du willst in der Aufgabe zum Projekt Ampel das Gelb nach Grün auf 1,5 Sekunden verlängern, änderst aber aus Versehen die erste Zeile delay(300). Statt des erwarteten Ergebnisses wird das Gelb nach Rot länger. Dieser Fehler zeigt dir viel besser als die Lösung, dass der Code zwei getrennte Gelbphasen hat und loop() Zeile für Zeile abläuft. Die Lösung der Aufgabe sagt genau das: Die Zeile delay(300) ganz am Ende von loop() wird zu delay(1500), das Gelb nach Rot bleibt bei 0,3 Sekunden.

Arten von Änderungen: was lehrt welches Konzept?

Schaust du dir die Aufgaben der kostenlosen Projekte an, siehst du, dass jede zu einer von wenigen Arten gehört. Wer die Art erkennt, kann sich in einem neuen Projekt leichter eine eigene Aufgabe stellen. Die Beispiele in der Tabelle stammen aus echten Probier-es-selbst-Aufgaben kostenloser Projekte; die Zeile zum Pinwechsel ist ein Experiment, das du im selben Projekt selbst machen kannst.

Art der ÄnderungBeispielVermitteltes KonzeptAchtung
Zahl ändernLED Blinken: beide delay-Zeilen auf delay(1000) setzen; Verwendung des Summers: Frequenz von 400 Hz auf 1000 Hz erhöhenEinheiten (ms, Hz) und wie ein Wert das Verhalten bestimmtZeiten in Millisekunden: 1500 = 1,5 s. Die Frequenzaufgabe braucht einen passiven Summer
Pin ändernIm Tasterprojekt die LED von D7 auf D8 umstecken: Kabel sowie die Zeilen pinMode(7, OUTPUT) und digitalWrite(7, ledState) ändernVerbindung zwischen Code und Schaltung; eine Pinnummer an mehreren Stellen im CodeKabel bei abgezogenem USB umstecken; die Nummer überall im Code ändern
Bedingung ändernTasterprojekt: button == 0 statt button == 1; Nachtlicht mit LDR: Schwellwert von 50 auf 300Vergleich, Schwellwert, FlankenerkennungBei geändertem Schwellwert ändert sich das Verhalten nicht allmählich, sondern an einem bestimmten Punkt schlagartig
Verhalten umkehrenLED mit Taster schalten (Push): Die LED leuchtet normalerweise und geht beim Drücken ausHIGH-LOW-Logik, Umkehren einer BedingungEntweder die Bedingung oder die geschriebenen Werte ändern, nicht beides
SchleifengrenzeLED-Polizeilicht: Die rote LED blitzt 5- statt 3-mal, for (int i = 0; i < 5; i++)for-Schleife, Zähler, Anzahl der WiederholungenNur die erste for-Zeile ändern; Blau blitzt weiter 3-mal
Untergrenze in einem AusdruckLED-Lauflicht mit einstellbarer Geschwindigkeit: delay(potValue + 50) statt delay(potValue)Einen Messwert in einer Rechnung verwenden, UntergrenzeDie Wartezeit liegt dann zwischen 50 und 1073 ms; das Licht bleibt auch bei höchster Geschwindigkeit verfolgbar
Wenn du einen Pin änderst, steck die Kabel bei abgezogenem USB um und ändere die Nummer überall, wo sie im Code vorkommt; wer pinMode ändert und digitalWrite vergisst, bekommt eine LED, die nie leuchtet. Beim Arduino Uno werden die Pins 0 und 1 für die serielle Kommunikation und das Hochladen über USB genutzt; wähle diese beiden Pins nicht für deine Experimente.

Blöcke verstehen: dieselbe Erklärung mit Blöcken

Projekte mit Blockansicht haben im Bereich Quellcode den Schalter Als Blöcke zeigen. Schaltest du ihn ein, erscheint dasselbe Programm statt als Code als Blöcke in der Sprache der App, und der Reiter daneben heißt nicht mehr Code verstehen, sondern Blöcke verstehen. Zusammenfassung, Wenn du nicht weiterkommst und Aufgabe bleiben gleich; anders ist der Abschnitt Schritt für Schritt: Jeder Schritt zeigt statt des Codeausschnitts seine eigenen Blöcke, und ein Tippen auf das Bild öffnet es im Vollbild. Über 100 Projekte haben eine Blockansicht, darunter mehr als 30 der kostenlosen. Die Blöcke dienen nur zum Lesen; in der App werden sie nicht bearbeitet und nicht aufs Board geladen, aufs Board kommt immer der echte Code.

Am besten nutzt du Blöcke verstehen, indem du zwischen beiden Ansichten hin und her wechselst. Im Tasterprojekt bestehen die Blöcke von Schritt 3 aus einem Block „setze button auf Pin 13 lesen“ und zwei verschachtelten „falls“-Blöcken; im Code sind das die Zeile int button = digitalRead(13); und zwei verschachtelte if. Der Block „setze ledState auf nicht ledState“ in Schritt 4 ist genau die Zeile ledState = !ledState;. Lies zuerst den Block und sag, was er tut, dann schalte den Schalter aus und schau dir den Codeausschnitt desselben Schritts an. Dieser Abgleich zwischen Block und Code ist der solideste Weg von der Blockprogrammierung zum textbasierten Code; von vorn beginnst du mit Was ist Blockprogrammierung? und dem Beitrag zum falls-Block.

Wenn du nicht weiterkommst oder Fehlerbehebung: der Unterschied

MerkmalWenn du nicht weiterkommstFehlerbehebung
Wo?Im Reiter Code verstehen, nach Schritt für SchrittEin eigener Bereich auf der Projektseite
FormPaare aus Symptom und Lösung; im Tasterprojekt 5Eine geordnete Checkliste, die mit „Wenn Ihr Projekt nicht funktioniert, überprüfen Sie die folgenden Schritte.“ beginnt; im Tasterprojekt 10 Schritte
Wann?Du kennst das Symptom: „Die LED wechselt von selbst“Du weißt nicht, was kaputt ist, und willst alles von vorn prüfen
SchwerpunktTypische Fehler, die zum Code und zur Schaltung dieses Projekts gehörenAllgemeine Prüfungen wie Stromversorgung, Hochladen, Pinnummern, Verbindungen und GND
ZugangIn kostenlosen Projekten für alle offen, in Premium-Projekten mit PremiumIn mehr als 170 Projekten vorhanden, mit Premium freigeschaltet

In der Praxis gehst du so vor: Funktioniert die Schaltung nicht, beschreib das Symptom in einem Satz und such es in Wenn du nicht weiterkommst. Steht dein Symptom dort, ist die Lösung meist ein einzelnes Kabel, ein Widerstand oder eine Zeile. Steht es nicht dort oder hilft die vorgeschlagene Lösung nicht, geh die Schritte der Fehlerbehebung der Reihe nach durch; dabei fällt dir oft eine übersprungene Grundprüfung auf (Stromversorgung des Boards, richtiger Port, gemeinsames GND). Hängst du beim Hochladen, hilft Arduino-Sketch lässt sich nicht hochladen, bei Kompilierfehlern der Beitrag zu Arduino-Kompilierfehlern.

Für Lehrkräfte: Code verstehen im Unterricht nutzen

  • Gemeinsames Lesen am Beamer: Spiegel zu Beginn der Stunde deinen Handybildschirm, lest gemeinsam die Zusammenfassung Was macht dieser Code? und lass die Klasse das Programm in einem Satz zusammenfassen. Zeig dann dieselben Schritte mit eingeschaltetem Als Blöcke zeigen; für Schülerinnen und Schüler, die mit Blöcken angefangen haben, ist das eine Brücke.
  • Eine Gruppe pro Schritt: Teil die Klasse bei einem Projekt mit 5 Schritten in 5 Gruppen; jede Gruppe liest einen Schritt, findet den Ausschnitt im vollständigen Code und erklärt ihn der Klasse in zwei Minuten. Während eine Gruppe erklärt, fragen die anderen: „Was wäre ohne diese Zeile?“
  • Vorhersagezettel: Schreib die Aufgabe Probier es selbst an die Tafel; jede Gruppe notiert ihre Vorhersage auf einem Zettel, bevor sie etwas ändert, und lädt dann hoch. Über den Unterschied zwischen Vorhersage und Ergebnis zu sprechen, bringt mehr als die Aufgabe selbst.
  • Abschlussfrage: In den letzten zwei Minuten beantworten alle eine Frage. Beispiele zum Tasterprojekt: Was würde ohne lastButton passieren, wenn man den Taster gedrückt hält? Was ändert sich, wenn du delay(50) löschst? Warum kann die LED von selbst wechseln, wenn du den 10-kΩ-Widerstand entfernst?

Für die Planung des Zugangs gilt: Da Code verstehen in kostenlosen Projekten für alle offen ist, können deine Schülerinnen und Schüler diese Methode mit LED Blinken, Ampel, LED-Polizeilicht und den beiden Tasterprojekten ohne Bezahlung anwenden. In Premium-Projekten wird Code verstehen mit Premium freigeschaltet; willst du mit der Klasse zu Premium-Projekten wechseln, kannst du statt einzelner Abos Codes aus den Paketen für Lehrkräfte verteilen, Details im Beitrag Arduino-App für die Klasse. Willst du eine selbst entworfene Schaltung teilen, kannst du im Forum ein Thema der Kategorie Anleitung eröffnen; es kommt ohne Schritte in Code verstehen und ohne Blockansicht, die Erklärung schreibst du also selbst in den Thementext und fügst den Code über Code hinzufügen ein (Unterricht mit deinem eigenen Projekt). Ein Panel, das dir zeigt, welche Aufgaben die einzelnen Lernenden gelöst haben, gibt es in der App nicht; du prüfst die Aufgabe im Unterricht, an der funktionierenden Schaltung oder per Foto.

Häufige Fehler und einfache Lösungen

  • Die Lösung sofort öffnen: Tippst du direkt nach dem Lesen auf Lösung anzeigen, kennst du die Antwort, aber nicht die Idee. Die Regel: erst Vorhersage, dann Versuch, dann Tipp, zuletzt die Lösung.
  • Kopieren, ohne die Schritte zu lesen: Den Code mit Kopieren holen und hochladen funktioniert, aber wenn du ohne Schritt für Schritt zum nächsten Projekt springst, fängst du jedes Mal bei null an. Lies nach dem Hochladen wenigstens Zusammenfassung und Schritte.
  • Einen Codeausschnitt für das ganze Programm halten: Ausschnitte enthalten nur die Zeilen eines Schritts; allein in die IDE eingefügt, kompilieren sie nicht. Ändere immer im vollständigen Code.
  • Mehrere Dinge gleichzeitig ändern: Änderst du zwei Zeilen auf einmal und das Ergebnis überrascht dich, weißt du nicht, welche schuld ist. Eine Änderung pro Hochladen.
  • Die Pinnummer nur an einer Stelle ändern: pinMode ändern und digitalWrite oder das Kabel vergessen gehört zu den häufigsten Fehlern. Markier vorher jede Stelle im Code, an der die Nummer vorkommt.
  • Wenn du nicht weiterkommst überspringen und sofort im Forum fragen: Die Antwort steht oft schon in der Liste dieses Projekts. Schau zuerst dort, dann in der Fehlerbehebung nach; ist es dann noch ungelöst, frag im Forum mit einem Foto der Schaltung und deinem Code.
  • Die Aufgabe lösen und dort aufhören: Machst du nach dem Vergleich mit der Lösung keine eigene kleine Änderung, bleibt das Gelernte an diese eine Aufgabe gebunden. Wähl selbst eine Zahl, einen Pin oder eine Bedingung.

Wenn du Code verstehen bei ein paar Projekten in dieser Reihenfolge genutzt hast, ist fertiger Code keine verschlossene Kiste mehr: Du kannst vorher sagen, welche Zeile was bestimmt und was passiert, wenn du sie änderst. LED mit Taster ein- und ausschalten ist dafür ein guter Einstieg, weil ein kurzer Code globale Variable, Flankenerkennung, Toggle und Entprellen auf einmal zeigt. Wenn du es ausprobieren möchtest, öffne das Projekt in der BlueGrays-App und beginne mit der Aufgabe im Reiter Code verstehen; dieselben Abschnitte findest du in allen 60 kostenlosen Projekten.

Häufige Fragen

Was ist Code verstehen in BlueGrays?

Code verstehen ist der Reiter im Bereich Quellcode einer BlueGrays-Projektseite, der den Code des Projekts Schritt für Schritt erklärt. Er besteht aus einer Zusammenfassung, nummerierten Schritten (jeweils mit Codeausschnitt und Erklärung), dem Abschnitt Wenn du nicht weiterkommst und einer Aufgabe Probier es selbst mit Tipp und Lösung. Jedes Projekt hat ihn.

Ist Code verstehen kostenlos?

In den 60 kostenlosen Projekten (20 pro Plattform) ist Code verstehen für alle offen; mit einem kostenlosen Konto siehst du Zusammenfassung, Schritte, Wenn du nicht weiterkommst und die Aufgabe samt Lösung. In Premium-Projekten wird der Reiter mit Premium freigeschaltet.

Wie verstehe ich fertigen Arduino-Code Schritt für Schritt?

Fass zuerst in einem Satz zusammen, was der Code tut, dann teil ihn von oben nach unten auf und notiere, was jeder Teil macht: globale Variablen, setup() und loop(). Achte auf Zahlen und Pinnummern, ändere dann einen einzigen Wert und beobachte das Ergebnis auf dem Board. Code verstehen liefert diese Reihenfolge für jedes Projekt fertig mit.

Wie sehe ich die Lösung einer Probier-es-selbst-Aufgabe?

Tipp unter der Aufgabe auf Lösung anzeigen; ein LÖSUNG-Kasten öffnet sich und zeigt, welche Zeile wozu wird. Mit Lösung ausblenden schließt du ihn wieder. Wenn du zuerst selbst probierst und die Lösung zuletzt öffnest, lernst du mehr.

Was ist Blöcke verstehen?

In Projekten mit Blockansicht heißt der Reiter Code verstehen nach dem Einschalten von Als Blöcke zeigen Blöcke verstehen. Im Abschnitt Schritt für Schritt zeigt dann jeder Schritt statt des Codeausschnitts seine eigenen Blöcke. Über 100 Projekte haben eine Blockansicht.

Ist Wenn du nicht weiterkommst dasselbe wie Fehlerbehebung?

Nein. Wenn du nicht weiterkommst ist eine Liste aus Symptomen und Lösungen innerhalb von Code verstehen, die zum jeweiligen Projekt gehört; die Fehlerbehebung ist eine eigene, geordnete Checkliste auf der Projektseite. Die Fehlerbehebung gibt es in mehr als 170 Projekten, sie wird mit Premium freigeschaltet.

Alle Projekte ansehen
LED mit Taster ein- und ausschalten
#10Anfänger

LED mit Taster ein- und ausschalten

Einmal drücken und das Licht geht an, noch einmal drücken und es geht aus, genau wie der Lichtschalter in deinem Zimmer. Der Arduino bemerkt jeden Druck und schaltet die LED in den jeweils anderen Zus

4.8(100)
167
LED mit Taster schalten (Push)
#9Anfänger

LED mit Taster schalten (Push)

Wie bei einer Türklingel: Das Licht leuchtet, solange du drückst, und geht aus, wenn du loslässt. Der Arduino horcht ständig auf den Taster; solange er gedrückt ist, leuchtet die LED, und sobald du de

4.8(113)
229
Ampel
#3Anfänger

Ampel

Eine winzige Nachbildung der Ampel, die du jeden Tag auf der Straße siehst. Rot leuchtet zwei Sekunden, Gelb blitzt kurz auf, Grün leuchtet zwei Sekunden, dann geht es über Gelb wieder zurück zu Rot,

4.8(131)
397
LED Blinken
#1Anfänger

LED Blinken

Das allererste Hallo der Elektronik: eine einzelne LED an- und ausschalten. Der Arduino schaltet die LED in kurzen Abständen ein und aus, das Licht blinkt also schnell. So siehst du ganz einfach, wie

4.6(188)
1127
LED-Polizeilicht
#4Anfänger

LED-Polizeilicht

Wie das Blaulicht am Polizeiauto: Die rote LED blitzt dreimal schnell hintereinander, dann blitzt die blaue dreimal, und das Ganze wiederholt sich ohne Pause. Du brauchst nur zwei LEDs und zwei Widers

4.7(103)
258
Nachtlicht mit LDR
#12Anfänger

Nachtlicht mit LDR

Ein kleines Nachtlicht, das von selbst angeht, wenn es dunkel wird, und am Morgen wieder ausgeht. Ein Lichtsensor misst, wie hell es im Zimmer ist; ist es dunkel genug, schaltet der Arduino die LED ei

4.8(102)
205
Verwendung des Summers
#13Anfänger

Verwendung des Summers

Hast du dich mal gefragt, wie eine Türklingel oder ein Alarm seinen Ton erzeugt? Der Arduino lässt einen kleinen Summer in kurzen Abständen piepen: piep, Pause, piep, Pause. Du siehst, wie Strom zu Kl

4.7(89)
161
LED-Lauflicht mit einstellbarer Geschwindigkeit
#7Mittel

LED-Lauflicht mit einstellbarer Geschwindigkeit

Sechs LEDs leuchten nacheinander auf, sodass das Licht von einem Ende zum anderen zu laufen scheint. Drehst du am Knopf des Potentiometers, ändert sich das Tempo sofort: in die eine Richtung rast das

4.6(72)
146