ESP32 - Bouton - Anti-rebond
Quand un bouton est pressé/relâché ou qu'un interrupteur bascule entre ON et OFF, son état passe de LOW à HIGH (ou de HIGH à LOW) une seule fois. Est-ce correct ?
Non, ce n'est pas le cas. Cela est dû au monde physique où, lorsque vous appuyez une seule fois sur un bouton, l'état du bouton est rapidement basculé plusieurs fois entre BAS et HAUT, plutôt qu'une seule fois. C'est une caractéristique mécanique et physique. Ce phénomène est connu sous le nom de rebond. Le phénomène de rebond fait en sorte que le MCU (par exemple l'ESP32) lise plusieurs pressions de bouton en réponse à une seule pression réelle. Cela entraîne un dysfonctionnement. Le processus pour éliminer ce phénomène est appelé antirebond. Ce tutoriel montre comment le faire.
Ce tutoriel fournit :
- Comment appliquer l'antirebondissement à un bouton dans le code ESP32
- Comment appliquer l'antirebondissement à un bouton dans le code ESP32 en utilisant une bibliothèque
- Comment appliquer l'antirebondissement à plusieurs boutons dans le code ESP32 en utilisant une bibliothèque
Préparation du matériel
1 | × | ESP-WROOM-32 Dev Module | |
1 | × | USB Cable Type-C | |
1 | × | Push Button | |
1 | × | (Optional) Panel-mount Push Button | |
1 | × | Breadboard | |
1 | × | Jumper Wires | |
1 | × | (Optional) DC Power Jack | |
1 | × | (Recommended) ESP32 Screw Terminal Adapter |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos du bouton
Nous disposons de tutoriels spécifiques sur les boutons. Le tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage matériel, le principe de fonctionnement, la connexion de câblage à l'ESP32, le code ESP32... Pour en savoir plus, consultez les liens suivants :
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.
Pour clarifier, exécutons le code ESP32 SANS et AVEC anti-rebond, et comparons leurs résultats.
Bouton de lecture sans anti-rebond
Étapes rapides
- Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
- Faites le câblage comme sur l'image ci-dessus.
- Connectez la carte ESP32 à votre PC via un câble micro USB.
- Ouvrez Arduino IDE sur votre PC.
- Sélectionnez la bonne carte ESP32 (par exemple, ESP32 Dev Module) et le port COM.
- Copiez le code ci-dessous et collez-le dans Arduino IDE.
- Compiler et téléverser le code sur la carte ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino.
- Ouvrez le moniteur série sur l'IDE Arduino
- Appuyez une fois sur le bouton mais maintenez-le plusieurs secondes, puis relâchez-le.
- Consultez le résultat sur le moniteur série. Cela ressemble à ce qui suit :
Comme vous pouvez le voir, vous n'avez effectué qu'une seule pression et relâchement, mais l'ESP32 a détecté plusieurs pressions et relâchements.
※ NOTE THAT:
Le phénomène de bavardage ne se produit pas tout le temps. S'il ne se produit pas, veuillez essayer le test ci-dessus plusieurs fois.
Bouton de lecture avec anti-rebond
Étapes rapides
- Si c'est la première fois que vous utilisez ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
- Copiez le code ci-dessous et collez-le dans Arduino IDE.
- Compilez et téléversez le code sur la carte ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino
- Ouvrez le moniteur série sur l'IDE Arduino
- Continuez à appuyer sur le bouton plusieurs secondes puis relâchez-le.
- Consultez le résultat sur le moniteur série. Cela ressemble à ce qui suit :
Comme vous pouvez le voir, vous avez effectué une pression et un relâchement, et l'ESP32 a lu une pression et un relâchement. Le rebond est éliminé.
Nous l'avons simplifié - Code de rebond de bouton ESP32 avec bibliothèque
Pour faciliter la tâche aux débutants, notamment lors du debouncing pour plusieurs boutons, nous avons créé une bibliothèque de boutons, appelée ezButton. Vous pouvez en savoir plus sur la bibliothèque ezButton ici.
Code de Debounce pour un seul bouton ESP32
Code de Debounce de Bouton ESP32 pour Plusieurs Boutons
Écrivons du code de temporisation pour trois boutons.
Le schéma de câblage
This image is created using Fritzing. Click to enlarge image
Vidéo
Connaissances supplémentaires
- La valeur de DEBOUNCE_TIME dépend du matériel. Différents matériels peuvent utiliser différentes valeurs.
- Le debounce devrait également s'appliquer pour l'interrupteur on/off, l'interrupteur de limite, l'interrupteur à lame souple, le capteur tactile ...