Arduino Befehle Übersicht: 36 Karten mit C++ und MicroPython
Arduino Befehle Übersicht in Lernreihenfolge: 18 Karten von pinMode bis tone, MicroPython-Entsprechungen, Code nebeneinander, 4-Wochen-Plan und 8 Fehler.
Am zuverlässigsten lernst du Arduino Befehle, wenn du sie nicht aus einer langen Liste auswendig lernst, sondern der Reihe nach durchgehst, jeden mit einem kleinen Beispiel und einem echten Projekt. Genau dafür gibt es in der BlueGrays App im Bereich Lektionen des Tabs Lernen den Code-Guide: 18 Karten im Lernpfad Arduino C++, von pinMode bis tone, und 18 Karten im Lernpfad MicroPython, von import bis I2C, zusammen 36 Karten. Jede Karte ist gleich aufgebaut: Wofür ist das gut?, Warum?, Syntax, Beispiel (mit den Reitern Blöcke, Arduino und MicroPython), Häufiger Fehler, Tipp, In Projekten ansehen und ein Minitest mit zwei Fragen. Auch die Reihenfolge steht fest: zuerst die Pins (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), dann die Zeit (delay, millis), danach Variablen, Bedingungen, Schleifen und Funktionen, zum Schluss Serial, map, random und tone. Wenn du einen Raspberry Pi Pico nutzt, lernst du dieselben Ideen im MicroPython-Lernpfad mit Pin, Pin.value, time.sleep, ADC.read_u16 und PWM.
Dieser Beitrag ist eine Landkarte des Guides. Zuerst siehst du, was in einer Karte steckt, dann die 18 Karten beider Lernpfade in ihrer echten Reihenfolge in der App, jeweils mit der Entsprechung in der anderen Sprache. Danach folgen drei kurze Beispiele, die die C++- und die MicroPython-Fassung desselben Programms nebeneinanderstellen, wie Minitest und Fortschritt funktionieren, eine Lernreihenfolge für 4 Wochen, eine tägliche Routine von 20 Minuten und die 8 häufigsten Fehler mit diesen Befehlen. Suchst du eine ausführliche Erklärung zu jedem einzelnen Befehl, gibt dir der Beitrag Arduino-Befehle mit Syntax und Beispielen für jeden Befehl einen eigenen Abschnitt; hier geht es darum, in welcher Reihenfolge du sie lernst und wie du übst.

Wo ist der Code-Guide und wie funktioniert er?
Du öffnest den Guide über den Tab Lernen unten: Tippe oben im Bereich Lektionen auf die Kachel Code-Guide. Im Guide siehst du oben zwei Reiter: Arduino C++ und MicroPython; die App merkt sich, welchen Lernpfad du zuletzt geöffnet hast. Darunter stehen der Zähler Was du gelernt hast und die Zeile Nächste Karte, damit du nie suchen musst, wo du aufgehört hast. Die Karten sind nach Themen gruppiert: Pins, Zeit, Variablen, Bedingungen, Schleifen, Funktionen, Serielle Schnittstelle, Mathematik und Ton; im MicroPython-Lernpfad kommen Grundstruktur und Fehlerbehandlung dazu. Der Code-Guide ist kostenlos: Für die Karten, die Beispiele und die Minitests brauchst du kein Premium. Die Karten gibt es in 10 Sprachen, du liest die Erklärungen also in der Sprache, in der du die App nutzt.
Was steckt in einer Karte?
Jede Karte hat dasselbe Gerüst, nach der dritten Karte weißt du also genau, wo du hinschauen musst. Die Tabelle zeigt die Abschnitte am Beispiel der 7. Karte des Arduino-Lernpfads, millis; die rechte Spalte fasst kurz zusammen, was auf der Karte steht. Die Reihenfolge der Abschnitte ist selbst schon eine Lernreihenfolge: Zuerst hörst du in einem Satz, was der Befehl tut, dann verstehst du über einen Vergleich aus dem Alltag, wozu du ihn brauchst, siehst, wie er geschrieben wird, liest ein funktionierendes Beispiel, lernst die häufigste Falle kennen und prüfst dich mit zwei Fragen.
| Abschnitt | Was er erklärt | Auf der Karte millis |
|---|---|---|
| Wofür ist das gut? | Die Aufgabe des Befehls in einem Satz | Sagt dir, wie viele Millisekunden seit dem Start des Boards vergangen sind. |
| Warum? | Wozu du ihn brauchst, mit einem Vergleich aus dem Alltag | Wie ein Kuchen im Ofen, bei dem du ab und zu auf die Uhr schaust: Während du wartest, erledigst du anderes. |
| Syntax | Wie der Befehl geschrieben wird | unsigned long now = millis(); |
| Beispiel | Ein kurzes, lauffähiges Programm; Reiter Blöcke, Arduino und MicroPython | Code, der eine LED alle 500 ms umschaltet; auf dem Pico dasselbe mit time.ticks_ms |
| Häufiger Fehler | Die Falle, in die Einsteiger am häufigsten tappen | millis in einem int speichern: Nach etwa 33 Sekunden stimmt die Zahl nicht mehr. |
| Tipp | Eine kleine Regel, die dir die Arbeit erleichtert | Schreib die Prüfung immer als jetzt - vorher >= Intervall. |
| In Projekten ansehen | Projekte, die den Befehl nutzen, von leicht bis schwer | Über 50 Projekte; die Liste beginnt mit einem kostenlosen ESP32-Tasterprojekt |
| Minitest | Zwei Fragen, nach jeder Antwort eine kurze Erklärung | Was gibt millis() zurück? In welchem Typ solltest du millis speichern? |
Der Abschnitt Beispiel öffnet im Lernpfad der Karte: Auf einer Arduino-Karte steht der Reiter Arduino vorn, auf einer MicroPython-Karte der Reiter MicroPython. Der andere Reiter ist aber immer auch da, und dadurch wird der Guide zum Wörterbuch. Auf der Karte Pin-Ausgang: Pin(15, Pin.OUT) im MicroPython-Lernpfad steht im Reiter Arduino zum Beispiel Code, der dieselbe Aufgabe mit pinMode und digitalWrite erledigt, und die Kommentare sagen, welche Zeile wofür steht (etwa die Zeile, die led.toggle() entspricht). Fast jede Karte hat außerdem einen dritten Reiter, Blöcke, der das Beispielprogramm als Blöcke zeigt. Wenn du von Arduino zum Pico wechselst, ist das der schnellste Weg: Öffne eine Karte, die du kennst, wechsle den Reiter und ordne beide Programme Zeile für Zeile einander zu.
Lernpfad Arduino C++: 18 Karten und ihre MicroPython-Entsprechungen
Die Tabelle zeigt die echte Reihenfolge des Arduino-Lernpfads in der App; die letzte Spalte zeigt, wie dieselbe Aufgabe mit MicroPython auf einem Raspberry Pi Pico gelöst wird. Die Pinnummern entsprechen den Beispielen auf den Karten: für eine LED 13 oder 9 am Uno und GP15 am Pico, für einen Taster 2 am Uno und GP14 am Pico, für analoges Lesen A0 am Uno und GP26 am Pico. Die ersten fünf Karten behandeln Pins, 6 und 7 die Zeit, 8 bis 14 die Grundlagen der Programmierung, die letzten vier die serielle Schnittstelle, das Umrechnen von Bereichen, Zufallszahlen und Ton. Die Reihenfolge ist Absicht: Zuerst lernst du, wie das Board die Außenwelt berührt, dann steuerst du diese Berührungen mit Variablen, Bedingungen und Schleifen.
| Nr. | Karte | Wofür ist das gut? | Entsprechung in MicroPython |
|---|---|---|---|
| 1 | pinMode | Legt fest, ob ein Pin Ausgang (LED, Summer) oder Eingang (Taster, Sensor) ist | Pin(15, Pin.OUT) · Pin(14, Pin.IN, Pin.PULL_UP) |
| 2 | digitalWrite | Schaltet einen Ausgangspin ein (HIGH, 5 V) oder aus (LOW, 0 V) | led.value(1) · led.on() · led.off() |
| 3 | digitalRead | Liest, ob ein Eingangspin HIGH oder LOW ist | button.value() → 1 oder 0 |
| 4 | analogRead | Wandelt die Spannung an A0–A5 in eine Zahl von 0 bis 1023 um | ADC(26).read_u16() → 0–65535 |
| 5 | analogWrite (PWM) | Dimmt eine LED oder bremst einen Motor mit einem Wert von 0 bis 255 an einem ~-Pin | PWM(Pin(15)) · freq(1000) · duty_u16(0–65535) |
| 6 | delay | Hält den Code für die angegebenen Millisekunden an | time.sleep(0.5) · time.sleep_ms(500) |
| 7 | millis | Millisekunden seit dem Start; Zeitsteuerung, ohne den Code anzuhalten | time.ticks_ms() · time.ticks_diff() |
| 8 | Variablen und Datentypen | Speichert Werte mit Typen wie int, float, bool, unsigned long | Kein Typ nötig: count = 0, volts = 3.3 |
| 9 | if / else if / else | Führt je nach Bedingung anderen Code aus | if / elif / else |
| 10 | Vergleichs- und Logikoperatoren | Bildet Bedingungen mit ==, !=, <, >, &&, ||, ! | ==, !=, <, > · and, or, not |
| 11 | for-Schleife | Wiederholt eine Aufgabe eine feste Anzahl von Malen | for i in range(10): |
| 12 | while-Schleife | Wiederholt, solange eine Bedingung wahr ist | while Bedingung: |
| 13 | Funktionen (void, Parameter, return) | Teilt Code in benannte, wiederverwendbare Stücke | def blink(times): … return |
| 14 | Arrays | Hält Werte gleichen Typs geordnet unter einem Namen | Liste: pins = [2, 3, 4] · len(pins) |
| 15 | Serial.begin / print / println | Schickt Text und Werte an den Computer (serieller Monitor) | print(x) · f-String; kein Serial.begin nötig |
| 16 | map | Rechnet einen Zahlenbereich in einen anderen um | Kein fertiger Befehl: raw * 255 // 1023 oder eine eigene Funktion |
| 17 | random / randomSeed | Erzeugt Zufallszahlen | import random · random.randint(1, 6) |
| 18 | tone / noTone | Spielt einen Ton bestimmter Frequenz am Summer und stoppt ihn | PWM: freq(440) · duty_u16(32768); duty_u16(0) zum Stummschalten |
Lernpfad MicroPython: 18 Karten und ihre Arduino-Entsprechungen
Der MicroPython-Lernpfad ist auf den Raspberry Pi Pico zugeschnitten; die Beispiele auf den Karten sind kurze Programme, die du auf einem Pico ausführen kannst, zum Beispiel mit Thonny. Die Reihenfolge weicht etwas vom Arduino-Lernpfad ab, denn in Python musst du dich zuerst an die Regeln der Sprache gewöhnen: Module mit import einbinden, mit print ausgeben, Einrückung und Doppelpunkt. Im Reiter Arduino jeder MicroPython-Karte steht auch die C++-Fassung desselben Programms; wenn du Arduino schon kannst, liest du die Tabelle also von rechts nach links. Nutzt du einen Pico zum ersten Mal, ist der Beitrag Was ist ein Raspberry Pi Pico eine gute Vorbereitung für Einrichtung und Pins.
| Nr. | Karte | Wofür ist das gut? | Entsprechung in Arduino |
|---|---|---|---|
| 1 | import und from … import | Bindet Module wie machine und time ins Programm ein | #include für Bibliotheken; Grundbefehle wie pinMode und delay sind eingebaut |
| 2 | print und f-Strings | Gibt Text und Werte in der Thonny-Shell aus | Serial.begin(9600) + Serial.println() |
| 3 | Pin-Ausgang: Pin(15, Pin.OUT) | Macht einen GP-Pin zum Ausgang; value(), on(), off(), toggle() | pinMode(13, OUTPUT) + digitalWrite() |
| 4 | Pin-Eingang: Pin.IN, PULL_UP, PULL_DOWN | Macht einen Pin zum Eingang, wählt den internen Widerstand, liest mit value() | pinMode(2, INPUT_PULLUP) + digitalRead() |
| 5 | time.sleep und sleep_ms | Hält das Programm Sekunden oder Millisekunden lang an | delay() |
| 6 | while True: die Endlosschleife | Wiederholt die Zeilen darunter, solange der Pico läuft | loop() |
| 7 | Einrückung und Doppelpunkt (:) | Legt fest, welche Zeile zu welchem Block gehört | Geschweifte Klammern { } und Semikolon ; |
| 8 | Variablen: int, float, str, bool | Speichert Werte; der Typ ergibt sich von selbst | int, float, String, bool |
| 9 | if / elif / else, and / or / not | Verzweigt nach Bedingungen und verknüpft sie | if / else if / else · &&, ||, ! |
| 10 | for und range | Feste Anzahl Wiederholungen; range(0, 10) zählt von 0 bis 9 | for (int i = 0; i < 10; i++) |
| 11 | Listen: [ ], Index, len | Hält mehrere Werte der Reihe nach; das erste Element hat Index 0 | Arrays: int pins[] = {2, 3, 4}; |
| 12 | def und return (Funktionen) | Benennt wiederverwendbaren Code und gibt ein Ergebnis zurück | void- oder typisierte Funktionen, return |
| 13 | ADC: analog lesen mit read_u16 | Liest die Spannung an GP26, GP27, GP28 als 0–65535 | analogRead() → 0–1023 |
| 14 | PWM: freq und duty_u16 | Dimmt eine LED, spielt Töne am Summer | analogWrite() und tone() |
| 15 | time.ticks_ms und ticks_diff | Misst vergangene Zeit, ohne den Code anzuhalten | millis() |
| 16 | Pin.irq: Taster mit Interrupts | Führt eine Funktion in dem Moment aus, in dem ein Taster gedrückt wird | attachInterrupt() |
| 17 | try / except (Fehler abfangen) | Verhindert, dass das Programm bei einem Fehler stehen bleibt | Keine übliche Entsprechung in Arduino; man prüft Rückgabewerte |
| 18 | I2C und scan() | Findet die Adressen der Geräte am I2C-Bus | Wire.begin() + I2C-Scanner-Code |
Dasselbe Programm in zwei Sprachen: 3 Beispiele nebeneinander
Das erste Beispiel ist das „Hallo Welt“ jeder Sprache: die LED auf dem Board jede halbe Sekunde blinken lassen. Am Uno hängt die eingebaute LED an Pin 13, du musst also keine Schaltung bauen. Beim Pico ist es etwas anders: Beim normalen Pico hängt die Onboard-LED an GP25, beim Pico W ist sie aber mit dem Funkchip verbunden, und Pin(25) bringt sie nicht zum Leuchten. Deshalb ist Pin("LED", Pin.OUT) in MicroPython die sicherere Wahl; in aktuellen MicroPython-Versionen findet dieser Name die Onboard-LED auf Pico und Pico W. Erkennt die Firmware auf deinem Board den Namen "LED" nicht, spiel ein aktuelles MicroPython auf den Pico. Das kostenlose Projekt Raspberry Pi Pico Onboard-LED Blinken (Pico und Pico W) erklärt genau diesen Unterschied.
1// Örnek 1: dahili LED'i yakıp söndür / Example 1: blink the built-in LED
2void setup() {
3 pinMode(13, OUTPUT); // Uno'da dahili LED 13. pinde / built-in LED is on pin 13 on the Uno
4}
5
6void loop() {
7 digitalWrite(13, HIGH); // LED yanar / LED on
8 delay(500); // 500 ms bekle / wait 500 ms
9 digitalWrite(13, LOW); // LED söner / LED off
10 delay(500); // 500 ms bekle / wait 500 ms
11}1# Örnek 1: dahili LED'i yakıp söndür / Example 1: blink the onboard LED
2from machine import Pin
3import time
4
5led = Pin("LED", Pin.OUT) # Pico ve Pico W'de dahili LED / onboard LED on Pico and Pico W
6# Pin(25, Pin.OUT) yalnız düz Pico'da çalışır / Pin(25, Pin.OUT) works only on the plain Pico
7
8while True: # Arduino'daki loop() gibi / like loop() in Arduino
9 led.on() # LED yanar / LED on
10 time.sleep_ms(500) # 500 ms bekle / wait 500 ms
11 led.off() # LED söner / LED off
12 time.sleep_ms(500) # 500 ms bekle / wait 500 msDas zweite Beispiel fügt einen Eingang hinzu: Solange der Taster gedrückt ist, leuchtet die LED. Der Taster kommt am Uno zwischen Pin 2 und GND, am Pico zwischen GP14 und GND. Am Uno nutzen wir wieder die eingebaute LED an Pin 13; am Pico schließt du eine externe LED über einen 220-Ω-Widerstand an GP15 an (das Werkzeug LED-Vorwiderstand berechnet den Wert für deine eigene LED). In beiden Sprachen wird der interne Pull-up-Widerstand eingeschaltet: INPUT_PULLUP bei Arduino, Pin.PULL_UP bei MicroPython. Bei dieser Verdrahtung ist die Logik umgekehrt: Ein Druck auf den Taster zieht den Pin auf GND, der Arduino liest LOW, der Pico 0. Die Pause von 20 ms am Ende löst das mechanische Prellen des Tasters nicht ganz, verringert aber sehr kurzes Flackern. Details zur Verdrahtung stehen im Beitrag Taster am Arduino anschließen.
1// Örnek 2: butona basılıyken LED yanar / Example 2: LED on while the button is pressed
2const int BUTTON_PIN = 2; // buton: 2. pin ile GND arasında / button between pin 2 and GND
3const int LED_PIN = 13; // dahili LED / built-in LED
4
5void setup() {
6 pinMode(BUTTON_PIN, INPUT_PULLUP); // iç pull-up direnci açık / internal pull-up on
7 pinMode(LED_PIN, OUTPUT);
8}
9
10void loop() {
11 if (digitalRead(BUTTON_PIN) == LOW) { // basılıyken LOW okunur / reads LOW while pressed
12 digitalWrite(LED_PIN, HIGH);
13 } else {
14 digitalWrite(LED_PIN, LOW);
15 }
16 delay(20); // kısa bekleme / short pause
17}1# Örnek 2: butona basılıyken LED yanar / Example 2: LED on while the button is pressed
2from machine import Pin
3import time
4
5button = Pin(14, Pin.IN, Pin.PULL_UP) # buton: GP14 ile GND arasında / button between GP14 and GND
6led = Pin(15, Pin.OUT) # LED: GP15 + 220 ohm direnç / LED on GP15 with 220 ohm
7
8while True:
9 if button.value() == 0: # basılıyken 0 okunur / reads 0 while pressed
10 led.value(1)
11 else:
12 led.value(0)
13 time.sleep_ms(20) # kısa bekleme / short pauseDas dritte Beispiel zeigt den wichtigsten Unterschied zwischen den beiden Sprachen: die Zahlenbereiche. Der mittlere Anschluss des Potentiometers geht am Uno an A0, am Pico an GP26; die äußeren Anschlüsse kommen am Uno an 5V und GND, am Pico an 3V3 (OUT) und GND. Die LED sitzt am Uno an Pin 9 (mit ~ markiert), am Pico an GP15, jeweils mit 220-Ω-Widerstand. Bei Arduino liefert analogRead 0–1023, analogWrite erwartet aber 0–255, deshalb steht map(raw, 0, 1023, 0, 255) dazwischen. Am Pico nutzen read_u16 und duty_u16 beide 0–65535, du kannst den Messwert also direkt an die PWM geben. Wie PWM funktioniert, steht im Beitrag Was ist PWM, wie du Werte live beobachtest, in der Anleitung zum seriellen Monitor.
1// Örnek 3: potansiyometreyle LED parlaklığı / Example 3: LED brightness with a potentiometer
2const int POT_PIN = A0; // potansiyometrenin orta ucu / potentiometer wiper
3const int LED_PIN = 9; // ~ işaretli PWM pini / PWM pin marked with ~
4
5void setup() {
6 pinMode(LED_PIN, OUTPUT);
7 Serial.begin(9600);
8}
9
10void loop() {
11 int raw = analogRead(POT_PIN); // 0-1023
12 int brightness = map(raw, 0, 1023, 0, 255); // 0-255 aralığına ölçekle / scale to 0-255
13 analogWrite(LED_PIN, brightness);
14 Serial.println(raw); // Seri Monitör'de izle / watch in the Serial Monitor
15 delay(50);
16}1# Örnek 3: potansiyometreyle LED parlaklığı / Example 3: LED brightness with a potentiometer
2from machine import Pin, ADC, PWM
3import time
4
5pot = ADC(26) # GP26 = ADC0, orta uç / wiper on GP26 (ADC0)
6led = PWM(Pin(15)) # LED: GP15 + 220 ohm direnç / LED on GP15 with 220 ohm
7led.freq(1000) # saniyede 1000 aç-kapa / 1000 cycles per second
8
9while True:
10 raw = pot.read_u16() # 0-65535
11 led.duty_u16(raw) # aynı aralık, ölçekleme gerekmez / same range, no scaling needed
12 print(raw) # Thonny kabuğunda izle / watch in the Thonny shell
13 time.sleep_ms(50)| Konzept | Arduino C++ | MicroPython (Pico) |
|---|---|---|
| Läuft einmal | void setup() { … } | Die Zeilen vor while True: |
| Läuft immer wieder | void loop() { … } | while True: und die eingerückten Zeilen darunter |
| Codeblock | Geschweifte Klammern { } und ; am Zeilenende | : am Zeilenende und 4 Leerzeichen Einrückung |
| Kommentar | // Kommentar | # Kommentar |
| Ausgangspin | pinMode(13, OUTPUT); digitalWrite(13, HIGH); | led = Pin(15, Pin.OUT) · led.value(1) |
| Eingangspin | pinMode(2, INPUT_PULLUP); digitalRead(2) | Pin(14, Pin.IN, Pin.PULL_UP) · button.value() |
| Analog lesen | analogRead(A0) → 0–1023 | ADC(26).read_u16() → 0–65535 |
| PWM-Ausgang | analogWrite(9, 0–255) | PWM(Pin(15)).duty_u16(0–65535) |
| Warten | delay(500) | time.sleep_ms(500) oder time.sleep(0.5) |
| Ausgabe | Serial.begin(9600); Serial.println(x); | print(x) |
Minitest, „Verstanden“ und dein Fortschritt unter Mein Level
- Minitest: Jede Karte endet mit zwei Fragen, in der Überschrift steht Minitest · 1 / 2. Tippst du auf eine Antwort, kommt sofort Richtig. oder Nicht ganz. mit einer kurzen Erklärung; mit Nächste Frage geht es weiter.
- Ergebnis: Nach beiden Fragen siehst du ein Ergebnis wie 2 / 2 richtig. Ohne Test lässt sich die Karte nicht abschließen; statt des Knopfs steht dort Löse den Minitest, um die Karte abzuschließen.
- Verstanden: Ist der Test erledigt, erscheint der Knopf Verstanden, nächste Karte (auf der letzten Karte eines Lernpfads nur Verstanden). Ein Tipp darauf speichert die Karte in deinem Konto als gelernt, eine kurze Feier zeigt deinen Stand, etwa Super! 5 / 18 Karten, und die nächste Karte öffnet sich.
- Abzeichen und Zähler: Gelernte Karten tragen in der Liste die Markierung Gelernt, und der Zähler Was du gelernt hast oben im Guide steigt. Hast du alle Karten eines Lernpfads geschafft, erscheint Du hast alle Karten in diesem Lernpfad gelernt.
- Mein Level: Auf dem Bildschirm Mein Level im Bereich Lernen stehen unter der Überschrift Code-Guide und dem Hinweis Gelernte Karten zwei getrennte Balken: Arduino C++ x/18 und MicroPython x/18. Diese Balken zählen nur die Karten im Code-Guide.
- Eine ehrliche Regel für dich: Die App hält dich nach einer falschen Antwort nicht auf; der Knopf Verstanden erscheint, sobald der Test erledigt ist. Prüfe deshalb vor dem Tippen, ob du laut erklären kannst, warum beide Antworten richtig sind; wenn nicht, geh zurück zum Abschnitt Beispiel und lies den Code noch einmal Zeile für Zeile.
In Projekten ansehen: den Befehl in echtem Code finden
Der letzte Schritt beim Lernen eines Befehls ist, ihn in einem funktionierenden Projekt wiederzuerkennen, das jemand anderes geschrieben hat. Im Abschnitt In Projekten ansehen zeigt die Karte einige ausgewählte Projekte und darunter einen Satz, in wie vielen Projekten der Befehl im Code vorkommt; der Link Alle öffnet die ganze Liste. Sie ist von leicht bis schwer sortiert und lässt sich mit den Filtern Alle, Kostenlos und Premium eingrenzen. millis kommt zum Beispiel im Code von über 50 Projekten vor: Die Liste beginnt mit dem kostenlosen Projekt ESP32 LED Steuerung mit Taster (Toggle), geht mit Pico-Einsteigerprojekten wie Raspberry Pi Pico Tasten-Klavier (5 Taster + Summer + Melodie-Rekorder) und Raspberry Pi Pico Einparkhilfe (HC-SR04 + 3 LEDs + Summer) weiter und steigt zu mittelschweren Projekten wie Raspberry Pi Pico-Ampel mit 4-Modus-Tastenwahlschalter (Zustandsmaschine, GP11-13 + GP4) auf, die Taster und Zeitsteuerung verbinden. Unser Vorschlag: Öffne ein kostenloses Projekt aus der Liste, such den Befehl im Code, ändere einen Wert und sag das Ergebnis vorher voraus. Um zu sehen, was jede Codezeile tut, ist der Reiter Code verstehen im Projekt der natürliche nächste Schritt.
Empfohlene Lernreihenfolge: ein Plan für 4 Wochen
Nehmen wir an, du hast an 5 Tagen pro Woche etwa 20 Minuten Zeit. Um einen Lernpfad in 4 Wochen abzuschließen, reicht an den meisten Tagen eine Karte; an den übrigen Tagen wiederholst du und arbeitest an einem Projekt statt an einer neuen Karte. Hast du einen Arduino, folgst du nur der Arduino-Spalte, hast du einen Pico, der MicroPython-Spalte. Hast du beides, schließ zuerst den Arduino-Lernpfad ab und wechsle im zweiten Monat zu MicroPython; die Konzepte sind dieselben, deshalb geht der zweite Lernpfad viel schneller. Alle Projekte in der Tabelle sind bei BlueGrays kostenlos. Für einen breiteren Plan passt der 30-Tage-Fahrplan aus dem Beitrag Arduino lernen mit einer App gut zu dieser Tabelle; unterrichtest du mit dem Pico, verteilt der Unterrichtsplan für den Raspberry Pi Pico die MicroPython-Karten auf 6 Wochen Unterricht.
| Woche | Karten Arduino C++ | Karten MicroPython | Kostenlose Projekte der Woche | Was du am Ende der Woche kannst |
|---|---|---|---|---|
| 1 | 1–5: pinMode, digitalWrite, digitalRead, analogRead, analogWrite | 1–5: import, print, Pin-Ausgang, Pin-Eingang, time.sleep | LED Blinken, LED mit Taster schalten (Push); Pico: Raspberry Pi Pico Onboard-LED Blinken (Pico und Pico W) | Eine LED blinken lassen, einen Taster lesen; bei Arduino einen Analogwert sehen |
| 2 | 6–10: delay, millis, Variablen, if / else, Operatoren | 6–9: while True, Einrückung, Variablen, if / elif / else | Nachtlicht mit LDR, ESP32 LED Steuerung mit Taster (Toggle); Pico: Raspberry Pi Pico Zwei LEDs abwechselnd blinken (Blink-Flip, GP14 + GP13) | Nach einem Messwert entscheiden, zeitsteuern, ohne das Programm anzuhalten |
| 3 | 11–14: for, while, Funktionen, Arrays | 10–13: for und range, Listen, def, ADC | Knight-Rider-Lauflicht, LED-Lauflicht; Pico: Raspberry Pi Pico Ampel-Simulator (3 LEDs sequenziell, GP11/GP12/GP13) | Wiederholungen in Schleifen, Pins in Arrays und Aufgaben in Funktionen packen |
| 4 | 15–18: Serial, map, random, tone | 14–18: PWM, ticks_ms, Pin.irq, try / except, I2C | Verwendung des Summers, Lichtstärke messen mit LDR; Pico: Raspberry Pi Pico-Ampel mit 4-Modus-Tastenwahlschalter (Zustandsmaschine, GP11-13 + GP4) | Werte ausgeben, Ton und Helligkeit regeln, ein kleines Projekt von Grund auf bauen |
Eine tägliche Routine von 20 Minuten
- 3 Minuten, Aufwärmen: Löse die Fragen des Tages im Bereich Lernen oder mach den Minitest von gestern noch einmal. Ziel ist zu prüfen, ob du den Befehl von gestern heute noch weißt.
- 5 Minuten, neue Karte: Lies die Abschnitte Wofür ist das gut?, Warum? und Syntax. Schreib die Syntax von Hand auf Papier; beim Abschreiben übersiehst du Klammern und Semikolons viel seltener.
- 3 Minuten, Beispiel: Erklär dir das Beispiel Zeile für Zeile und wechsle dann den Reiter. Auf einer Arduino-Karte schaust du in den Reiter MicroPython, auf einer MicroPython-Karte in den Reiter Arduino, und ordnest die Zeilen einander zu, die in beiden Programmen dasselbe tun.
- 2 Minuten, Minitest: Beantworte beide Fragen und lies die Erklärung zu jeder falschen Antwort. Wirf an dieser Stelle noch einmal einen Blick auf die Kästen Häufiger Fehler und Tipp.
- 6 Minuten, Projekt: Öffne aus der Liste In Projekten ansehen ein kostenloses, leichtes Projekt, such den Befehl im Code und ändere einen einzigen Wert: eine Wartezeit, eine Pinnummer oder einen Schwellenwert. Steht deine Schaltung, lad den Code aufs Board; sonst sag das Ergebnis voraus und prüf es mit Code verstehen.
- 1 Minute, Notiz: Schreib eine Zeile in dein Heft: den Namen des Befehls, seine Bedeutung in einem Satz und die Entsprechung in der anderen Sprache. Nach vier Wochen ist diese Seite dein eigenes Befehlswörterbuch.
8 häufige Fehler mit diesen Befehlen
| Fehler | Anzeichen | Lösung | Karte |
|---|---|---|---|
| pinMode vergessen | Die LED leuchtet gar nicht oder nur sehr schwach | pinMode(pin, OUTPUT) in setup() schreiben; am Pico den Pin mit Pin(15, Pin.OUT) anlegen | pinMode · Pin-Ausgang |
| In einer Bedingung = statt == schreiben | if (x = 5) ist immer wahr, das Programm läuft immer in denselben Zweig | Zum Vergleichen == nutzen; in Python führt if x = 5 sofort zu einem SyntaxError | if / else · Operatoren |
| Den Code mit einem langen delay blockieren | Du drückst den Taster, aber die Reaktion kommt spät oder gar nicht | Mit millis warten; am Pico time.ticks_ms und ticks_diff nutzen | delay · millis · ticks_ms |
| Den Bereich von analogRead verwechseln | Ein von Arduino übernommener Schwellenwert greift am Pico nie | Am Uno liefert analogRead 0–1023, am Pico read_u16 0–65535; den Schwellenwert für den neuen Bereich neu berechnen | analogRead · ADC |
| Einen analogWrite-Wert in duty_u16 übernehmen | Am Pico bleibt die LED mit duty_u16(255) fast dunkel | duty_u16 erwartet 0–65535: halbe Helligkeit ist 32768, volle 65535 | analogWrite · PWM |
| millis in einem int speichern | Am Uno stimmt die Zeitsteuerung nach etwa 33 Sekunden nicht mehr | Zeitvariablen als unsigned long anlegen und die Prüfung als jetzt - vorher >= Intervall schreiben | millis |
| Die INPUT_PULLUP-Logik umgekehrt erwarten | Du erwartest beim Drücken HIGH oder 1, bekommst aber LOW oder 0 | Mit Pull-up ist gedrückt LOW (0) und losgelassen HIGH (1) | digitalRead · Pin-Eingang |
| Am Pico sleep(500) schreiben | Der Pico wartet 500 Sekunden, also über 8 Minuten, statt einer halben Sekunde | sleep nimmt Sekunden: sleep(0.5) oder sleep_ms(500) schreiben | time.sleep |
Der Reiter Blöcke: einen Befehl durch Sehen verstehen

Der Reiter Blöcke zeigt dir, vor allem auf den ersten Karten eines Lernpfads, was ein Befehl tut, ohne dass du Code schreibst. Im Bild oben wird pinMode zum Block „Pin 9 als AUSGANG setzen“, digitalWrite zu „HOCH an Pin 9 schreiben“ und delay zu „100 ms warten“; auf der Karte pinMode nennt ein Hinweis unter der Blockansicht auch die Optionen im Aufklappmenü: AUSGANG, EINGANG und EINGANG (PULLUP). Die Blöcke erscheinen in der Sprache der App und sind zum Lesen da: In der App ziehst du keine Blöcke zu einem Programm zusammen, und aufs Board kommt immer der echte Code. So nutzt du sie am besten: Sag zuerst im Reiter Blöcke voraus, was das Programm tun wird, wechsle dann in den Reiter Arduino und such, welche Zeile zu welchem Block gehört. In Projekten mit Blockansicht macht der Schalter Als Blöcke zeigen auf der Projektseite dieselbe Zuordnung für ein ganzes Projekt möglich; die Grundlagen stehen im Beitrag Was ist Blockprogrammierung.
Kurz gesagt: Um Arduino Befehle zu lernen, brauchst du keine lange Liste. Es reichen die richtige Reihenfolge, ein kleines funktionierendes Beispiel pro Befehl, eine Kontrolle mit zwei Fragen und ein echtes Projekt, in dem der Befehl vorkommt. Fängst du heute mit der Karte pinMode an, hast du in vier Wochen alle 18 Karten geschafft und jeden Befehl in mindestens einem Projekt mit eigenen Augen gesehen; wenn du zum Pico wechselst, gehst du dieselben Konzepte im MicroPython-Lernpfad viel schneller durch. Wenn du die Karten und die Projekte darin ausprobieren möchtest, installiere BlueGrays auf deinem Handy und öffne im Bereich Lernen die erste Karte.
Häufige Fragen
Welche Arduino Befehle gibt es?
Die meistgenutzten Arduino Befehle sind die Pin-Befehle (pinMode, digitalWrite, digitalRead, analogRead, analogWrite), die Zeitbefehle (delay, millis), die Befehle der seriellen Schnittstelle unter Serial sowie Helfer wie map, random und tone. Dazu bauen C++-Strukturen wie if, for und while sowie Funktionen den Ablauf des Programms auf. Der Lernpfad Arduino C++ im BlueGrays Code-Guide behandelt diese Themen der Reihe nach auf 18 Karten.
Mit welchem Arduino-Befehl fange ich an?
Fang mit pinMode und digitalWrite an, denn diese beiden reichen, um eine LED leuchten zu lassen, und du siehst das Ergebnis sofort. Danach kommen Zeitsteuerung mit delay und das Lesen eines Tasters mit digitalRead dazu. analogRead, millis, if und for bauen alle auf diesen vier Befehlen auf.
Was ist der Unterschied zwischen Arduino- und MicroPython-Befehlen?
Die Konzepte sind gleich, die Schreibweise ist anders: Pin(15, Pin.OUT) und led.value(1) ersetzen pinMode und digitalWrite, time.sleep_ms ersetzt delay, und while True ersetzt loop(). Auch die Zahlenbereiche ändern sich; analogRead liefert am Uno 0–1023, read_u16 am Pico 0–65535. In Python treten Einrückung und Doppelpunkt an die Stelle der geschweiften Klammern und Semikolons aus C++.
Gibt es in MicroPython einen delay-Befehl?
Einen Befehl namens delay gibt es nicht; dieselbe Aufgabe übernehmen sleep (Sekunden), sleep_ms (Millisekunden) und sleep_us (Mikrosekunden) aus dem Modul time. Aus delay(500) bei Arduino wird am Pico time.sleep_ms(500) oder time.sleep(0.5). Für Zeitsteuerung, ohne den Code anzuhalten, ersetzen time.ticks_ms und time.ticks_diff den Befehl millis.
An welchem Pin hängt die Onboard-LED des Raspberry Pi Pico?
Beim normalen Pico hängt die Onboard-LED an GP25. Beim Pico W ist die LED mit dem Funkchip verbunden, deshalb leuchtet sie mit Pin(25) nicht. In aktuellen MicroPython-Versionen findet Pin("LED", Pin.OUT) die Onboard-LED auf beiden Boards.
Ist der BlueGrays Code-Guide kostenlos?
Ja, der Code-Guide ist kostenlos: Du kannst alle 36 Karten lesen, die Beispiele ansehen und die Minitests lösen. Die Listen unter In Projekten ansehen enthalten kostenlose und Premium-Projekte; der Filter Kostenlos zeigt nur die kostenlosen.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
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

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

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

ESP32 LED Steuerung mit Taster (Toggle)
Jedes Mal, wenn die Taste gedrückt wird, ändert sich der Zustand der LED: ist sie an, schaltet sie aus, ist sie aus, schaltet sie ein. Klassisches Toggle-Muster. Mit der Entprellung wird das mechanische Geräusch des Tasters beseitigt, um ein einmaliges Umschalten mit einem einzigen Druck zu gewährleisten.

Knight-Rider-Lauflicht
Das klassische Lauflicht, das hin und her wandert: Ein Lichtpunkt gleitet über sechs LEDs von einem Ende zum anderen und kommt wieder zurück. Der Arduino lässt jede LED eine Zehntelsekunde leuchten, d

Raspberry Pi Pico Onboard-LED Blinken (Pico und Pico W)
Das Eröffnungsprojekt der Raspberry Pi Pico-Serie! Wir bringen die grüne interne LED zum Blinken, um zu überprüfen, ob die Platine funktioniert — ein klassisches "Hello World"-Erstexperiment. Keine externen Komponenten, nur Pico und USB-Kabel. Der Code ist in MicroPython geschrieben (die offiziell von der Raspberry Pi Foundation unterstützte Sprache). Lerne die machine.Pin-Klasse, Pin.OUT-Modus, led.on()/off()-Methoden und time.sleep() in Thonny IDE. Verfolge jede Umsch

Raspberry Pi Pico Zwei LEDs abwechselnd blinken (Blink-Flip)
Der nächste Schritt nach einer einzelnen LED auf dem Pico: zwei LEDs blinken abwechselnd in einem klassischen Flip-Flop-Muster. Wenn eine ausgeht, leuchtet die andere. Zwei verschiedenfarbige LEDs (rot an GP14, grün an GP13) wechseln alle 500ms den Zustand. MicroPythons Pin.toggle() macht den Code kurz. Grundlage von Ampeln, Polizeistroben, Lauflichtern.

Raspberry Pi Pico Ampel-Simulator (3 LEDs sequenziell)
Wir simulieren eine echte Ampel mit roten, gelben und grünen LEDs. Grün 4 Sek "gehen", gelb 1,5 Sek "bereit", rot 3 Sek "stopp" und rot+gelb 1 Sek "starten" (europäisches Ampelmuster). Lerne Funktionsdefinition, Zustandsmaschinen-Logik und Multi-GPIO-Synchronisation. Sehr einfache Schaltung: 3 LEDs an GP11/GP12/GP13, jeweils mit 220Ω Widerstand.
Weitere Artikel
BlueGrays-App
Diese Schaltung Schritt für Schritt auf dem Handy nachbauen
Schaltplan, Code und Teileliste auf einem Bildschirm. Über 200 Arduino-, ESP32- und Pico-Projekte zum Nachbauen.
Mit dem Handy scannen
Richte die Kamera auf den Code, dann öffnet sich der App-Store deines Handys.
oder im Store öffnen

