ESP8266 - Bouton - Anti-rebond
Lorsqu'un bouton est pressé ou relâché, ou qu'un interrupteur est basculé, les débutants supposent souvent que son état passe de BAS à HAUT ou de HAUT à BAS. En réalité, ce n'est pas le cas. En raison des caractéristiques mécaniques et physiques, l'état du bouton (ou de l'interrupteur) peut fluctuer plusieurs fois entre BAS et HAUT pour une seule action de l'utilisateur. Cela est connu sous le nom de rebond. Le rebond peut causer qu'une seule pression soit lue comme plusieurs pressions, entraînant des dysfonctionnements dans certaines applications.
La méthode pour prévenir ce problème est appelée l'anti-rebond ou debounce. Ce tutoriel vous explique comment le faire lorsque vous utilisez le bouton avec l'ESP8266. Nous allons apprendre à travers les étapes suivantes :
- Code ESP8266 sans anti-rebond pour un bouton.
- Code ESP8266 avec anti-rebond pour un bouton.
- Code ESP8266 avec anti-rebond pour un bouton en utilisant la bibliothèque ezButton.
- Code ESP8266 avec anti-rebond pour plusieurs boutons.
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) |
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.
Jetons un coup d'œil au code ESP8266 à la fois AVEC et SANS anti-rebond et comparons leurs comportements respectifs.
Bouton de lecture sans anti-rebond
Avant d'explorer l'anti-rebond, examinez le code sans celui-ci et observez son comportement.
Étapes rapides
Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :
- Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est votre première utilisation de l'ESP8266.
- Connectez les composants comme indiqué dans le schéma.
- Connectez la carte ESP8266 à votre ordinateur via un câble USB.
- Ouvrez Arduino IDE sur votre ordinateur.
- Choisissez la bonne carte ESP8266, telle que (par exemple, NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
- Connectez votre ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Lancez Arduino IDE, sélectionnez la carte et le port appropriés.
- Copiez le code ci-dessous et ouvrez-le dans Arduino IDE.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code vers l'ESP8266.
- Ouvrez le moniteur série.
- Appuyez et maintenez le bouton pendant quelques secondes, puis relâchez.
- Vérifiez la sortie dans le moniteur série.
Vous pouvez constater que, parfois, vous n'avez appuyé et relâché le bouton qu'une seule fois. Néanmoins, l'ESP8266 le perçoit comme plusieurs pressions et relâchements. C'est le phénomène de rebond mentionné au début du tutoriel. Voyons comment y remédier dans la partie suivante.
Bouton de lecture avec anti-rebond
Le code ci-dessous applique la méthode appelée "debounce" pour prévenir le phénomène de rebond.
Étapes rapides
- Câblez les composants comme indiqué sur le schéma.
- Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Ouvrez l'Arduino IDE sur votre ordinateur.
- Choisissez la bonne carte ESP8266, telle que (par exemple, NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
- Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE.
- Cliquez sur le bouton Upload de l'Arduino IDE pour compiler et téléverser le code sur l'ESP8266.
- Ouvrez le moniteur série.
- Maintenez le bouton enfoncé pendant quelques secondes, puis relâchez.
- Vérifiez le moniteur série pour voir le résultat.
Comme vous pouvez le constater, vous avez uniquement appuyé et relâché le bouton une fois. L'ESP8266 est capable de détecter cela comme une seule pression et relâchement, éliminant ainsi tout bruit inutile.
Nous l'avons simplifié - Code de Debounce de bouton ESP8266 avec bibliothèque
Nous avons développé une bibliothèque, ezButton, pour simplifier la tâche des débutants, surtout lorsqu'ils utilisent plusieurs boutons. Vous pouvez en savoir plus sur la bibliothèque ezButton ici.
Code de Debounce ESP8266 pour un seul bouton
Code de Debounce de Bouton ESP8266 pour Plusieurs Boutons
Le schéma du code ci-dessus :. L'illustration du câblage pour le code :. La représentation des connexions pour le code :
This image is created using Fritzing. Click to enlarge image
Vidéo
Connaissances supplémentaires
- La valeur de DEBOUNCE_DELAY dépend des caractéristiques physiques du bouton. Chaque bouton peut avoir une valeur différente.
Extensibilité
La technique de debounce peut être utilisée pour les interrupteurs, les capteurs tactiles, et plus encore.