Arduino UNO Q - Potentiometer

Ein Potentiometer (auch als Drehwinkelgeber oder variabler Widerstand bezeichnet) ermöglicht es Ihnen, einen Wert manuell anzupassen, indem Sie einen Knopf drehen. Häufige Verwendungen sind die Kontrolle von Lautstärke, Helligkeit und Motorgeschwindigkeit. In diesem Tutorial lernen Sie, wie Sie einen Potentiometer an Arduino UNO Q anschließen, seinen ADC-Wert auslesen, ihn in Spannung umwandeln und die Messwerte remote über Telegram überprüfen.

※ Notiz:

Arduino UNO Q ADC-Unterschied: Die STM32 MCU auf Arduino UNO Q hat einen 12-Bit-ADC (Werte 0–4095), im Vergleich zum 10-Bit-ADC (0–1023) bei vielen anderen Arduino-Boards. Die Referenzspannung beträgt 3,3 V. Verwenden Sie diese Werte immer beim Konvertieren von ADC-Messwerten.

Arduino UNO Q und Potentiometer

Erforderliche Hardware

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Potentiometer
1×Alternativ: 10k Ohm Trimmer Potentiometer
1×(Alternativ) Potentiometer Kit
1×(Alternativ) Potentiometer Module with Knob
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.

Über Potentiometer

Pinbelegung

Ein Potentiometer hat drei Pins:

  • GND-Pin: mit GND verbinden
  • VCC-Pin: mit 3,3 V verbinden (auf Arduino UNO Q arbeitet die MCU mit 3,3 V)
  • Ausgabe-Pin: mit einem analogen Eingabe-Pin auf Arduino UNO Q verbinden
Potentiometer Pinbelegung

※ Notiz:

Die GND- und VCC-Pins können getauscht werden — dies kehrt die Richtung der Ausgabe um.

Funktionsweise

Das Drehen des Knopfes ändert den Widerstand zwischen dem Ausgabe-Pin und GND/VCC, was die Ausgangsspannung proportional ändert:

  • Bei 0° (GND-Seite): Ausgabe = 0 V
  • Bei maximalem Winkel (VCC-Seite): Ausgabe = 3,3 V (auf Arduino UNO Q)
  • Dazwischen: Ausgabe = (Winkel / ANGLE_MAX) × 3,3 V
Funktionsweise des Potentiometers

Arduino UNO Q ADC

Die Arduino UNO Q MCU (STM32U585) liest die Ausgangsspannung durch einen 12-Bit-ADC — Werte von 0 bis 4095:

Quelle Bereich
Drehwinkel des Knopfes 0° bis ANGLE_MAX
Ausgangsspannung 0 V bis 3,3 V
ADC-Wert von Arduino UNO Q 0 bis 4095
Zugeordneter Ausgabewert VALUE_MIN bis VALUE_MAX

Häufige Konvertierungen

  • ADC zu Spannung:
voltage = floatMap(adc_value, 0, 4095, 0, 3.3);
  • ADC zu einem steuerbaren Pegel (z. B. Helligkeit 0–255):
brightness = map(adc_value, 0, 4095, 0, 255);
  • ADC zu Winkel (wenn ANGLE_MAX bekannt ist):
angle = map(adc_value, 0, 4095, 0, ANGLE_MAX);

※ Notiz:

map() gibt eine ganze Zahl zurück. Für Gleitkomma-Konvertierungen verwenden Sie floatMap() wie im Code unten gezeigt.

Schaltplan

Arduino UNO Q Potentiometer Schaltplan

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

MCU-Code — Potentiometer

Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (für echtzeitnahe Hardwaresteuerung) und die Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur der STM32 MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.

/* * 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-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } void setup() { // nothing to set up } void loop() { // Read ADC value from pin A0 (12-bit: 0-4095 on Arduino UNO Q) int adc_value = analogRead(A0); // Convert ADC value to voltage (3.3V reference on Arduino UNO Q) float voltage = floatMap(adc_value, 0, 4095, 0, 3.3); // TO DO: use adc_value or voltage in your logic here // Example: map to a 0-100 scale // int level = map(adc_value, 0, 4095, 0, 100); delay(500); }

Schnelle Schritte

  • Erstes Mal mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
  • Verdrahten Sie den Potentiometer: Verbinden Sie GND mit GND, VCC mit 3,3 V und den Ausgabe-Pin mit A0 gemäß dem Schaltplan.
  • Verbinden: Stecken Sie die Arduino UNO Q mit einem USB-C-Kabel in Ihren Computer ein.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihre Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App im Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, z. B.: DIYables_Potentiometer
  • 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
  • Finden Sie die Datei sketch/sketch.ino — hier fügen Sie die MCU-Skizze ein.
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizzendatei ein. Behalten Sie andere Dateien wie in der Standardeinstellung.
    • 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
    • Upload: Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab, um zu kompilieren und auf den STM32 hochzuladen.
    Klicken Sie auf die Ausführungsschaltfläche im Arduino App Lab auf Arduino UNO Q
    • Drehen Sie den Potentiometer-Knopf — der ADC-Wert und die Spannung werden alle 500 ms gelesen. Die Ergebnisse sind im nächsten Abschnitt über den Bridge Monitor sichtbar.
    • Pro-Tipp: Ersetzen Sie den TO DO-Kommentar mit map(adc_value, 0, 4095, 0, 255), um LED-Helligkeit via PWM zu steuern.

    Linux + MCU Bridge-Programmierung

    Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, läuft Debian Linux) und die MCU (STM32, läuft Zephyr OS mit Ihrer Arduino-Skizze). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek — niemals über rohe serielle Ports.

    • Der Potentiometer ist an der MCU (STM32) angeschlossen — verdrahtet mit einem analogen Eingabe-Pin (A0) auf dem STM32. Der MCU liest ADC-Werte und konvertiert sie in Spannung.
    • Die MPU kann den Potentiometer nicht direkt auslesen — sie muss die Lesung vom MCU über Bridge.call() anfordern. Der MCU antwortet mit dem aktuellen ADC-Wert und der Spannung.
    • Die MPU hat Wi-Fi — da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie den Potentiometer-Messwert auf Anforderung ü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 Potentiometer-Messwert an → MCU liest ADC → MCU meldet Wert und Spannung → MPU protokolliert oder leitet weiter.

    MCU-Skizze — Potentiometer 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-potentiometer */ #include "Arduino_RouterBridge.h" float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } void get_potentiometer() { int adc_value = analogRead(A0); float voltage = floatMap(adc_value, 0, 4095, 0, 3.3); Monitor.print("ADC: "); Monitor.print(adc_value); Monitor.print(", Voltage: "); Monitor.println(voltage); } void setup() { Bridge.begin(); Monitor.begin(); Bridge.provide("get_potentiometer", get_potentiometer); Monitor.println("Potentiometer Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) — Abfrage des Potentiometers 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-potentiometer */ from arduino.app_utils import * import time def loop(): while True: Bridge.call("get_potentiometer") time.sleep(1) App.run(user_loop=loop)
    • Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen ist, 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 auf sie beeinträchtigt die Bridge.

    Schnelle Schritte

    • Laden Sie die MCU-Skizze hoch: Ö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 Bibliothek Arduino_RouterBridge, und klicken Sie auf Ausführen.
    • Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben in die Python-Registerkarte der gleichen App ein.
    • Führen Sie die App aus: Klicken Sie auf Ausführen — die Python-Seite fragt den Potentiometer alle Sekunden ab.
    • Drehen Sie den Potentiometer-Knopf und beobachten Sie, wie der ADC-Wert und die Spannung sich in Echtzeit aktualisieren.
    • Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → Unterregisterkarte MCU Monitor.

    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
    Potentiometer Bridge ready ADC: 0, Voltage: 0.00 ADC: 820, Voltage: 0.66 ADC: 2048, Voltage: 1.65 ADC: 3275, Voltage: 2.64 ADC: 4095, Voltage: 3.30

    Telegram-Integration

    Lesen Sie den aktuellen Potentiometer-Wert remote von überall über Telegram.

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

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

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

    /* * 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-potentiometer */ 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 == "/read": reading = Bridge.call("get_potentiometer") send_message(chat_id, reading) else: send_message(chat_id, "Commands:\n/read — read potentiometer ADC value and voltage") time.sleep(1) App.run(user_loop=loop)
    • Hinweis: Ersetzen Sie YOUR_BOT_TOKEN mit dem von @BotFather auf Telegram erhaltenen Token.
    • Senden Sie /read, um eine Potentiometer-Messung auszulösen — das Ergebnis wird im MCU Monitor angezeigt.

    Schnelle Schritte

    • Laden Sie die MCU-Skizze hoch: Verwenden Sie die Bridge-MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls nicht bereits geschehen).
    • Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App im Arduino App Lab.
    • Stellen Sie Ihren Token ein: Ersetzen Sie YOUR_BOT_TOKEN im Skript mit Ihrem aktuellen Bot-Token.
    • Führen Sie die App aus: Klicken Sie auf Ausführen — der Bot beginnt, auf Telegram-Nachrichten zu lauschen.
    • Testen Sie es: Drehen Sie den Potentiometer, senden Sie /read — der Bot antwortet mit dem ADC-Wert und der Spannung.

    App Lab Konsolenausgabe

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /read [2026-04-29 12:00:01] ADC: 1234, Voltage: 1.00 [2026-04-29 12:03:20] Telegram: /read [2026-04-29 12:03:20] ADC: 3072, Voltage: 2.48
    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
    /read
    10:15 AM ✓✓
    ADC: 1234, Voltage: 1.00
    10:16 AM

    OpenClaw-Integration

    Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung im Arduino Uno Q - OpenClaw Tutorial lesen.

    Anwendungs-/Projektideen

    • Ferngesteuerter Lautstärkeregler: Verwenden Sie einen Potentiometer zur Festlegung der Audiolautstärke — lesen Sie die Stufe remote über Telegram
    • Lichtstärke-Einsteller: Verwenden Sie einen Potentiometer zur Festlegung der LED-Helligkeitszielwert — überprüfen Sie die eingestellte Stufe über Telegram
    • Motorgeschwindigkeit-Wähler: Ordnen Sie den Potentiometer-Wert der Motorgeschwindigkeit zu — bestätigen Sie Geschwindigkeit über Telegram
    • Schwellenwert-Konfigurator: Verwenden Sie den Potentiometer zur Festlegung eines Sensor-Schwellenwerts (z. B. Temperaturalarm) — remote überprüfbar
    • Kalibrierungswerkzeug: Verwenden Sie den Potentiometer zur Justierung eines Sensor-Versatzes — überprüfen Sie den Kalibrierungswert über Telegram

    Fordern Sie sich selbst heraus

    • Einfach: Fügen Sie eine zweite Ausgabe hinzu: ordnen Sie den ADC einem 0–100%-Pegel zu und drucken Sie ihn neben der Spannung
    • Mittel: Machen Sie den Potentiometer-Wert als Prozentsatz (0–100) über einen get_level() Bridge-Callback verfügbar
    • Fortgeschritten: Erstellen Sie einen Telegram-Bot, der den Potentiometer kontinuierlich überwacht und eine Benachrichtigung sendet, wenn sich der Wert um mehr als 10% vom letzten Messwert ändert

    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!