ESP32 S3 - Bouton - Anti-rebond
Les boutons mécaniques sont des composants trompeusement simples, mais ils ont un défaut qui peut perturber vos projets ESP32 S3 : le rebond (chattering). Ce tutoriel vous explique ce qu'est le rebond, pourquoi il pose problème, et comment l'éliminer en utilisant à la fois du code Arduino brut et la bibliothèque ezButton.
Ce que vous allez construire :
- Un croquis de test qui démontre le rebond de bouton sans anti-rebond
- Un croquis avec anti-rebond utilisant une synchronisation manuelle avec millis()
- Un exemple d'anti-rebond pour un seul bouton utilisant la bibliothèque ezButton
- Un exemple d'anti-rebond pour plusieurs boutons gérant trois boutons simultanément

Quand vous appuyez sur un bouton, son état passe-t-il de LOW à HIGH (ou de HIGH à LOW) une seule fois ? Pas vraiment ! Dans le monde réel, un seul appui sur un bouton fait basculer l'état entre LOW et HIGH plusieurs fois très rapidement. C'est une caractéristique physique des boutons mécaniques appelée rebond (chattering). Ce phénomène de rebond fait que votre ESP32 S3 détecte plusieurs appuis de bouton alors que vous n'avez appuyé qu'une seule fois, ce qui provoque des erreurs dans vos projets. La solution pour éliminer ce problème s'appelle l'anti-rebond de bouton (debounce).

Ce tutoriel couvre :
- L'anti-rebond d'un seul bouton avec du code ESP32 S3 intégré
- L'utilisation de la bibliothèque ezButton pour une implémentation simple de l'anti-rebond
- La gestion de plusieurs boutons avec anti-rebond sur ESP32 S3
- La comparaison des résultats avec et sans anti-rebond
Matériel nécessaire
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos du bouton
Les boutons sont des dispositifs d'entrée fondamentaux qui détectent quand ils sont appuyés ou relâchés. Comprendre leur comportement électrique — y compris leur tendance au rebond — est essentiel pour construire des projets ESP32 S3 fiables.
Nous avons un tutoriel dédié qui couvre tout sur les boutons avec ESP32 S3 :
Spécifications clés
Le tutoriel dédié au bouton inclut le détail complet du brochage, le fonctionnement électrique des boutons, les connexions de câblage pas à pas, des exemples de code, et des conseils de dépannage pour les problèmes courants.
En savoir plus : ESP32 S3 - Bouton
Schéma de câblage
Connectez un seul bouton à votre ESP32 S3 en câblant une broche à GPIO7 et l'autre broche à GND. La résistance de pull-up interne de l'ESP32 S3 se charge du reste, aucune résistance externe n'est donc nécessaire.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Notes de sécurité
Connectez toujours le bouton entre une broche GPIO et GND plutôt que directement au 3,3V, car le code repose sur la configuration de pull-up interne. Évitez de connecter des boutons à GPIO0 pendant le développement, car cette broche est utilisée par le bootloader de l'ESP32 S3.
| Broche du bouton | Broche ESP32 S3 |
|---|---|
| Une broche | GPIO7 |
| Autre broche | GND |
Pour bien voir la différence, nous allons d'abord exécuter le code ESP32 S3 SANS anti-rebond, puis AVEC anti-rebond, et comparer les résultats.
Lire un bouton sans anti-rebond
Étapes rapides
- Nouveau sur ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
- Câblez les composants : suivez le schéma de câblage ci-dessus pour connecter le bouton à la broche GPIO7.
- Connectez la carte : branchez votre ESP32 S3 à votre ordinateur avec un câble USB Type-C.
- Ouvrez Arduino IDE : lancez Arduino IDE sur votre ordinateur.
- Sélectionnez votre carte : choisissez "ESP32S3 Dev Module" et le bon port COM dans le menu Tools.
- Téléversez le code : copiez le code ci-dessous et téléversez-le sur votre carte ESP32 S3.
- Ouvrez le Serial Monitor : cliquez sur l'icône Serial Monitor pour voir la sortie.
- Testez le bouton : appuyez une fois sur le bouton et maintenez-le pendant plusieurs secondes, puis relâchez-le.
- Observez les résultats : regardez la sortie du Serial Monitor montrant plusieurs événements d'appui/relâchement.
- Astuce pro : si vous ne voyez pas de rebond immédiatement, essayez d'appuyer sur le bouton plusieurs fois — c'est un phénomène aléatoire qui apparaît de façon intermittente.


Sortie du Serial Monitor :
⇒ Comme vous pouvez le voir, vous avez appuyé sur le bouton une seule fois et l'avez relâché une seule fois, mais l'ESP32 S3 a détecté plusieurs appuis et relâchements à cause du rebond.
※ Note:
Le phénomène de rebond ne se produit pas à chaque fois. S'il ne se produit pas, essayez le test ci-dessus plusieurs fois pour l'observer.
Lire un bouton avec anti-rebond
Ce croquis élimine le rebond en implémentant l'anti-rebond de bouton sur votre ESP32 S3. Il enregistre l'horodatage du premier changement d'état du bouton, puis attend un court délai configurable avant de confirmer le nouvel état — en ignorant toute oscillation rapide se produisant pendant cette fenêtre. Le résultat est que seuls les appuis et relâchements de bouton stables et intentionnels sont signalés à votre application.
Étapes rapides
- Nouveau sur ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
- Copiez le code : copiez le code d'anti-rebond ci-dessous dans Arduino IDE.
- Téléversez le code : cliquez sur le bouton Upload pour programmer votre ESP32 S3.
- Ouvrez le Serial Monitor : cliquez sur l'icône Serial Monitor pour voir la sortie.
- Testez le bouton : appuyez sur le bouton et maintenez-le pendant plusieurs secondes, puis relâchez-le.
- Observez les résultats : remarquez que vous ne voyez maintenant qu'un seul événement d'appui et un seul événement de relâchement.
- Astuce pro : si vous voyez encore du rebond, essayez d'augmenter la valeur de DEBOUNCE_TIME de 50 à 100 millisecondes.
Sortie du Serial Monitor :
⇒ Parfait ! Vous avez appuyé une fois et relâché une fois, et l'ESP32 S3 a correctement lu un appui et un relâchement. Le rebond a été éliminé grâce à un anti-rebond de bouton approprié.
Nous avons simplifié les choses - Code d'anti-rebond de bouton ESP32 S3 avec une bibliothèque
Nous avons créé la bibliothèque ezButton pour rendre l'anti-rebond de bouton beaucoup plus facile, en particulier lorsque vous travaillez avec plusieurs boutons sur votre ESP32 S3. Au lieu de gérer manuellement des variables de synchronisation, la bibliothèque gère en interne toute la logique d'anti-rebond, ce qui vous donne un code propre et lisible, quel que soit le nombre de boutons que vous gérez.
En savoir plus : documentation de la bibliothèque ezButton
Code d'anti-rebond de bouton ESP32 S3 pour un seul bouton
Le croquis suivant montre comment gérer l'anti-rebond d'un seul bouton en utilisant la bibliothèque ezButton sur ESP32 S3. Après avoir inclus la bibliothèque et défini le temps d'anti-rebond, détecter un appui ou un relâchement est aussi simple qu'appeler isPressed() ou isReleased() dans la boucle principale.
Code d'anti-rebond de bouton ESP32 S3 pour plusieurs boutons
Ce croquis démontre comment gérer l'anti-rebond de trois boutons simultanément sur votre ESP32 S3 en utilisant la bibliothèque ezButton. Chaque bouton obtient son propre objet ezButton, et appeler .loop() sur les trois dans la boucle principale garde l'état d'anti-rebond de chaque bouton à jour indépendamment.
Le schéma de câblage
Connectez trois boutons à votre ESP32 S3 comme indiqué ci-dessous.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
| Bouton | Broche ESP32 S3 |
|---|---|
| Bouton 1 | D5 et GND |
| Bouton 2 | D6 et GND |
| Bouton 3 | D7 et GND |
Sortie du Serial Monitor :
Idées d'applications
L'anti-rebond de bouton est une technique fondamentale qui permet une gestion fiable des entrées dans un large éventail de projets ESP32 S3. Voici quelques applications pratiques où une détection précise des appuis de bouton est essentielle :
- Systèmes de verrouillage de porte : systèmes d'entrée par clavier où chaque appui de bouton doit être enregistré exactement une fois.
- Manettes de jeu : entrée de bouton réactive pour des périphériques de jeu DIY construits sur ESP32 S3.
- Télécommandes domotiques : contrôle fiable des lumières, ventilateurs ou appareils depuis des panneaux de télécommande personnalisés.
- Navigation de menu : navigation multi-boutons pour des menus d'affichage OLED ou TFT sur des appareils ESP32 S3.
- Compteurs d'événements : circuits de comptage qui s'incrémentent exactement une fois par appui physique.
- Claviers de sécurité : systèmes d'alarme ou de contrôle d'accès nécessitant une détection d'entrée fiable.
Vidéo
Regardez la vidéo pas à pas de ce projet ESP32 S3 ci-dessous.
Mettez-vous au défi
Pratiquer l'anti-rebond avec des scénarios progressivement plus complexes est la meilleure façon de gagner en confiance avec la gestion des entrées sur ESP32 S3. Essayez ces défis pour approfondir votre compréhension :
- Débutant : changez la valeur de DEBOUNCE_TIME à 20 ms, 50 ms et 100 ms et observez comment chaque valeur affecte la réponse du bouton sur votre ESP32 S3.
- Intermédiaire : ajoutez une LED qui s'allume et s'éteint à chaque appui de bouton avec anti-rebond, démontrant une gestion d'état propre.
- Intermédiaire : construisez un compteur d'appuis qui s'incrémente une seule fois par appui de bouton et affiche le total courant sur le Serial Monitor.
- Avancé : implémentez un système de menu à 4 boutons où chaque bouton avec anti-rebond effectue une action distincte sur l'ESP32 S3.
- Avancé : ajoutez une détection d'appui long pour qu'un appui court et un appui maintenu déclenchent des comportements différents en utilisant un seul bouton.
Connaissances supplémentaires
Conseils importants d'anti-rebond pour ESP32 S3 :
- La valeur DEBOUNCE_TIME dépend de votre matériel de bouton spécifique
- Différents boutons peuvent nécessiter différents temps d'anti-rebond (généralement 20 à 100 ms)
- Commencez avec 50 ms et ajustez si vous voyez encore du rebond
- Les techniques d'anti-rebond fonctionnent aussi pour les interrupteurs, les interrupteurs de fin de course, les interrupteurs reed et les capteurs tactiles
- L'anti-rebond matériel (utilisant des condensateurs) peut compléter l'anti-rebond logiciel pour les applications critiques