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:

Arduino UNO Q - Mehrere LEDs zum Blinken bringen

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino UNO Q
3×LED
3×220-Ohm-Widerstand
1×Steckbrett
1×Jumper-Drähte
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über LED

Erfahren Sie mehr über die LED (Pinbelegung, wie sie funktioniert, wie man sie programmiert) im Arduino UNO Q - LED-Tutorial.

Schaltplan

Arduino UNO Q Schaltplan mehrere LEDs

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
/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define PIN_LED_1 7 // The Arduino UNO Q pin connected to LED 1 #define PIN_LED_2 8 // The Arduino UNO Q pin connected to LED 2 #define PIN_LED_3 9 // The Arduino UNO Q pin connected to LED 3 ezLED led1(PIN_LED_1); // create ezLED object attached to PIN_LED_1 ezLED led2(PIN_LED_2); // create ezLED object attached to PIN_LED_2 ezLED led3(PIN_LED_3); // create ezLED object attached to PIN_LED_3 void setup() { led1.blink(800, 200); // 800ms ON, 200ms OFF, blink immediately led2.blink(500, 500); // 500ms ON, 500ms OFF, blink immediately led3.blink(500, 500, 500); // 500ms ON, 500ms OFF, blink after 500ms } void loop() { led1.loop(); // MUST call the led1.loop() function in loop() led2.loop(); // MUST call the led2.loop() function in loop() led3.loop(); // MUST call the led3.loop() function in loop() // DO SOMETHING HERE }

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.
Neue App in Arduino App Lab auf Arduino UNO Q 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.
Arduino App Lab App-Ordner und -Dateien auf Arduino UNO Q
  • Suchen Sie die Datei sketch/sketch.ino – hier werden Sie den MCU-Sketch einfügen.
  • Fügen Sie den Sketch ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in diese Sketch-Datei ein. Behalten Sie andere Dateien als Standard bei.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    Add sketch library in Arduino App Lab on Arduino UNO Q
    • Search for ezLED created by ArduinoGetStarted.com and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    ezLED ArduinoGetStarted.com

    LED library supports turn on/off, toggle, fade in/out, blink, blink in period, blink in a number of time. It is easy to use to control multiple LEDs... It is designed for not only beginners but also experienced users

    1.0.1
    Install
    More Info
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Hochladen: Klicken Sie auf die Schaltfläche „Ausführen" in Arduino App Lab, um den Code zu kompilieren und auf den STM32 hochzuladen.
    Klicken Sie auf die Schaltfläche „Ausführen
    • Ü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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define NUM_LED 3 // three LEDs #define PIN_LED_1 7 // The Arduino UNO Q pin connected to LED 1 #define PIN_LED_2 8 // The Arduino UNO Q pin connected to LED 2 #define PIN_LED_3 9 // The Arduino UNO Q pin connected to LED 3 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), // create ezLED object attached to PIN_LED_1 ezLED(PIN_LED_2), // create ezLED object attached to PIN_LED_2 ezLED(PIN_LED_3) // create ezLED object attached to PIN_LED_3 }; void setup() { ledArray[0].blink(800, 200); // 800ms ON, 200ms OFF, blink immediately ledArray[1].blink(500, 500); // 500ms ON, 500ms OFF, blink immediately ledArray[2].blink(500, 500, 500); // 500ms ON, 500ms OFF, blink after 500ms } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); // MUST call the led.loop() function in loop() // DO SOMETHING HERE }
    • 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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-blink-multiple-led */ #include "Arduino_RouterBridge.h" #include <ezLED.h> #define NUM_LED 3 #define PIN_LED_1 7 #define PIN_LED_2 8 #define PIN_LED_3 9 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), ezLED(PIN_LED_2), ezLED(PIN_LED_3) }; void setup() { Bridge.begin(); Monitor.begin(); // Start default blink patterns ledArray[0].blink(800, 200); ledArray[1].blink(500, 500); ledArray[2].blink(500, 500, 500); Bridge.provide_safe("set_blink", set_blink); Bridge.provide_safe("stop_all", stop_all); Monitor.println("Multiple LED Bridge ready"); } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); } // led_num: 0, 1, or 2; on_ms and off_ms in milliseconds void set_blink(int led_num, int on_ms, int off_ms) { if (led_num >= 0 && led_num < NUM_LED) ledArray[led_num].blink(on_ms, off_ms); } void stop_all() { for (int i = 0; i < NUM_LED; i++) ledArray[i].cancel(); }

    Python-Skript (Arduino App Lab) – LED-Muster von Linux aus steuern:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-blink-multiple-led */ from arduino.app_utils import * import time def loop(): print("Pattern 1: All LEDs fast") Bridge.call("set_blink", 0, 200, 200) Bridge.call("set_blink", 1, 200, 200) Bridge.call("set_blink", 2, 200, 200) time.sleep(3) print("Pattern 2: All LEDs slow") Bridge.call("set_blink", 0, 1000, 1000) Bridge.call("set_blink", 1, 1000, 1000) Bridge.call("set_blink", 2, 1000, 1000) time.sleep(3) print("Pattern 3: Different speeds") Bridge.call("set_blink", 0, 800, 200) Bridge.call("set_blink", 1, 500, 500) Bridge.call("set_blink", 2, 200, 800) time.sleep(3) print("Stopping all LEDs") Bridge.call("stop_all") time.sleep(2) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Muster 1: Alle LEDs schnell Muster 2: Alle LEDs langsam Muster 3: Unterschiedliche Geschwindigkeiten Stoppe alle LEDs

    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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-blink-multiple-led */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text.startswith("/blink "): parts = text.split() try: led_num = int(parts[1]) - 1 # user sends 1-3, code uses 0-2 on_ms = int(parts[2]) off_ms = int(parts[3]) Bridge.call("set_blink", led_num, on_ms, off_ms) send_message(chat_id, f"LED {led_num + 1} blinking: {on_ms}ms ON, {off_ms}ms OFF") except (ValueError, IndexError): send_message(chat_id, "Usage: /blink <led 1-3> <on_ms> <off_ms>") elif text == "/stop": Bridge.call("stop_all") send_message(chat_id, "All LEDs stopped") else: send_message(chat_id, "Commands:\n/blink <led> <on_ms> <off_ms> — set blink pattern\n/stop — stop all LEDs\n\nExample: /blink 1 800 200") time.sleep(1) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /blink 1 800 200 [2026-04-29 12:00:01] LED 1 blinkt: 800 ms EIN, 200 ms AUS [2026-04-29 12:02:10] Telegram: /blink 3 200 200 [2026-04-29 12:02:10] LED 3 blinkt: 200 ms EIN, 200 ms AUS [2026-04-29 12:05:30] Telegram: /stop [2026-04-29 12:05:30] Alle LEDs gestoppt
    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /blink 1 800 200
    10:15 AM ✓✓
    LED 1 blinkt: 800 ms EIN, 200 ms AUS
    10:16 AM
    /blink 3 200 200
    10:17 AM ✓✓
    LED 3 blinkt: 200 ms EIN, 200 ms AUS
    10:18 AM
    /stop
    10:19 AM ✓✓
    Alle LEDs gestoppt
    10:20 AM

    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

    ※ UNSERE NACHRICHTEN

    • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!