Grundlagen · 12 Min. Lesezeit

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.

Arduino Uno: digitale Pins, mit ~ markierte PWM-Pins und die Analogeingänge A0–A5
Die ersten fünf Karten des Lernpfads Arduino C++ behandeln die drei Pin-Gruppen dieses Boards: digitale Pins, mit ~ markierte PWM-Pins und die Analogeingänge A0–A5.

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.

AbschnittWas er erklärtAuf der Karte millis
Wofür ist das gut?Die Aufgabe des Befehls in einem SatzSagt dir, wie viele Millisekunden seit dem Start des Boards vergangen sind.
Warum?Wozu du ihn brauchst, mit einem Vergleich aus dem AlltagWie ein Kuchen im Ofen, bei dem du ab und zu auf die Uhr schaust: Während du wartest, erledigst du anderes.
SyntaxWie der Befehl geschrieben wirdunsigned long now = millis();
BeispielEin kurzes, lauffähiges Programm; Reiter Blöcke, Arduino und MicroPythonCode, der eine LED alle 500 ms umschaltet; auf dem Pico dasselbe mit time.ticks_ms
Häufiger FehlerDie Falle, in die Einsteiger am häufigsten tappenmillis in einem int speichern: Nach etwa 33 Sekunden stimmt die Zahl nicht mehr.
TippEine kleine Regel, die dir die Arbeit erleichtertSchreib die Prüfung immer als jetzt - vorher >= Intervall.
In Projekten ansehenProjekte, die den Befehl nutzen, von leicht bis schwerÜber 50 Projekte; die Liste beginnt mit einem kostenlosen ESP32-Tasterprojekt
MinitestZwei Fragen, nach jeder Antwort eine kurze ErklärungWas 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.KarteWofür ist das gut?Entsprechung in MicroPython
1pinModeLegt fest, ob ein Pin Ausgang (LED, Summer) oder Eingang (Taster, Sensor) istPin(15, Pin.OUT) · Pin(14, Pin.IN, Pin.PULL_UP)
2digitalWriteSchaltet einen Ausgangspin ein (HIGH, 5 V) oder aus (LOW, 0 V)led.value(1) · led.on() · led.off()
3digitalReadLiest, ob ein Eingangspin HIGH oder LOW istbutton.value() → 1 oder 0
4analogReadWandelt die Spannung an A0–A5 in eine Zahl von 0 bis 1023 umADC(26).read_u16() → 0–65535
5analogWrite (PWM)Dimmt eine LED oder bremst einen Motor mit einem Wert von 0 bis 255 an einem ~-PinPWM(Pin(15)) · freq(1000) · duty_u16(0–65535)
6delayHält den Code für die angegebenen Millisekunden antime.sleep(0.5) · time.sleep_ms(500)
7millisMillisekunden seit dem Start; Zeitsteuerung, ohne den Code anzuhaltentime.ticks_ms() · time.ticks_diff()
8Variablen und DatentypenSpeichert Werte mit Typen wie int, float, bool, unsigned longKein Typ nötig: count = 0, volts = 3.3
9if / else if / elseFührt je nach Bedingung anderen Code ausif / elif / else
10Vergleichs- und LogikoperatorenBildet Bedingungen mit ==, !=, <, >, &&, ||, !==, !=, <, > · and, or, not
11for-SchleifeWiederholt eine Aufgabe eine feste Anzahl von Malenfor i in range(10):
12while-SchleifeWiederholt, solange eine Bedingung wahr istwhile Bedingung:
13Funktionen (void, Parameter, return)Teilt Code in benannte, wiederverwendbare Stückedef blink(times): … return
14ArraysHält Werte gleichen Typs geordnet unter einem NamenListe: pins = [2, 3, 4] · len(pins)
15Serial.begin / print / printlnSchickt Text und Werte an den Computer (serieller Monitor)print(x) · f-String; kein Serial.begin nötig
16mapRechnet einen Zahlenbereich in einen anderen umKein fertiger Befehl: raw * 255 // 1023 oder eine eigene Funktion
17random / randomSeedErzeugt Zufallszahlenimport random · random.randint(1, 6)
18tone / noToneSpielt einen Ton bestimmter Frequenz am Summer und stoppt ihnPWM: freq(440) · duty_u16(32768); duty_u16(0) zum Stummschalten
Die Entsprechungen sind nicht eins zu eins, und der größte Unterschied liegt in den Zahlenbereichen. Am Uno liefert analogRead 0–1023 und analogWrite erwartet 0–255; am Pico nutzen ADC.read_u16 und PWM.duty_u16 beide 0–65535. Am Pico können nur GP26, GP27 und GP28 analog lesen, und sie messen höchstens 3,3 V; schließ ein Potentiometer also an 3V3 (OUT) an, nicht an 5 V. MicroPython hat außerdem keinen fertigen Befehl wie map oder tone: Du rechnest Bereiche mit einer einfachen Multiplikation und Division um und erzeugst Töne über die freq-Einstellung der PWM.

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.KarteWofür ist das gut?Entsprechung in Arduino
1import und from … importBindet Module wie machine und time ins Programm ein#include für Bibliotheken; Grundbefehle wie pinMode und delay sind eingebaut
2print und f-StringsGibt Text und Werte in der Thonny-Shell ausSerial.begin(9600) + Serial.println()
3Pin-Ausgang: Pin(15, Pin.OUT)Macht einen GP-Pin zum Ausgang; value(), on(), off(), toggle()pinMode(13, OUTPUT) + digitalWrite()
4Pin-Eingang: Pin.IN, PULL_UP, PULL_DOWNMacht einen Pin zum Eingang, wählt den internen Widerstand, liest mit value()pinMode(2, INPUT_PULLUP) + digitalRead()
5time.sleep und sleep_msHält das Programm Sekunden oder Millisekunden lang andelay()
6while True: die EndlosschleifeWiederholt die Zeilen darunter, solange der Pico läuftloop()
7Einrückung und Doppelpunkt (:)Legt fest, welche Zeile zu welchem Block gehörtGeschweifte Klammern { } und Semikolon ;
8Variablen: int, float, str, boolSpeichert Werte; der Typ ergibt sich von selbstint, float, String, bool
9if / elif / else, and / or / notVerzweigt nach Bedingungen und verknüpft sieif / else if / else · &&, ||, !
10for und rangeFeste Anzahl Wiederholungen; range(0, 10) zählt von 0 bis 9for (int i = 0; i < 10; i++)
11Listen: [ ], Index, lenHält mehrere Werte der Reihe nach; das erste Element hat Index 0Arrays: int pins[] = {2, 3, 4};
12def und return (Funktionen)Benennt wiederverwendbaren Code und gibt ein Ergebnis zurückvoid- oder typisierte Funktionen, return
13ADC: analog lesen mit read_u16Liest die Spannung an GP26, GP27, GP28 als 0–65535analogRead() → 0–1023
14PWM: freq und duty_u16Dimmt eine LED, spielt Töne am SummeranalogWrite() und tone()
15time.ticks_ms und ticks_diffMisst vergangene Zeit, ohne den Code anzuhaltenmillis()
16Pin.irq: Taster mit InterruptsFührt eine Funktion in dem Moment aus, in dem ein Taster gedrückt wirdattachInterrupt()
17try / except (Fehler abfangen)Verhindert, dass das Programm bei einem Fehler stehen bleibtKeine übliche Entsprechung in Arduino; man prüft Rückgabewerte
18I2C und scan()Findet die Adressen der Geräte am I2C-BusWire.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.

C++ (Arduino IDE)
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}
MicroPython
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 ms

Das 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.

C++ (Arduino IDE)
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}
MicroPython
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 pause

Das 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.

C++ (Arduino IDE)
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}
MicroPython
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)
KonzeptArduino C++MicroPython (Pico)
Läuft einmalvoid setup() { … }Die Zeilen vor while True:
Läuft immer wiedervoid loop() { … }while True: und die eingerückten Zeilen darunter
CodeblockGeschweifte Klammern { } und ; am Zeilenende: am Zeilenende und 4 Leerzeichen Einrückung
Kommentar// Kommentar# Kommentar
AusgangspinpinMode(13, OUTPUT); digitalWrite(13, HIGH);led = Pin(15, Pin.OUT) · led.value(1)
EingangspinpinMode(2, INPUT_PULLUP); digitalRead(2)Pin(14, Pin.IN, Pin.PULL_UP) · button.value()
Analog lesenanalogRead(A0) → 0–1023ADC(26).read_u16() → 0–65535
PWM-AusganganalogWrite(9, 0–255)PWM(Pin(15)).duty_u16(0–65535)
Wartendelay(500)time.sleep_ms(500) oder time.sleep(0.5)
AusgabeSerial.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.

WocheKarten Arduino C++Karten MicroPythonKostenlose Projekte der WocheWas du am Ende der Woche kannst
11–5: pinMode, digitalWrite, digitalRead, analogRead, analogWrite1–5: import, print, Pin-Ausgang, Pin-Eingang, time.sleepLED 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
26–10: delay, millis, Variablen, if / else, Operatoren6–9: while True, Einrückung, Variablen, if / elif / elseNachtlicht 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
311–14: for, while, Funktionen, Arrays10–13: for und range, Listen, def, ADCKnight-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
415–18: Serial, map, random, tone14–18: PWM, ticks_ms, Pin.irq, try / except, I2CVerwendung 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

  1. 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.
  2. 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. 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.
  4. 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.
  5. 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.
  6. 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

FehlerAnzeichenLösungKarte
pinMode vergessenDie LED leuchtet gar nicht oder nur sehr schwachpinMode(pin, OUTPUT) in setup() schreiben; am Pico den Pin mit Pin(15, Pin.OUT) anlegenpinMode · Pin-Ausgang
In einer Bedingung = statt == schreibenif (x = 5) ist immer wahr, das Programm läuft immer in denselben ZweigZum Vergleichen == nutzen; in Python führt if x = 5 sofort zu einem SyntaxErrorif / else · Operatoren
Den Code mit einem langen delay blockierenDu drückst den Taster, aber die Reaktion kommt spät oder gar nichtMit millis warten; am Pico time.ticks_ms und ticks_diff nutzendelay · millis · ticks_ms
Den Bereich von analogRead verwechselnEin von Arduino übernommener Schwellenwert greift am Pico nieAm Uno liefert analogRead 0–1023, am Pico read_u16 0–65535; den Schwellenwert für den neuen Bereich neu berechnenanalogRead · ADC
Einen analogWrite-Wert in duty_u16 übernehmenAm Pico bleibt die LED mit duty_u16(255) fast dunkelduty_u16 erwartet 0–65535: halbe Helligkeit ist 32768, volle 65535analogWrite · PWM
millis in einem int speichernAm Uno stimmt die Zeitsteuerung nach etwa 33 Sekunden nicht mehrZeitvariablen als unsigned long anlegen und die Prüfung als jetzt - vorher >= Intervall schreibenmillis
Die INPUT_PULLUP-Logik umgekehrt erwartenDu erwartest beim Drücken HIGH oder 1, bekommst aber LOW oder 0Mit Pull-up ist gedrückt LOW (0) und losgelassen HIGH (1)digitalRead · Pin-Eingang
Am Pico sleep(500) schreibenDer Pico wartet 500 Sekunden, also über 8 Minuten, statt einer halben Sekundesleep nimmt Sekunden: sleep(0.5) oder sleep_ms(500) schreibentime.sleep

Der Reiter Blöcke: einen Befehl durch Sehen verstehen

Deutsche Blöcke des Projekts LED Blinken: Pin 9 als AUSGANG setzen, dann in immer wiederholen HOCH an Pin 9 schreiben, 100 ms warten, NIEDRIG an Pin 9 schreiben, 100 ms warten
Blöcke des kostenlosen Projekts LED Blinken: Der Block „Setup (läuft einmal)“ entspricht setup(), der Block „immer wiederholen“ entspricht loop().

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.

Alle Projekte ansehen
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)
1125
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
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)
204
ESP32 LED Steuerung mit Taster (Toggle)
#105Anfänger

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.

4.6(39)
57
Knight-Rider-Lauflicht
#6Mittel

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

4.8(106)
202
Raspberry Pi Pico Onboard-LED Blinken (Pico und Pico W)
#147Anfänger

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

5.0(1)
10
Raspberry Pi Pico Zwei LEDs abwechselnd blinken (Blink-Flip)
#149Anfänger

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.

5.0(2)
19
Raspberry Pi Pico Ampel-Simulator (3 LEDs sequenziell)
#150Anfänger

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.

4.0(1)
12