Arduino UNO Q - Schaltfläche steuert LED

Dieses Tutorial zeigt, wie Sie eine Schaltfläche verwenden, um eine LED mit Arduino UNO Q zu steuern. Zwei Anwendungen werden behandelt:

Anwendung 1 — LED folgt dem Tastenzustand:

Anwendung 2 — LED schaltet sich bei jedem Tastendruck um:

Arduino UNO Q - Schaltfläche steuert LED

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×Breadboard-Schaltfläche mit Kappe
1×(Alternativ) Panelschalter
1×Taster-Modul
1×LED Kit
1×LED (red)
1×LED Module
1×220-Ohm-Widerstand
1×Breadboard
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.

Kaufhinweis: Um den Verdrahtungsprozess zu vereinfachen, empfehlen wir die Verwendung des LED Module, das mit einem eingebauten Widerstand geliefert wird.

Verdrahtungsschema

Arduino UNO Q Button LED Verdrahtungsschema

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Anwendung 1 — LED folgt dem Tastenzustand

MCU-Code

Der Arduino UNO Q hat zwei Prozessoren: den STM32 MCU (übernimmt die Echtzeit-Hardwaresteuerung) 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.

Wenn die Taste gedrückt wird (LOW), schaltet sich die LED ein. Wenn sie losgelassen wird (HIGH), schaltet sich die LED aus:

/* * 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-button-led */ #define BUTTON_PIN 7 // pin connected to the button #define LED_PIN 3 // pin connected to the LED void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); // set pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set pin to output mode } void loop() { int buttonState = digitalRead(BUTTON_PIN); // read button state if (buttonState == LOW) { digitalWrite(LED_PIN, HIGH); // button pressed → LED on } else { digitalWrite(LED_PIN, LOW); // button released → LED off } }

Schnelle Schritte

  • Erstes Mal mit Arduino UNO Q? Folgen Sie dem Erste Schritte mit Arduino UNO Q Tutorial, um Ihre Entwicklungsumgebung einzurichten, bevor Sie fortfahren.
  • Verdrahten Sie die Komponenten: Verbinden Sie die Taste mit Pin 7 und die LED (mit 220-Ohm-Widerstand) mit Pin 3 gemäß dem Verdrahtungsschema.
  • Verbindung herstellen: Schließen Sie den Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • 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, zum Beispiel: DIYables_ButtonLED
  • Klicken Sie auf Erstellen, um zu bestätigen.
  • Sie werden einen Satz von Ordnern und Dateien sehen, die in Ihrer neuen App generiert werden.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Finden Sie die Datei sketch/sketch.ino — hier werden Sie die MCU-Skizze einfügen.
  • Fügen Sie die Skizze ein: Kopieren Sie den oben aufgeführten MCU-Code und fügen Sie ihn in die Skizzendatei ein. Behalten Sie andere Dateien standardmäßig.
  • Hochladen: Klicken Sie auf die Schaltfläche "Ausführen" in Arduino App Lab, um den Code zu kompilieren und auf den STM32 hochzuladen.
  • Schaltfläche
    • Drücken Sie die Taste und halten Sie sie gedrückt — die LED sollte sich einschalten. Lassen Sie sie los — die LED sollte sich ausschalten.

    Anwendung 2 — LED schaltet sich bei jedem Tastendruck um

    MCU-Code — Ohne Entprellungskontakt

    Diese Version erkennt einen HIGH→LOW-Übergang und schaltet die LED um. Ohne Entprellungskontakt können schnelle Kontaktprellungen mehrere Umschaltungen pro Tastendruck verursachen:

    /* * 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-button-led */ #define BUTTON_PIN 7 // pin connected to the button #define LED_PIN 3 // pin connected to the LED int led_state = LOW; int button_state; int prev_button_state; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); // set pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; button_state = digitalRead(BUTTON_PIN); // read new state if (prev_button_state == HIGH && button_state == LOW) { // button just pressed — toggle LED led_state = !led_state; digitalWrite(LED_PIN, led_state); } }

    Schnelle Schritte

    • Verwenden Sie die gleiche Verdrahtung und App aus Anwendung 1.
    • Ersetzen Sie die Skizze durch den obigen Code und klicken Sie auf "Ausführen".
    • Drücken Sie die Taste mehrmals und lassen Sie sie los — die LED sollte sich jedes Mal umschalten.
    • Sie können ein unregelmäßiges Verhalten (doppeltes Umschalten) bemerken — dies ist auf Tastenprellung zurückzuführen.

    MCU-Code — Mit Entprellungskontakt (mit ezButton)

    Die ezButton-Bibliothek behandelt das Entprellen automatisch — jedes Tastendrücken löst genau ein isPressed()-Ereignis aus:

    /* * 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-button-led */ #include <ezButton.h> #define BUTTON_PIN 7 // pin connected to the button #define LED_PIN 3 // pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object attached to pin 7 int led_state = LOW; void setup() { pinMode(LED_PIN, OUTPUT); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { // toggle LED state led_state = !led_state; digitalWrite(LED_PIN, led_state); } }

    Schnelle Schritte

    • Verwenden Sie die gleiche Verdrahtung und App von oben.
    • Ersetzen Sie die Skizze durch die Entprellungsversion und klicken Sie auf "Ausführen".
    • 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 ezButton 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
    ezButton ArduinoGetStarted.com

    Button library supports debounce, pressed/released events and the press counting. It is easy to use with multiple buttons. The library can be used for push-button, momentary switches, toggle switch, magnetic contact switch (door sensor)... It is designed for not only beginners but also experienced users.

    1.0.6
    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
    • Drücken Sie die Taste mehrmals und lassen Sie sie los — die LED schaltet sich nun genau einmal pro Tastendruck um.

    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 Ihrer Arduino-Skizze aus). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek — niemals über rohe Serielle Anschlüsse.

    • Die Taste und die LED sind mit dem MCU (STM32) verbunden — die Taste ist mit einem digitalen Eingabe-Pin und die LED mit einem digitalen Ausgabe-Pin am STM32 verdrahtet. Der MCU handhabt die Umschaltungslogik und das Entprellen mit ezButton.
    • Der MPU kann die Taste nicht direkt lesen oder die LED steuern — er muss den LED-Zustand vom MCU über Bridge.call() anfragen.
    • Der MPU hat Wi-Fi — da der MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann er den LED-Zustand bei Bedarf über Telegram melden.
    • Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide()-Funktionen auf der MCU-Seite auf
    • ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie nie direkt

    Kurz gesagt: MPU fragt LED-Zustand an → MCU liest aktuellen Zustand → MCU meldet EIN oder AUS → MPU protokolliert oder leitet weiter.

    MCU-Skizze — Taste-LED-Umschaltung mit Bridge und Monitor-Ausgabe:

    /* * 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-button-led */ #include "Arduino_RouterBridge.h" #include <ezButton.h> #define BUTTON_PIN 7 #define LED_PIN 3 ezButton button(BUTTON_PIN); int led_state = LOW; void get_led_state() { Monitor.println(led_state == HIGH ? "LED: ON" : "LED: OFF"); } void setup() { pinMode(LED_PIN, OUTPUT); button.setDebounceTime(50); Bridge.begin(); Monitor.begin(); Bridge.provide("get_led_state", get_led_state); Monitor.println("Button-LED Bridge ready"); } void loop() { button.loop(); if (button.isPressed()) { led_state = !led_state; digitalWrite(LED_PIN, led_state); Monitor.println(led_state == HIGH ? "Button pressed → LED ON" : "Button pressed → LED OFF"); } }

    Python-Skript (Arduino App Lab) — LED-Zustand vom Linux abrufen:

    /* * 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-button-led */ from arduino.app_utils import * import time def loop(): while True: state = Bridge.call("get_led_state") print(f"LED state: {state}") time.sleep(3) 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 niemals direkt /dev/ttyHS1 (unter Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code — diese sind durch den Arduino Router reserviert und der Zugriff darauf bricht die Bridge.

    Schnelle Schritte

    • MCU-Skizze hochladen: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die Bridge MCU-Skizze oben in sketch/sketch.ino ein, installieren Sie die Bibliotheken ezButton und Arduino_RouterBridge und klicken Sie auf "Ausführen".
    • Python-Skript hinzufügen: Fügen Sie den oben aufgeführten Python-Code in die Python-Registerkarte derselben App ein.
    • App ausführen: Klicken Sie auf "Ausführen" — die Python-Seite fragt den LED-Zustand alle 3 Sekunden ab.
    • Drücken Sie die Taste mehrmals, um die LED umzuschalten.
    • Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte "Konsole" → Unterregisterkarte "MCU Monitor", um Umschaltereignisse in Echtzeit protokolliert zu sehen.

    App Lab-Konsolenausgabe

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    Button-LED Bridge ready Button pressed → LED ON Button pressed → LED OFF Button pressed → LED ON

    Telegram-Integration

    Überprüfen Sie den aktuellen LED-Zustand aus der Ferne von überall über Telegram.

    Wenn Sie noch keinen Telegram-Bot haben, siehe Wie man einen Telegram-Bot erstellt, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.

    MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits auf dem STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.

    Python-Skript (Arduino App Lab) — Telegram-Bot für LED-Zustand:

    /* * 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-button-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 == "/state": state = Bridge.call("get_led_state") send_message(chat_id, f"LED is currently: {state}") else: send_message(chat_id, "Commands:\n/state — check current LED state (ON or OFF)") 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 /state, um zu überprüfen, ob die LED derzeit EIN oder AUS ist.

    Schnelle Schritte

    • MCU-Skizze hochladen: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, wenn noch nicht geschehen).
    • Telegram-Skript einfügen: Kopieren Sie den oben aufgeführten Python-Code in die Python-Registerkarte Ihrer App in Arduino App Lab.
    • Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
    • App ausführen: Klicken Sie auf "Ausführen" — der Bot beginnt, auf Telegram-Nachrichten zu warten.
    • Testen Sie es: Drücken Sie die Taste, um die LED umzuschalten, und senden Sie dann /state — bestätigen Sie, dass der Zustand übereinstimmt.

    App Lab-Konsolenausgabe

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /state [2026-04-29 12:00:01] LED is currently: ON [2026-04-29 12:03:20] Telegram: /state [2026-04-29 12:03:20] LED is currently: 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
    /state
    10:15 AM ✓✓
    LED is currently: ON
    10:16 AM
    /state
    10:17 AM ✓✓
    LED is currently: OFF
    10:18 AM

    OpenClaw-Integration

    Sie können den OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung auf dem Arduino Uno Q - OpenClaw Tutorial folgen

    Anwendungs-/Projektideen

    • Telegram-LED-Monitor: Drücken Sie eine physische Taste, um eine Lampe umzuschalten, und überprüfen Sie den Zustand aus der Ferne über Telegram
    • Physischer Alarm-Schalter: Verwenden Sie eine Taste, um einen Alarm zu aktivieren/deaktivieren, und bestätigen Sie den Zustand von überall
    • Präsentationssteuerelement: Umschalten Sie eine Anzeige oder Benachrichtigungslicht mit einer Taste, während Sie den Zustand aus der Ferne überprüfen
    • Nachtmodus-Schalter: Drücken Sie eine Taste, um den Nachtmodus auf Geräten umzuschalten; überwachen Sie über Telegram
    • Zugangsbestätigung: Drücken Sie eine Taste, um den Eintritt zu bestätigen; überprüfen Sie den LED-/Gatter-Zustand über Telegram

    Fordern Sie sich selbst heraus

    • Einfach: Fügen Sie eine zweite LED hinzu, die sich ausschaltet, wenn sich die erste LED einschaltet (wechselnde LEDs)
    • Mittel: Erweitern Sie die Bridge-Skizze, um die Gesamtzahl der Tastendrücke zu zählen, und machen Sie die Anzahl als get_press_count() zugänglich
    • Fortgeschritten: Bauen Sie einen Telegram-Bot, der automatisch eine Benachrichtigung sendet, wenn sich der LED-Zustand ändert — verwenden Sie eine Überwachungsschleife in Python, die den Zustand abruft und mit dem vorherigen Wert vergleicht

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