Arduino UNO Q - Mehrere LEDs zum Blinken bringen
Das unabhängige Blinken mehrerer LEDs mit unterschiedlichen Geschwindigkeiten ist eine häufige und visuell befriedigende Arduino-Aufgabe. In diesem Tutorial erfahren Sie, wie Sie den Arduino UNO Q programmieren, um zwei, drei oder mehr LEDs gleichzeitig zum Blinken zu bringen – jede in ihrem eigenen Tempo – ohne die Funktion delay() zu verwenden.
In diesem Tutorial werden Sie lernen:
- Wie man mehrere LEDs mit unterschiedlichen Geschwindigkeiten auf dem Arduino UNO Q zum Blinken bringt
- Wie man die Bibliothek ezLED verwendet, um mehrere LEDs mit einem Array sauber zu verwalten
- Wie man sowohl die Linux-Seite (Python) als auch die MCU-Seite (C/C++ Arduino-Code) programmiert, um mehrere LED-Blinkmuster von Linux aus zu steuern
- Wie man Telegram nutzt, um LED-Blinkmuster ferngesteuert auf dem Arduino UNO Q zu setzen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über LED
Erfahren Sie mehr über die LED (Pinbelegung, wie sie funktioniert, wie man sie programmiert) im Arduino UNO Q - LED-Tutorial.
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
MCU-Code – Mehrere LEDs zum Blinken bringen
Der Arduino UNO Q hat zwei Prozessoren: den STM32 MCU (verwaltet die Echtzeitsteuerung der Hardware) und den Qualcomm MPU (führt Debian Linux aus). In diesem Abschnitt wird nur der STM32 MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Um mehrere LEDs gleichzeitig ohne delay() zum Blinken zu bringen, verwenden wir die Bibliothek ezLED. Sie behandelt alle nicht-blockierenden Zeitmessungen intern, sodass Sie einfach .blink() und .loop() aufrufen müssen – keine millis()-Verwaltung erforderlich.
- LED 1 (Pin 7): 800 ms EIN, 200 ms AUS – startet sofort
- LED 2 (Pin 8): 500 ms EIN, 500 ms AUS – startet sofort
- LED 3 (Pin 9): 500 ms EIN, 500 ms AUS – startet nach einer 500-ms-Verzögerung
Schnelle Schritte
- Zum ersten Mal mit Arduino UNO Q? Folgen Sie dem Erste Schritte mit Arduino UNO Q-Tutorial, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Verdrahten Sie die LEDs: Verbinden Sie drei LEDs (jede mit einem 220-Ω-Widerstand) mit den Pins 7, 8 und 9 gemäß dem Schaltplan.
- Verbinden: Stecken Sie den Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt – dies kann beim ersten Start mehrere Minuten dauern.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, z. B.: DIYables_MultipleLED
- Klicken Sie auf Erstellen, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.

- Suchen Sie die Datei sketch/sketch.ino – hier werden Sie den MCU-Sketch einfügen.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for ezLED created by ArduinoGetStarted.com and click the Install button.
- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Hochladen: Klicken Sie auf die Schaltfläche „Ausführen" in Arduino App Lab, um den Code zu kompilieren und auf den STM32 hochzuladen.

- Überprüfen Sie die LEDs: Alle drei LEDs sollten gleichzeitig mit unterschiedlichen Geschwindigkeiten blinken.
- Pro-Tipp: Ändern Sie die Werte blink(on_ms, off_ms), um die Timing jeder LED anzupassen – oder fügen Sie eine vierte LED hinzu, indem Sie ezLED led4(PIN_LED_4) hinzufügen und led4.blink(...) und led4.loop() aufrufen.
Bonus: Sauberer Code mit LED-Array
Verwenden Sie für sauberen und skalierbaren Code ein Array von ezLED-Objekten. Das Hinzufügen oder Entfernen von LEDs erfordert nur das Ändern von NUM_LED und den Pin-Definitionen:
- Skalierung: Um eine vierte LED hinzuzufügen, ändern Sie NUM_LED auf 4, fügen PIN_LED_4 hinzu und fügen Sie sie zu ledArray hinzu.
- Bibliothekinformationen: Erfahren Sie mehr über die Bibliothek ezLED auf arduinogetstarted.com.
Linux + MCU Bridge-Programmierung
Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: den MPU (Qualcomm, führt Debian Linux aus) und den MCU (STM32, führt Zephyr OS mit Ihrem Arduino-Sketch aus). Sie kommunizieren über RPC über die Bibliothek Arduino_RouterBridge – nie über Raw-Serielle Ports.
- Die LEDs sind mit dem MCU (STM32) verbunden – mit den digitalen Pins des STM32 verdrahtet. Der MCU lässt sie mit der Bibliothek ezLED mit nicht-blockierender Zeitmessung blinken.
- Der MPU kann die LEDs nicht direkt steuern – er muss Befehle über Bridge.call() an den MCU senden. Der MCU führt die registrierten Bridge.provide_safe()-Funktionen aus.
- Der MPU hat Wi-Fi – weil der MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann er Telegram-Befehle empfangen und LED-Blinkmuster ferngesteuert steuern.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe()-Funktionen auf der MCU-Seite auf
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet – öffnen Sie sie niemals direkt
Kurz gesagt: MPU sendet Befehle zum Blinkmuster → MCU empfängt sie → MCU aktualisiert LED-Blinkmuster in Echtzeit.
MCU-Sketch – mehrere LEDs mit ferngesteuerter Blinksteuerung:
Python-Skript (Arduino App Lab) – LED-Muster von Linux aus steuern:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() im MCU-Sketch aufgerufen wird und der Sketch vor dem Ausführen des Python-Skripts auf der Linux-Seite hochgeladen wird.
- ⚠️ Warnung: Öffnen Sie /dev/ttyHS1 (unter Linux) oder verwenden Sie Serial1 (auf MCU) niemals direkt in Ihrem Code – diese sind vom Arduino Router reserviert und der Zugriff darauf unterbricht die Bridge.
Schnelle Schritte
- Laden Sie den MCU-Sketch hoch: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie den Bridge MCU-Sketch oben in sketch/sketch.ino ein, installieren Sie die Bibliotheken ezLED und Arduino_RouterBridge und klicken Sie auf „Ausführen".
- Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben in der Registerkarte „Python" derselben App ein.
- Führen Sie die App aus: Klicken Sie auf „Ausführen" – die Python-Seite durchläuft automatisch verschiedene Blinkmuster.
- Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte „Konsole" → Unterregisterkarte „Python-Konsole", um zu sehen, welches Muster aktiv ist.
- Pro-Tipp: Rufen Sie Bridge.call("stop_all") von Python aus auf, um alle LEDs auf einmal zu stoppen.
App Lab-Konsolenausgabe
Telegram-Integration
Sie können das Blinkmuster jeder LED ferngesteuert über Telegram steuern – stellen Sie individuelle Blinkgeschwindigkeiten ein oder stoppen Sie alle LEDs von überall aus.
Wenn Sie noch keinen Telegram-Bot haben, siehe So erstellen Sie einen Telegram-Bot, um Ihr Bot-Token vor dem Fortfahren zu erhalten.
Dieser Abschnitt behandelt:
- Ausführen eines Python-Skripts auf der Linux-Seite von Arduino UNO Q zum Abhören von Telegram-Nachrichten
- Weiterleitung von Befehlen zum Blinkmuster an einzelne LEDs auf der MCU-Seite über Bridge.call()
- Senden einer Bestätigungsantwort zurück an Telegram
MCU-Sketch: Behalten Sie den gleichen MCU-Sketch aus dem vorherigen Bridge-Abschnitt – keine Änderungen erforderlich. Stellen Sie sicher, dass er bereits auf dem STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) – Telegram-Bot für mehrere LED-Steuerung:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /blink 1 800 200, um LED 1 mit 800 ms EIN und 200 ms AUS zum Blinken zu bringen.
- Senden Sie /stop, um alle LEDs auf einmal zu stoppen.
Schnelle Schritte
- Laden Sie den MCU-Sketch hoch: Verwenden Sie den Bridge MCU-Sketch aus dem vorherigen Abschnitt (laden Sie ihn zuerst hoch, falls noch nicht geschehen).
- Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben in der Registerkarte „Python" Ihrer App in Arduino App Lab.
- Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr eigentliches Bot-Token.
- Führen Sie die App aus: Klicken Sie auf „Ausführen" – der Bot beginnt sofort, auf Telegram-Nachrichten zu warten.
- Testen Sie es: Senden Sie /blink 2 300 300 zum schnellen Blinken von LED 2 oder /stop, um alle auszuschalten.
- Pro-Tipp: Senden Sie /blink 1 100 100 für einen sehr schnellen Stroboskop-Effekt auf LED 1.
App Lab-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können den OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung zum Arduino Uno Q - OpenClaw-Tutorial verwenden.
Anwendungs-/Projektideen
Hier sind einige Projektideen, die Sie mit mehreren LEDs und Arduino UNO Q erstellen können:
- Telegram-gesteuerte Lichtshow: Legen Sie verschiedene Blinkmuster für jede LED über Telegram fest und erstellen Sie eine benutzerdefinierte Lichtshow
- Ampelsimulator: Verwenden Sie rote, gelbe und grüne LEDs mit zeitgesteuerten Blinkmustern, die von Python aus gesteuert werden
- System-Status-Panel: Jede LED stellt einen anderen Dienststatus dar – schnelles Blinken für Warnung, steady für OK, aus für gestoppt
- Morsecode-Sender: Blinken Sie jede LED mit einer anderen codierten Nachricht gleichzeitig
- LED-Sequenzer: Haben Sie die Python-Seite LEDs in einem Chase-Muster durch Einschalten und Ausschalten in Reihenfolge durchlaufen
Fordern Sie sich selbst heraus
Versuchen Sie diese Herausforderungen mit mehreren LEDs und Arduino UNO Q:
- Einfach: Fügen Sie ein viertes LED zum Sketch hinzu und legen Sie es auf 250 ms EIN, 750 ms AUS zum Blinken fest
- Mittel: Erweitern Sie den Bridge-Sketch, um eine get_state(int led_num)-Funktion verfügbar zu machen, die zurückgibt, ob eine LED derzeit EIN oder AUS ist
- Fortgeschritten: Erstellen Sie einen Telegram-Bot, der ein benanntes Muster akzeptiert (z. B. /pattern chase) und eine voreingestellte Blinksequenz über alle drei LEDs anwendet