Arduino UNO Q - Bouton
Le bouton poussoir est l'un des composants les plus fondamentaux dans les projets Arduino. Ce tutoriel vous apprend tout ce dont vous avez besoin pour utiliser correctement un bouton avec Arduino UNO Q — de la lecture de son état à la détection des événements d'appui et de relâchement, et même la vérification de l'état du bouton à distance via Telegram.
※ Note:
Avant de commencer, voici deux erreurs courantes pour les débutants à surveiller :
- Problème d'entrée flottante :
- Symptôme : La broche du bouton lit des valeurs imprévisibles même quand le bouton n'est pas appuyé.
- Cause : Aucune résistance de tirage haute ou basse n'est connectée.
- Solution : Utilisez le mode INPUT_PULLUP dans le code Arduino — cela active la résistance de tirage haute interne et ne nécessite aucun composant externe.
- Phénomène de chattering :
- Symptôme : Un appui physique s'enregistre comme plusieurs événements d'appui.
- Cause : Le rebond mécanique provoque des transitions HIGH/LOW rapides.
- Solution : Implémentez l'anti-rebond. Voir le tutoriel Arduino UNO Q - Anti-rebond du Bouton.
Le chattering n'affecte que les applications qui ont besoin d'un comptage précis des appuis. Pour un simple contrôle ALLUMÉ/ÉTEINT, cela n'a généralement pas d'importance.

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos du Bouton
Un bouton poussoir (aussi appelé bouton tactile ou interrupteur momentané) est fermé pendant qu'il est maintenu appuyé et s'ouvre quand il est relâché. Les types courants comprennent :
- Boutons pour circuit imprimé — peuvent être utilisés sur une plaque d'essai
- Boutons pour panneau — pour le montage dans des boîtiers

Brochage
Les boutons pour circuit imprimé ont généralement quatre broches — connectées par paires en interne. Seules deux broches (pas la paire connectée en interne) sont nécessaires.


Les boutons pour panneau ont deux broches :

Fonctionnement
- Quand le bouton n'est pas appuyé : la broche A et la broche B sont déconnectées
- Quand le bouton est appuyé : la broche A et la broche B sont connectées

Connexion du Bouton et Logique
Connectez une broche du bouton à GND et l'autre à une broche Arduino UNO Q configurée en INPUT_PULLUP :
- Bouton non appuyé → la broche lit HIGH
- Bouton appuyé → la broche lit LOW
※ Note:
Utiliser INPUT_PULLUP active la résistance de tirage haute interne — aucune résistance externe n'est nécessaire. C'est l'approche recommandée pour les débutants.
Schéma de Câblage
- Câblage pour bouton sur circuit imprimé :

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
- Câblage pour bouton sur panneau :

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Comment Programmer un Bouton
Configurez la broche du bouton en entrée avec tirage haute interne :
Lisez l'état du bouton :
※ Note:
Deux cas d'utilisation courants :
- Basé sur le niveau : Si HIGH → faire action A ; si LOW → faire action B (ex. allumer la LED pendant qu'il est maintenu)
- Basé sur le front : Quand l'état passe de HIGH à LOW → événement d'appui ; de LOW à HIGH → événement de relâchement (ex. basculer la LED à chaque appui)
Code MCU — Lecture de l'État du Bouton
L'Arduino UNO Q dispose 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 programme lit l'état du bouton et rend le résultat disponible pour utilisation (ex. contrôler une LED ou rapporter via Bridge) :
Étapes Rapides
- Première utilisation de l'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 bouton : Connectez une broche du bouton à GND et l'autre à la broche 7 selon le schéma de câblage.
- Connecter : Branchez l'Arduino UNO Q sur 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 Créer une nouvelle application.

- Donnez un nom à l'application, par exemple : DIYables_Button
- Cliquez sur Créer pour confirmer.
- Un ensemble de dossiers et de fichiers sera généré dans votre nouvelle application.

- Trouvez le fichier sketch/sketch.ino — c'est là que vous collerez le programme MCU.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser sur le STM32.

- Appuyez sur le bouton : Appuyez et maintenez le bouton, puis relâchez-le.
- Voir l'état : Pour voir la sortie de l'état du bouton en temps réel, voir la section Bridge ci-dessous — elle ajoute une fonction get_button_state() et affiche l'état via la console du Moniteur MCU.
- Conseil : Utilisez button_state == LOW pour vérifier si le bouton est appuyé (car INPUT_PULLUP inverse la logique).
Code MCU — Détection des Événements d'Appui et de Relâchement
Pour détecter les événements individuels d'appui et de relâchement, suivez les transitions d'état entre HIGH et LOW :
- Fonctionnement : Détecte une transition HIGH→LOW (bouton appuyé) et une transition LOW→HIGH (bouton relâché).
- Conseil : Ajoutez du code d'action dans les blocs if — par exemple, basculer une LED à l'appui, ou enregistrer un événement au relâchement.
※ Note:
- Appuyer une fois peut déclencher plusieurs événements à cause du rebond mécanique (chattering). Voir le Arduino UNO Q - Anti-rebond du Bouton pour une solution propre.
- Pour les projets multi-boutons, utilisez la bibliothèque ezButton — elle gère la tirage haute, l'anti-rebond et la détection de front automatiquement. En savoir plus sur ezButton ici.
Programmation Bridge Linux + MCU
L'Arduino UNO Q dispose de deux processeurs fonctionnant ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre programme Arduino). Ils communiquent via RPC grâce à la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.
- Le bouton est connecté au MCU (STM32) — câblé à une broche d'entrée numérique du STM32. Le MCU lit l'état du bouton en utilisant digitalRead().
- Le MPU ne peut pas lire le bouton directement — il doit demander l'état actuel au MCU via Bridge.call(). Le MCU exécute la fonction Bridge.provide() enregistrée et répond.
- Le MPU dispose du Wi-Fi — car le MPU exécute Debian Linux complet avec Wi-Fi, il peut vérifier l'état du bouton à la demande et le transmettre via Telegram.
- Communication : Bridge.call() côté Linux invoque Bridge.provide() côté MCU
- ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement
En résumé : Le MPU demande l'état du bouton → le MCU lit la broche → le MCU rapporte le résultat → le MPU enregistre ou transmet.
Programme MCU — bouton avec Bridge et sortie du Moniteur :
Script Python (Arduino App Lab) — interrogation de l'état du bouton depuis Linux :
- Remarque : Assurez-vous que Bridge.begin() est appelé dans le programme MCU et que le programme est téléversé avant d'exécuter le script Python côté Linux.
- ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sous Linux) ou Serial1 (sur MCU) dans votre code — ces ports sont réservés par le routeur Arduino et y accéder brisera le Bridge.
Étapes Rapides
- Téléversez le programme MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le programme MCU Bridge ci-dessus dans sketch/sketch.ino, conservez les bibliothèques par défaut, puis cliquez sur Exécuter.
- Ajoutez le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
- Exécutez l'application : Cliquez sur Exécuter — le côté Python interroge l'état du bouton toutes les 0,5 secondes.
- Appuyez sur le bouton : Appuyez et maintenez, puis relâchez.
- Vérifiez la console : Ouvrez l'onglet Console → sous-onglet Moniteur MCU pour voir les événements d'appui/relâchement en temps réel.
- Conseil : Ouvrez également le sous-onglet Console Python pour voir les valeurs d'état interrogées.
Sortie de la Console App Lab
Intégration Telegram
Vous pouvez vérifier si le bouton est actuellement appuyé — depuis n'importe où dans le monde — en envoyant un message Telegram à votre Arduino UNO Q.
Si vous n'avez pas encore de bot Telegram, consultez Arduino UNO Q - Bot Telegram pour obtenir votre token de bot avant de continuer.
Cette section couvre :
- Exécuter un script Python côté Linux de l'Arduino UNO Q pour écouter les messages Telegram
- Interroger l'état du bouton depuis le MCU via Bridge.call() à la demande
- Renvoyer l'état du bouton à Telegram comme réponse
Programme MCU : Conservez le même programme MCU de la section Bridge précédente — aucune modification 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 l'état du bouton :
- Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
- Envoyez /state pour vérifier si le bouton est actuellement appuyé.
Étapes Rapides
- Téléversez le programme MCU : Utilisez le programme MCU Bridge de la section précédente (téléversez-le d'abord s'il ne l'est pas déjà).
- Collez le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
- Définissez votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre vrai token de bot.
- Exécutez l'application : Cliquez sur Exécuter — le bot commence à écouter les messages Telegram immédiatement.
- Testez : Ouvrez Telegram, trouvez votre bot, appuyez sur le bouton physique de l'Arduino UNO Q, puis envoyez /state pour voir s'il indique appuyé.
- Conseil : Combinez avec une LED — allumez-la quand le bouton est détecté comme appuyé via Bridge.