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:

Arduino UNO Q - LED zum Verblassen bringen

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×LED Kit
1×LED (red)
1×LED Module
1×220 Ohm Widerstand
1×Breadboard
1×Verbindungskabel
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.

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
LED Pinbelegung

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)
Funktionsweise LED Verblassen

※ 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

Arduino UNO Q LED zum Verblassen bringen 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:
pinMode(9, OUTPUT);
  • Passen Sie die LED-Helligkeit mit PWM an:
analogWrite(9, brightness); // brightness: 0 (off) to 255 (full on)

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():

/* * 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-fade-led */ #define LED_PIN 9 // The Arduino UNO Q pin connected to the LED int brightness = 0; // how bright the LED is int fade_step = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin 9 to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin 9: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fade_step; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fade_step = -fade_step; } // wait for 30 milliseconds to see the dimming effect delay(30); }

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.
Neue App in Arduino App Lab auf Arduino UNO Q 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.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Finden Sie die sketch/sketch.ino Datei – dies ist, wo Sie die MCU-Skizze einfügen werden.
  • Skizze einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizzendatei 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 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 in Arduino App Lab auf die Run-Schaltfläche, um zu kompilieren und auf den STM32 hochzuladen.
    Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q
    • 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:

    /* * 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-fade-led */ #define LED_PIN 9 // The Arduino UNO Q pin connected to the LED #define FADE_PERIOD 3000 // fade time is 3 seconds unsigned long fade_start_ms; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin 9 to be an output fade_start_ms = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fade_start_ms; if (progress <= FADE_PERIOD) { long brightness = map(progress, 0, FADE_PERIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fade_start_ms = millis(); // restart fade again } }

    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:

    /* * 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-fade-led */ #include "Arduino_RouterBridge.h" #define LED_PIN 9 int current_brightness = 0; bool fading = false; int fade_period_ms = 3000; unsigned long fade_start_ms = 0; int fade_direction = 1; // 1 = fade-in, -1 = fade-out void set_brightness(int value) { fading = false; current_brightness = constrain(value, 0, 255); analogWrite(LED_PIN, current_brightness); Monitor.println("Brightness set to: " + String(current_brightness)); } void start_fade(int period_ms) { fade_period_ms = period_ms > 0 ? period_ms : 3000; fade_start_ms = millis(); fading = true; fade_direction = 1; Monitor.println("Fading started with period: " + String(fade_period_ms) + "ms"); } void stop_fade() { fading = false; analogWrite(LED_PIN, 0); current_brightness = 0; Monitor.println("Fade stopped"); } void setup() { pinMode(LED_PIN, OUTPUT); Bridge.begin(); Monitor.begin(); Bridge.provide_safe("set_brightness", set_brightness); Bridge.provide_safe("start_fade", start_fade); Bridge.provide_safe("stop_fade", stop_fade); Monitor.println("Fade LED Bridge ready"); } void loop() { if (!fading) return; unsigned long progress = millis() - fade_start_ms; if (progress >= (unsigned long)fade_period_ms) { // reverse direction and restart fade_direction = -fade_direction; fade_start_ms = millis(); progress = 0; } long brightness; if (fade_direction == 1) { brightness = map(progress, 0, fade_period_ms, 0, 255); } else { brightness = map(progress, 0, fade_period_ms, 255, 0); } analogWrite(LED_PIN, brightness); }

    Python-Skript (Arduino App Lab) – Steuern Sie die LED-Helligkeit und das Verblassen von Linux:

    /* * 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-fade-led */ from arduino.app_utils import * import time def loop(): print("Starting auto fade (2 seconds per cycle)") Bridge.call("start_fade", 2000) time.sleep(8) print("Setting brightness to 128 (half)") Bridge.call("set_brightness", 128) time.sleep(2) print("Setting brightness to 255 (full)") Bridge.call("set_brightness", 255) time.sleep(2) print("Setting brightness to 0 (off)") Bridge.call("set_brightness", 0) time.sleep(2) print("Starting slow fade (5 seconds per cycle)") Bridge.call("start_fade", 5000) time.sleep(15) print("Stopping fade") Bridge.call("stop_fade") time.sleep(2) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Starting auto fade (2 seconds per cycle) Setting brightness to 128 (half) Setting brightness to 255 (full) Setting brightness to 0 (off) Starting slow fade (5 seconds per cycle) Stopping fade

    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:

    /* * 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-fade-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("/brightness "): parts = text.split() try: value = int(parts[1]) if 0 <= value <= 255: Bridge.call("set_brightness", value) send_message(chat_id, f"Brightness set to {value}") else: send_message(chat_id, "Brightness must be between 0 and 255") except (ValueError, IndexError): send_message(chat_id, "Usage: /brightness <0-255>") elif text.startswith("/fade "): parts = text.split() try: period_ms = int(parts[1]) Bridge.call("start_fade", period_ms) send_message(chat_id, f"Fading started with {period_ms}ms period") except (ValueError, IndexError): send_message(chat_id, "Usage: /fade <period_ms>\nExample: /fade 3000") elif text == "/fade": Bridge.call("start_fade", 3000) send_message(chat_id, "Fading started with 3000ms period") elif text == "/stop": Bridge.call("stop_fade") send_message(chat_id, "Fade stopped, LED off") else: send_message(chat_id, "Commands:\n/brightness <0-255> — set brightness\n/fade <period_ms> — start fading\n/stop — stop fade\n\nExamples:\n/brightness 128\n/fade 3000") time.sleep(1) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /brightness 128 [2026-04-29 12:00:01] Brightness set to 128 [2026-04-29 12:03:20] Telegram: /fade 3000 [2026-04-29 12:03:20] Fading started with 3000ms period [2026-04-29 12:07:45] Telegram: /stop [2026-04-29 12:07:45] Fade stopped, LED off
    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
    /brightness 128
    10:15 AM ✓✓
    Brightness set to 128
    10:16 AM
    /fade 3000
    10:17 AM ✓✓
    Fading started with 3000ms period
    10:18 AM
    /stop
    10:19 AM ✓✓
    Fade stopped, LED off
    10:20 AM

    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

    Funktionsreferenzen

    ※ 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!