Arduino UNO Q - LED zum Verblassen bringen
Die Kontrolle der LED-Helligkeit – sanftes Ein- und Ausblenden – ist eine grundlegende Technik in der Arduino-Programmierung. In diesem Tutorial lernen Sie, wie Sie PWM (Pulse Width Modulation) verwenden, um die Helligkeit einer LED auf der Arduino UNO Q schrittweise zu erhöhen und zu verringern.
In diesem Tutorial lernen Sie:
- Wie Sie eine LED mit delay() verblassen lassen (einfach, für Anfänger)
- Wie Sie eine LED ohne Blockierung mit millis() verblassen lassen (empfohlen)
- Wie Sie die LED-Helligkeit von der Linux-Seite (Python) über Bridge steuern
- Wie Sie die LED-Helligkeit remote steuern oder das Verblassen über Telegram auslösen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kaufhinweis: Um den Verdrahtungsprozess zu vereinfachen, empfehlen wir die Verwendung des LED Module, das mit einem eingebauten Widerstand geliefert wird.
Über LED
Pinbelegung
LED hat zwei Pins:
- Kathode(−) Pin: mit GND (0V) verbinden
- Anode(+) Pin: zur Steuerung der LED-Helligkeit verwenden

Funktionsweise
Nach dem Verbinden der Kathode mit GND:
- Anode mit GND (0V) verbinden → LED ist AUS
- Anode mit VCC verbinden → LED ist vollständig AN
- Senden Sie ein PWM-Signal an die Anode → Die Helligkeit variiert zwischen 0 (aus) und 255 (voll)

※ Notiz:
Die meisten LEDs benötigen einen Strombegrenzungswiderstand (z.B. 220Ω) zwischen der Anode und dem Signalpin. Ohne ihn riskieren Sie, die LED zu beschädigen.
LEDs mit Arduino UNO Q verblassen lassen
Der Arduino UNO Q STM32 MCU unterstützt PWM an bestimmten Pins (wie Pin 9). Verbinden Sie die LED-Anode über einen 220Ω-Widerstand mit einem PWM-fähigen Pin und verbinden Sie die Kathode mit GND. Verwenden Sie analogWrite(pin, value) um die Helligkeit (0–255) einzustellen.
Schaltschema

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wie man programmiert
- Stellen Sie den Pin-Modus auf Ausgang ein:
- Passen Sie die LED-Helligkeit mit PWM an:
MCU-Code – LED zum Verblassen bringen (mit Verzögerung)
Die Arduino UNO Q hat zwei Prozessoren: den STM32 MCU (handhabt Echtzeitsteuerung) 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.
Dieses Beispiel erhöht und verringert schrittweise die LED-Helligkeit mit delay():
Schnelle Schritte
- Zum ersten Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- LED verdrahten: Verbinden Sie eine LED mit einem 220Ω-Widerstand mit Pin 9 gemäß dem Schaltschema.
- Verbinden: Stecken Sie die Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer.
- Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis Arduino UNO Q erkannt wird.
- Neue App erstellen: Klicken Sie auf die Schaltfläche Neue App erstellen.

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

- Finden Sie die sketch/sketch.ino Datei – dies ist, wo Sie die MCU-Skizze einfügen werden.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Hochladen: Klicken Sie in Arduino App Lab auf die Run-Schaltfläche, um zu kompilieren und auf den STM32 hochzuladen.

- LED überprüfen: Die LED sollte sanft ein- und ausblenden.
- Pro Tipp: Verringern Sie den delay(30) Wert (z.B. delay(10)), um das Verblassen schneller zu machen, oder erhöhen Sie ihn, um es langsamer zu machen.
Code-Erklärung
Die Erklärung befindet sich in den Kommentaren im obigen Code.
※ Notiz:
Die Funktion delay() blockiert all andere Code während es wartet. Für responsiveres Verhalten (z.B. Sensoren auslesen oder auf Befehle reagieren), verwenden Sie stattdessen millis() – wie im nächsten Abschnitt gezeigt.
MCU-Code – LED zum Verblassen bringen (ohne Verzögerung)
Diese Version verwendet millis() für nicht-blockierendes Verblassen – die Schleife läuft weiter, und die LED verblaßt sanft über einen Zeitraum von 3 Sekunden:
Schnelle Schritte
- Ersetzen Sie den Code in sketch/sketch.ino mit dieser nicht-blockierenden Version.
- Klicken Sie auf Ausführen zum Hochladen.
- Die LED verblaßt kontinuierlich über 3-Sekunden-Zyklen.
- Pro Tipp: Ändern Sie FADE_PERIOD 3000 zu 1000 für ein schnelleres Verblassen oder 5000 für ein langsameres. Sie können auch 0, 255 und 255, 0 in map() austauschen, um stattdessen auszublenden.
Linux + MCU Bridge-Programmierung
Die Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: der MPU (Qualcomm, führt Debian Linux aus) und der MCU (STM32, führt Zephyr OS mit Ihrer Arduino-Skizze aus). Sie kommunizieren über RPC über die Arduino_RouterBridge Bibliothek – niemals über reine serielle Anschlüsse.
- Die LED ist mit dem MCU (STM32) verbunden – verdrahtet mit einem PWM-fähigen digitalen Pin auf dem STM32. Der MCU steuert die Helligkeit mit analogWrite().
- Der MPU kann die LED 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 – da der MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann er Telegram-Befehle empfangen und die LED-Helligkeit remote steuern oder das Verblassen auslösen.
- 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 Helligkeits-/Verblaßbefehle → MCU empfängt sie → MCU aktualisiert die LED in Echtzeit.
MCU-Skizze – LED zum Verblassen bringen mit Bridge-Steuerung:
Python-Skript (Arduino App Lab) – Steuern Sie die LED-Helligkeit und das Verblassen von Linux:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie nie direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code – diese sind vom Arduino Router reserviert und der Zugriff darauf unterbricht die Bridge.
Schnelle Schritte
- MCU-Skizze hochladen: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die obige Bridge-MCU-Skizze in sketch/sketch.ino ein, behalten Sie die Standardbibliotheken bei (keine zusätzliche Bibliothek erforderlich) und klicken Sie auf Ausführen.
- Python-Skript hinzufügen: Fügen Sie den obigen Python-Code in die Python-Registerkarte derselben App ein.
- App ausführen: Klicken Sie auf Ausführen – die Python-Seite durchläuft automatisch Verblaß- und Helligkeitsmuster.
- Konsole überprüfen: Öffnen Sie die Registerkarte Konsole → Unterkarte Python-Konsole um zu sehen, was die Python-Seite tut.
- Pro Tipp: Rufen Sie Bridge.call("set_brightness", 0) von Python auf, um die LED sofort auszuschalten.
App Lab Konsolenausgabe
Telegram-Integration
Sie können die LED-Helligkeit und das Verblassen remote über Telegram steuern – spezifische Helligkeitsstufen einstellen oder sanftes Verblassen von überall auslösen.
Wenn Sie noch keinen Telegram-Bot haben, siehe Wie man einen Telegram-Bot erstellt um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
Dieser Abschnitt behandelt:
- Ausführen eines Python-Skripts auf der Linux-Seite von Arduino UNO Q um auf Telegram-Nachrichten zu hören
- Weiterleiten von Helligkeits- oder Verblaßbefehlen an den MCU über Bridge.call()
- Senden einer Bestätigungsantwort zurück an Telegram
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt – keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits hochgeladen ist und auf dem STM32 ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) – Telegram-Bot zur LED-Helligkeitssteuerung:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN mit dem Token von @BotFather auf Telegram erhalten.
- Senden Sie /brightness 128 um die LED auf halbe Helligkeit einzustellen.
- Senden Sie /fade 3000 um sanftes Verblassen mit einem 3-Sekunden-Zyklus zu starten.
- Senden Sie /stop um das Verblassen zu stoppen und die LED auszuschalten.
Schnelle Schritte
- MCU-Skizze hochladen: Verwenden Sie die Bridge-MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, wenn nicht bereits geschehen).
- Telegram-Skript einfügen: Kopieren Sie den obigen Python-Code in die Python-Registerkarte Ihrer App in Arduino App Lab.
- Ihr Token einstellen: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr aktuelles Bot-Token.
- App ausführen: Klicken Sie auf Ausführen – der Bot beginnt sofort, auf Telegram-Nachrichten zu hören.
- Testen Sie es: Senden Sie /brightness 200 um die LED auf nahezu volle Helligkeit einzustellen, oder /fade 2000 für einen schnellen Verblaßeffekt.
- Pro Tipp: Senden Sie /brightness 0 als Alternative zu /stop – schaltet die LED aus, ohne den Verblaßzustand zu stoppen.
App Lab Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung im Tutorial Arduino Uno Q - OpenClaw verwenden
Anwendungs-/Projektideen
Hier sind einige Projekte, die Sie mit LED-Verblassen und Arduino UNO Q erstellen können:
- Stimmungslicht: Verwenden Sie Telegram, um Helligkeitsstufen für eine Schreibtischlampe oder ein Nachtlicht vom Bett aus einzustellen
- Sonnenaufgang-Wecker: Programmieren Sie ein langsames Einblenden zu einer geplanten Zeit unter Verwendung der Linux-Uhr des MPU
- Batterieanzeige: Ordnen Sie die Batteriespannung der LED-Helligkeit zu – dunkler bedeutet niedrigere Ladung
- Herzschlag-Effekt: Erstellen Sie einen Pulseffekt durch schnelles Ein- und Ausblenden – großartig für Wearables oder Status-LEDs
- Nachtlichtsregler: Stellen Sie volle Helligkeit am Abend, halbe Helligkeit in der Nacht und Aus bei Sonnenaufgang über geplante Telegram-Befehle ein
Fordern Sie sich selbst heraus
Versuchen Sie diese Herausforderungen mit LED-Verblassen auf Arduino UNO Q:
- Einfach: Ändern Sie FADE_PERIOD in Fade2.cpp, um die LED über 1 Sekunde statt 3 Sekunden einzublenden
- Mittel: Erweitern Sie die Bridge-Skizze um eine get_brightness() Funktion, die den aktuellen Helligkeitswert zu Python zurückgibt
- Fortgeschritten: Erstellen Sie einen Telegram-Bot, der eine benannte Helligkeitsstufe akzeptiert (/dim, /half, /full) und sie 64, 128 bzw. 255 zuordnet, wenden Sie sie dann über Bridge.call() an