Arduino UNO Q - Anti-rebond du Bouton
Lors de la programmation de l'Arduino UNO Q pour détecter un appui sur un bouton, un seul appui peut être détecté plusieurs fois. Cela se produit parce que les contacts mécaniques rebondissent rapidement entre LOW et HIGH — un phénomène appelé chattering (rebond). Ce tutoriel vous montre comment le corriger grâce à l'anti-rebond (debouncing).


Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos du Bouton
Apprenez-en plus sur les boutons (brochage, câblage, fonctionnement) dans le Arduino UNO Q - Bouton.
Schéma de Câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Code MCU — Sans Anti-rebond (Pour Comparaison)
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.
Voici la version sans anti-rebond du Arduino UNO Q - Bouton. Remarquez comment un seul appui peut enregistrer plusieurs événements :
É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_ButtonDebounce
- 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.

- Appuyez une fois sur le bouton puis relâchez-le — observez que plusieurs événements peuvent être enregistrés (visible via le Moniteur Bridge dans la section suivante).
- Remarque : C'est l'effet de chattering — la section suivante y remédie.
Code MCU — Avec Anti-rebond (Utilisant millis)
Cette version utilise millis() pour attendre que le signal se stabilise avant de le traiter comme un véritable événement. Seuls les changements d'état qui persistent plus de DEBOUNCE_TIME millisecondes sont acceptés :
- Fonctionnement : Si l'état du bouton change rapidement (rebond), le timer se réinitialise à chaque fois. Ce n'est que lorsque l'état est stable pendant 50ms qu'il est traité comme un véritable appui ou relâchement.
- Conseil : Si votre bouton affiche toujours plusieurs événements, essayez d'augmenter DEBOUNCE_TIME à 75 ou 100.
※ Note:
Le DEBOUNCE_TIME optimal dépend de la qualité du bouton et de l'application. 50ms est une valeur par défaut sûre pour la plupart des boutons poussoirs.
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 et élimine les rebonds des appuis sur le bouton en utilisant la bibliothèque ezButton.
- Le MPU ne peut pas lire le bouton directement — il doit demander des données au MCU via Bridge.call(). Le MCU répond avec le nombre d'appuis ou le réinitialise.
- Le MPU dispose du Wi-Fi — car le MPU exécute Debian Linux complet avec Wi-Fi, il peut rapporter les nombres d'appuis via Telegram et accepter des commandes de réinitialisation à distance.
- 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 MCU élimine les rebonds et compte les appuis → le MPU demande le compteur → le MPU le transmet via Telegram.
Programme MCU — anti-rebond bouton avec compteur d'appuis et Bridge :
Script Python (Arduino App Lab) — interrogation du compteur d'appuis 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, installez les bibliothèques ezButton et Arduino_RouterBridge, 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 le compteur d'appuis toutes les 3 secondes.
- Appuyez sur le bouton plusieurs fois.
- Vérifiez la console : Ouvrez l'onglet Console → sous-onglet Moniteur MCU pour voir les événements d'appui/relâchement. Ouvrez le sous-onglet Console Python pour voir le compteur interrogé.
Sortie de la Console App Lab
Intégration Telegram
Vous pouvez interroger le nombre d'appuis sur le bouton ou le réinitialiser 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.
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 le suivi des appuis sur le bouton :
- Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
- Envoyez /count pour voir combien de fois le bouton a été appuyé depuis la mise sous tension ou la dernière réinitialisation.
- Envoyez /reset pour réinitialiser le compteur à 0.
É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 : Appuyez sur le bouton 5 fois, puis envoyez /count sur Telegram — vous devriez recevoir 5. Envoyez ensuite /reset et /count à nouveau pour confirmer la réinitialisation.
- Conseil : Utilisez ceci comme compteur d'événements pour compter les visiteurs, les cycles de machine ou les alertes déclenchées.
Sortie de la Console App Lab
ArduinoBot
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
- Compteur de visiteurs : Placez un bouton à une porte — le compteur d'appuis suit le nombre de personnes entrées
- Compteur de cycles de machine : Comptez les cycles d'actionneur dans une ligne de production, vérifiez le compteur via Telegram
- Journal d'événements manuel : Appuyez sur le bouton pour enregistrer un événement horodaté côté Linux (le MPU a une vraie horloge)
- Contrôleur multi-mode : Chaque appui sur le bouton passe au mode suivant ; vérifiez le mode via Telegram
- Appuyer pour commander : Appuyez sur le bouton pour envoyer un message Telegram de "réapprovisionnement" pour des fournitures

