Arduino UNO Q - Schalter (EIN/AUS Umschalter)

Ein EIN/AUS-Schalter (auch Umschalter genannt) behält seine Position bei, wenn er umgelegt wird — im Gegensatz zu einem Druckknopf, der nur beim Halten aktiviert wird. In diesem Tutorial lernen Sie, wie Sie den Zustand eines EIN/AUS-Schalters mit Arduino UNO Q lesen, erkennen, wenn er umgeschaltet wird, und seinen Zustand remote über Telegram überprüfen.

Arduino UNO Q - Switch ON/OFF Toggle

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×EIN/AUS Quadratischer Schalter
1×(Alternativ) EIN/AUS Runder Schalter
1×(Alternativ) On/Off Switch Module
1×Drähte
1×(Optional) Schrumpfschlauch
1×(Optional) Lötkolben
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 den EIN/AUS-Schalter

Pinbelegung

Die meisten gängigen EIN/AUS-Schalter haben zwei Anschlüsse — es spielt keine Rolle, welcher Anschluss wo verbunden wird.

ON/OFF Switch Pinout

Funktionsweise

  • Verbinden Sie einen Anschluss mit GND und den anderen mit einem Arduino UNO Q Pin, der als INPUT_PULLUP konfiguriert ist
  • Schalter ist EIN → Pin liest LOW
  • Schalter ist AUS → Pin liest HIGH

※ Notiz:

Wie ein Druckknopf benötigt auch ein EIN/AUS-Schalter Entprellung. Die ezButton Bibliothek behandelt die Entprellung intern, daher ist kein zusätzlicher Code erforderlich.

Schaltplan

Arduino UNO Q ON/OFF Switch Wiring Diagram

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

Wir empfehlen, Drähte an die Schalterkontakte zu löten und die Verbindungen mit Schrumpfschlauch abzudecken, um eine zuverlässige und langlebige Verbindung zu gewährleisten.

MCU-Code — EIN/AUS-Schalter

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

Die ezButton Bibliothek behandelt sowohl die Entprellung als auch das Auslesen des Zustands. Verwenden Sie isPressed(), um den AUS→EIN-Übergang zu erkennen, und isReleased() für EIN→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-switch */ #include <ezButton.h> ezButton toggleSwitch(7); // create ezButton object attached to pin 7 void setup() { toggleSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { toggleSwitch.loop(); // MUST call the loop() function first if (toggleSwitch.isPressed()) { // switch just turned ON (OFF → ON transition) // TO DO: add your ON action here } if (toggleSwitch.isReleased()) { // switch just turned OFF (ON → OFF transition) // TO DO: add your OFF action here } int state = toggleSwitch.getState(); if (state == HIGH) { // switch is currently OFF // TO DO: continuous OFF action here } else { // switch is currently ON // TO DO: continuous ON action here } }

※ Notiz:

Zwei häufige Anwendungsfälle:

  • Ebenenbasiert: Überprüfen Sie getState() == LOW, um zu wissen, ob der Schalter derzeit EIN ist.
  • Kantenbasiert: Verwenden Sie isPressed() für AUS→EIN und isReleased() für EIN→AUS-Übergänge.

Schnelle Schritte

  • Erstes Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Getting Started with Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
  • Schalter verdrahten: Verbinden Sie einen Anschluss mit GND und den anderen mit Pin 7 gemäß dem Schaltplan.
  • Verbinden: Stecken Sie den Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer.
  • Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Neue App erstellen: Klicken Sie auf die Schaltfläche Create New App.
Create New App in Arduino App Lab on Arduino UNO Q
  • Geben Sie der App einen Namen, z. B.: DIYables_Switch
  • Klicken Sie auf Create, um zu bestätigen.
  • Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.
Arduino App Lab App folders and files on Arduino UNO Q
  • Finden Sie die sketch/sketch.ino Datei — hier werden Sie die MCU-Skizze einfügen.
  • 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 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
    • Hochladen: Klicken Sie auf die Schaltfläche Run in Arduino App Lab, um zu kompilieren und auf den STM32 hochzuladen.
    Click Run button in Arduino App Lab on Arduino UNO Q
    • Schalter umschalten zwischen EIN und AUS. Der Schalterzustand und die Übergänge werden im nächsten Abschnitt über den Bridge Monitor protokolliert.
    • Pro-Tipp: Fügen Sie Ihren eigenen Code in jeden Block ein — z. B. LED einschalten, wenn der Schalter EIN ist, und ausschalten, wenn AUS.

    Linux + MCU Bridge-Programmierung

    Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die 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 rohe serielle Anschlüsse.

    • Der Schalter ist mit der MCU (STM32) verbunden — an einem digitalen Eingangspin des STM32 verdrahtet. Der MCU liest und entprellt den Schalter mit der ezButton Bibliothek.
    • Die MPU kann den Schalter nicht direkt lesen — sie muss den Zustand vom MCU über Bridge.call() anfordern. Der MCU antwortet sofort.
    • Die MPU hat Wi-Fi — Da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie den Schalterzustand auf Anfrage ü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 niemals direkt

    Kurz gesagt: MPU fordert Schalterzustand an → MCU liest Pin → MCU meldet EIN oder AUS → MPU protokolliert oder leitet weiter.

    MCU-Skizze — Schalter 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-switch */ #include "Arduino_RouterBridge.h" #include <ezButton.h> ezButton toggleSwitch(7); void get_switch_state() { int state = toggleSwitch.getState(); if (state == HIGH) Monitor.println("Switch: OFF"); else Monitor.println("Switch: ON"); } void setup() { toggleSwitch.setDebounceTime(50); Bridge.begin(); Monitor.begin(); Bridge.provide("get_switch_state", get_switch_state); Monitor.println("ON/OFF Switch Bridge ready"); } void loop() { toggleSwitch.loop(); if (toggleSwitch.isPressed()) Monitor.println("Switch: OFF -> ON"); if (toggleSwitch.isReleased()) Monitor.println("Switch: ON -> OFF"); }

    Python-Skript (Arduino App Lab) — Schalterzustand von 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-switch */ from arduino.app_utils import * import time def loop(): while True: state = Bridge.call("get_switch_state") print(f"Switch state: {state}") 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 niemals direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code — diese sind vom 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 obige Bridge MCU-Skizze in sketch/sketch.ino ein, installieren Sie die Bibliotheken ezButton und Arduino_RouterBridge, und klicken Sie auf Run.
    • Python-Skript hinzufügen: Fügen Sie den obigen Python-Code in den Python-Tab derselben App ein.
    • App ausführen: Klicken Sie auf Run — die Python-Seite fragt den Schalterzustand alle 2 Sekunden ab.
    • Schalter umschalten zwischen EIN und AUS.
    • Konsole überprüfen: Öffnen Sie die Registerkarte Konsole → Unterregisterkarte MCU Monitor, um Übergänge 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
    ON/OFF Switch Bridge ready Switch: OFF -> ON Switch: ON -> OFF Switch: OFF -> ON

    Telegram-Integration

    Überprüfen Sie den aktuellen Schalterzustand remote von überall über Telegram.

    Wenn Sie noch keinen Telegram-Bot haben, lesen Sie How to Create a Telegram Bot, um Ihr Bot-Token vor dem Fortfahren zu erhalten.

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

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

    /* * 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-switch */ 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_switch_state") send_message(chat_id, f"Switch is currently: {state}") else: send_message(chat_id, "Commands:\n/state — check switch 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 der Schalter 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, falls noch nicht geschehen).
    • Telegram-Skript einfügen: Kopieren Sie den obigen Python-Code in den Python-Tab Ihrer App in Arduino App Lab.
    • Token setzen: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
    • App ausführen: Klicken Sie auf Run — der Bot beginnt, auf Telegram-Nachrichten zu warten.
    • Testen Sie es: Schalter auf EIN, dann senden Sie /state — bestätigen Sie, dass es „EIN" anzeigt.

    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] Switch is currently: ON [2026-04-29 12:03:20] Telegram: /state [2026-04-29 12:03:20] Switch 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 ✓✓
    Switch is currently: ON
    10:16 AM
    /state
    10:17 AM ✓✓
    Switch is currently: OFF
    10:18 AM

    OpenClaw-Integration

    Sie können den OpenClaw für dieses Tutorial anpassen, indem Sie auf die Anleitung im Tutorial Arduino Uno Q - OpenClaw verweisen.

    Anwendungs-/Projektideen

    • Telegram-gemeldeter Moduswechsel: Verwenden Sie einen physischen Schalter, um zwischen zwei Betriebsmodi umzuschalten — überprüfen Sie den aktiven Modus über Telegram
    • Monitor für Ferngeräte: Verdrahten Sie einen Schalter mit einem Relais, das ein Gerät steuert — überprüfen Sie den EIN/AUS-Status remote
    • Sicherheitstor: Schalter umschalten, um einen sensorgestützten Alarm zu aktivieren oder deaktivieren — Telegram meldet den aktuellen bewaffneten Zustand
    • Laborbank-Stromversorgung: Verwenden Sie den Schalter, um einen Satz von Ausgängen zu aktivieren/deaktivieren — Monitor von Telegram
    • Smart-Home-Auslöser: Schalter umschalten, um eine geplante Aufgabe zu starten oder zu stoppen, die auf der Linux-Seite der MPU ausgeführt wird

    Fordern Sie sich selbst heraus

    • Einfach: Fügen Sie eine LED zum Stromkreis hinzu, die aufleuchtet, wenn der Schalter EIN ist, und ausgeht, wenn EIN aus ist
    • Mittel: Erweitern Sie die Bridge-Skizze, um zu verfolgen, wie oft der Schalter umgeschaltet wurde, und machen Sie die Anzahl über get_toggle_count() verfügbar
    • Fortgeschritten: Erstellen Sie einen Telegram-Bot, der automatisch eine Nachricht sendet, wenn sich der Schalterzustand ändert — verwenden Sie eine Überwachungsschleife im Hintergrund in Python

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