Arduino UNO Q - Potentiomètre

Un potentiomètre (aussi appelé capteur d'angle rotatif ou résistance variable) vous permet d'ajuster manuellement une valeur en tournant un bouton. Les utilisations courantes incluent le contrôle du volume, de la luminosité et de la vitesse du moteur. Dans ce tutoriel, vous apprendrez à connecter un potentiomètre à Arduino UNO Q, à lire sa valeur ADC, à la convertir en tension et à vérifier les lectures à distance via Telegram.

※ Note:

Différence ADC de l'Arduino UNO Q : Le MCU STM32 de l'Arduino UNO Q dispose d'un ADC 12 bits (valeurs 0–4095), comparé à l'ADC 10 bits (0–1023) de nombreuses autres cartes Arduino. La tension de référence est de 3,3V. Utilisez toujours ces valeurs lors de la conversion des lectures ADC.

Arduino UNO Q et Potentiomètre

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Potentiometer
1×Alternativement: 10k Ohm Trimmer Potentiometer
1×Alternativement: Potentiometer Kit
1×Alternativement: Potentiometer Module with Knob
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Potentiomètre

Brochage

Un potentiomètre a trois broches :

  • Broche GND : connectez à GND
  • Broche VCC : connectez à 3,3V (sur Arduino UNO Q, le MCU fonctionne à 3,3V)
  • Broche de sortie : connectez à une broche d'entrée analogique de l'Arduino UNO Q
Brochage du Potentiomètre

※ Note:

Les broches GND et VCC peuvent être inversées — cela inverse le sens de la sortie.

Comment Ça Fonctionne

La rotation du bouton change la résistance entre la broche de sortie et GND/VCC, ce qui change la tension de sortie proportionnellement :

  • À 0° (côté GND) : sortie = 0V
  • À l'angle maximum (côté VCC) : sortie = 3,3V (sur Arduino UNO Q)
  • Entre les deux : sortie = (angle / ANGLE_MAX) × 3,3V
Fonctionnement du Potentiomètre Rotatif

ADC de l'Arduino UNO Q

Le MCU Arduino UNO Q (STM32U585) lit la tension de sortie via un ADC 12 bits — produisant des valeurs de 0 à 4095 :

Source Plage
Angle de rotation du bouton 0° à ANGLE_MAX
Tension de sortie 0V à 3,3V
Valeur ADC lue par Arduino UNO Q 0 à 4095
Valeur de sortie mappée VALUE_MIN à VALUE_MAX

Conversions Courantes

  • ADC vers tension :
voltage = floatMap(adc_value, 0, 4095, 0, 3.3);
  • ADC vers un niveau contrôlable (ex. luminosité 0–255) :
brightness = map(adc_value, 0, 4095, 0, 255);
  • ADC vers angle (si ANGLE_MAX est connu) :
angle = map(adc_value, 0, 4095, 0, ANGLE_MAX);

※ Note:

map() renvoie un entier. Pour les conversions en virgule flottante, utilisez floatMap() comme indiqué dans le code ci-dessous.

Schéma de Câblage

Schéma de Câblage du Potentiomètre Arduino UNO Q

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code MCU — Potentiomètre

L'Arduino UNO Q possède deux processeurs : le MCU STM32 (gère le contrôle matériel en temps réel) et le MPU Qualcomm (exécute Debian Linux). Dans cette section, seul le MCU STM32 est programmé — le côté Linux reste inactif. Une section ultérieure montrera comment les deux processeurs fonctionnent ensemble.

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Étapes Rapides

  • Première fois avec Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
  • Câbler le potentiomètre : Connectez GND à GND, VCC à 3,3V et la broche de sortie à A0 selon le schéma de câblage.
  • Connecter : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Create New App.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : DIYables_Potentiometer
  • Cliquez sur Create pour confirmer.
  • Vous verrez un ensemble de dossiers et de fichiers générés dans votre nouvelle application.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Trouvez le fichier sketch/sketch.ino — c'est là que vous collerez le sketch MCU.
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans le fichier sketch. Laissez les autres fichiers par défaut.
    • 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
    • Téléverser : Cliquez sur le bouton Run dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquer sur Run dans Arduino App Lab sur Arduino UNO Q
    • Tourner le bouton du potentiomètre — la valeur ADC et la tension sont lues toutes les 500 ms. Les résultats sont visibles via le Bridge Monitor dans la section suivante.
    • Conseil : Remplacez le commentaire TO DO par map(adc_value, 0, 4095, 0, 255) pour piloter la luminosité d'une LED via PWM.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q possède deux processeurs qui fonctionnent ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre sketch Arduino). Ils communiquent en utilisant RPC via la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.

    • Le potentiomètre est connecté au MCU (STM32) — câblé à une broche d'entrée analogique (A0) sur le STM32. Le MCU lit les valeurs ADC et les convertit en tension.
    • Le MPU ne peut pas lire le potentiomètre directement — il doit demander la lecture au MCU via Bridge.call(). Le MCU répond avec la valeur ADC et la tension actuelles.
    • Le MPU dispose du Wi-Fi — parce que le MPU exécute Debian Linux complet avec Wi-Fi, il peut signaler la lecture du potentiomètre via Telegram à la demande.
    • Communication : Bridge.call() côté Linux invoque les fonctions Bridge.provide() côté MCU
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par l'Arduino Router — ne les ouvrez jamais directement

    En résumé : Le MPU demande la lecture du potentiomètre → le MCU lit l'ADC → le MCU rapporte la valeur et la tension → le MPU enregistre ou transmet.

    Sketch MCU — potentiomètre avec Bridge et sortie Monitor :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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() {}

    Script Python (Arduino App Lab) — interroger le potentiomètre depuis Linux :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)
    • Remarque : Assurez-vous que Bridge.begin() est appelé dans le sketch MCU et que le sketch est téléversé avant d'exécuter le script Python côté Linux.
    • ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sur Linux) ou n'utilisez pas Serial1 (sur MCU) dans votre code — ils sont réservés par l'Arduino Router et y accéder cassera le Bridge.

    Étapes Rapides

    • Téléverser le sketch MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le sketch MCU Bridge ci-dessus dans sketch/sketch.ino, installez la bibliothèque Arduino_RouterBridge, et cliquez sur Run.
    • Ajouter le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
    • Exécuter l'application : Cliquez sur Run — le côté Python interroge le potentiomètre chaque seconde.
    • Tourner le bouton du potentiomètre et observez la valeur ADC et la tension se mettre à jour en temps réel.
    • Vérifier la console : Ouvrez l'onglet Console → le sous-onglet MCU Monitor.

    Sortie Console d'App Lab

    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

    Intégration Telegram

    Lisez la valeur actuelle du potentiomètre à distance depuis n'importe où via Telegram.

    Si vous n'avez pas encore de bot Telegram, consultez Arduino UNO Q - Bot Telegram pour obtenir votre token de bot avant de continuer.

    Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente — aucune modification n'est nécessaire. Assurez-vous qu'il est déjà téléversé et en cours d'exécution sur le STM32 avant de continuer.

    Script Python (Arduino App Lab) — bot Telegram pour la lecture du potentiomètre :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
    • Envoyez /read pour déclencher une lecture du potentiomètre — le résultat apparaît dans le MCU Monitor.

    Étapes Rapides

    • Téléverser le sketch MCU : Utilisez le sketch MCU Bridge de la section précédente (téléversez-le d'abord s'il ne l'est pas déjà).
    • Coller le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
    • Définir votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre vrai token de bot.
    • Exécuter l'application : Cliquez sur Run — le bot commence à écouter les messages Telegram.
    • Tester : Tournez le potentiomètre, envoyez /read — le bot répond avec la valeur ADC et la tension.

    Sortie Console d'App Lab

    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

    Intégration d'OpenClaw

    Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

    Idées d'Applications/Projets

    • Bouton de volume à distance : Utilisez un potentiomètre pour régler le volume audio — lisez le niveau à distance via Telegram
    • Régleur de niveau de lumière : Utilisez un potentiomètre pour définir une cible de luminosité LED — vérifiez le niveau défini via Telegram
    • Sélecteur de vitesse moteur : Mappez la valeur du potentiomètre sur la vitesse du moteur — confirmez la vitesse via Telegram
    • Configurateur de seuil : Utilisez le potentiomètre pour définir un seuil de capteur (ex. alarme de température) vérifiable à distance
    • Outil de calibration : Utilisez le potentiomètre pour ajuster un décalage de capteur — vérifiez la valeur de calibration via Telegram

    Défiez-Vous

    • Facile : Ajoutez une deuxième sortie : mappez l'ADC vers un niveau 0–100% et affichez-le à côté de la tension
    • Moyen : Exposez la valeur du potentiomètre en pourcentage (0–100) via un callback Bridge get_level()
    • Avancé : Créez un bot Telegram qui surveille continuellement le potentiomètre et envoie une notification lorsque la valeur change de plus de 10% par rapport à la dernière lecture

    Références de Fonctions

    ※ NOS MESSAGES

    • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !