Arduino Nano ESP32 - Bouton - Anti-rebond
Lorsqu'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. Lorsque vous appuyez une seule fois sur un bouton, l'état du bouton bascule rapidement plusieurs fois entre BAS et HAUT plutôt qu'une seule fois. Il s'agit d'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 que le MCU (par exemple, ESP32) lit plusieurs appuis sur un bouton en réponse à une seule pression réelle. Cela entraîne un dysfonctionnement. Le processus pour éliminer ce phénomène est appelé anti-rebond. Ce tutoriel montre comment le faire.
Ce tutoriel fournit :
- Comment effectuer un debounce pour un bouton sur le code Arduino Nano ESP32
- Comment effectuer un debounce pour un bouton sur le code Arduino Nano ESP32 en utilisant une bibliothèque
- Comment effectuer un debounce pour plusieurs boutons sur le code Arduino Nano ESP32 en utilisant une bibliothèque
Préparation du matériel
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 du matériel, le principe de fonctionnement, la connexion des câbles à l'ESP32, le code Arduino Nano ESP32... Pour en savoir plus, consultez les liens suivants :
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Pour clarifier, exécutons le code Arduino Nano ESP32 SANS et AVEC anti-rebond, et comparons leurs résultats.
Bouton de lecture sans anti-rebond
Étapes rapides
Pour commencer avec l'Arduino Nano ESP32, suivez ces étapes :
- Si vous êtes nouveau avec l'Arduino Nano ESP32, consultez le tutoriel sur comment configurer l'environnement pour l'Arduino Nano ESP32 dans l'Arduino IDE.
- Câblez les composants selon le schéma fourni.
- Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
- Lancez l'Arduino IDE sur votre ordinateur.
- Sélectionnez la carte Arduino Nano ESP32) et son port COM correspondant.
- Copiez le code ci-dessous et collez-le dans l'Arduino IDE.
- Compiler et téléverser le code sur la carte Arduino Nano ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino.
- Ouvrez le moniteur série sur Arduino IDE.
- Appuyez une seule 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 avez effectué une seule pression et relâchement, mais l'Arduino Nano 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 l'Arduino Nano ESP32, consultez comment configurer l'environnement pour Arduino Nano ESP32 sur Arduino IDE.
- Copiez le code ci-dessous et collez-le dans l'Arduino IDE.
- Compiler et télécharger le code sur la carte Arduino Nano ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino
- Ouvrir le moniteur série dans 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'Arduino Nano ESP32 a détecté une pression et un relâchement. Le rebond est éliminé.
Nous l'avons simplifié - Code de rebond de bouton Arduino Nano ESP32 avec bibliothèque
Pour faciliter la tâche aux débutants, notamment lors du débogage 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 de Bouton pour Arduino Nano ESP32 pour un Bouton Unique
Code de Debounce de Bouton pour Arduino Nano 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 nécessiter différentes valeurs.
- Le debounce doit également s'appliquer aux interrupteurs marche/arrêt, interrupteurs de limite, interrupteurs à lames, capteurs tactiles...