ESP32 - Bouton
Le bouton est un composant de base et largement utilisé dans de nombreux projets ESP32. Ce n'est pas aussi simple qu'il y paraît (en raison de caractéristiques mécaniques, physiques). Les débutants peuvent rencontrer de nombreuses difficultés avec. Ce tutoriel le rend facile pour les débutants. Commençons !
※ NOTE THAT:
Avant de présenter le bouton, nous aimerions souligner qu'il existe deux erreurs courantes que les débutants rencontrent souvent :
i. Le problème d'entrée flottante :
- Symptôme : Lors de la connexion d'un bouton à la broche d'entrée de l'ESP32, l'état de la broche d'entrée est aléatoire et ne correspond pas à l'état de pression du bouton.
- Cause : La broche du bouton n'utilise pas une résistance de tirage vers le bas ou de tirage vers le haut.
- Solution : ⇒ Utilisez une résistance de tirage vers le bas ou de tirage vers le haut sur la broche d'entrée. Les détails seront décrits plus tard dans ce tutoriel.
ii. Le phénomène de rebond
- Symptôme : Le code sur l'ESP32 lit l'état du bouton et identifie l'événement de pression en détectant le changement d'état (de HAUT à BAS ou de BAS à HAUT). Lorsque le bouton est réellement pressé une seule fois, le code ESP32 détecte plusieurs pressions plutôt qu'une seule.
- Cause : En raison des caractéristiques mécaniques et physiques, lorsque vous appuyez une seule fois sur un bouton, l'état de la broche d'entrée bascule rapidement plusieurs fois entre BAS et HAUT plutôt qu'une seule fois
- Solution : ⇒ Anti-rebond. Les détails seront décrits dans le tutoriel ESP32 - Bouton - Anti-rebond.
Le phénomène de rebond provoque un dysfonctionnement dans certains types d'applications qui ont besoin de détecter exactement le nombre de pressions. Dans certains types d'applications, il est inoffensif.
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) |
Schéma de câblage entre le bouton et l'ESP32
- Schéma de câblage entre ESP32 et bouton monté sur PCB
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.
- Schéma de câblage entre l'ESP32 et le bouton monté sur panneau
This image is created using Fritzing. Click to enlarge image
Comment programmer un bouton
- Initialise la broche ESP32 comme une entrée avec résistance de tirage interne en utilisant la fonction pinMode(). Par exemple, la broche GPIO21 :
- Lit l'état de la broche d'entrée en utilisant la fonction digitalRead().
※ NOTE THAT:
Il existe deux cas d'utilisation fréquemment utilisés :
- Premier cas d'utilisation : Si l'état d'entrée est HAUT, faire quelque chose. Si l'état d'entrée est BAS, faire autre chose.
- Deuxième cas d'utilisation : Si l'état d'entrée passe de BAS à HAUT, faire quelque chose. Si l'état d'entrée passe de HAUT à BAS, faire autre chose.
Selon l'application, l'un d'eux est utilisé. Par exemple, dans le cas de l'utilisation d'un bouton pour contrôler une LED :
- Si nous voulons allumer la LED lorsque le bouton est pressé et l'éteindre lorsque le bouton n'est pas pressé, nous DEVONS utiliser le premier cas.
- Si nous voulons faire basculer la LED entre ON et OFF à chaque fois que le bouton est pressé, nous DEVONS utiliser le deuxième cas.
L'exemple de code ci-dessous montre comment détecter le changement d'état de LOW à HIGH.
Code ESP32
Étapes rapides
- Si c'est la première fois que vous utilisez l'ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
- Réalisez 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, Module de développement ESP32) et le port COM.
- Copiez le code ci-dessous et collez-le dans Arduino IDE.
- Compiler et télécharger le code sur la carte ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino.
- Ouvrez le moniteur série dans l'IDE Arduino
- Appuyez et relâchez le bouton plusieurs fois
- Observez le résultat sur le moniteur série. Cela ressemble à ce qui suit :
1 est ÉLEVÉ, 0 est BAS.
Explication du code ligne par ligne
Le code ESP32 ci-dessus contient une explication ligne par ligne. Veuillez lire les commentaires dans le code !
Modification du code ESP32
Modifions le code pour détecter les événements d'appui et de relâchement.
Étapes rapides
- Si c'est la première fois que vous utilisez l'ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
- Modifiez le code comme ci-dessous
- Compiler et télécharger le code sur la carte ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino.
- Ouvrez le moniteur série sur Arduino IDE
- Appuyez sur le bouton puis relâchez.
- Consultez le résultat sur le moniteur série. Cela ressemble à ce qui suit :
※ NOTE THAT:
- Le moniteur série peut imprimer plusieurs événements d'appui et de relâchement même si vous n'avez effectué qu'une seule pression et relâchement. C'est un comportement normal du bouton. Ce comportement est appelé le "phénomène de rebond". Dans certaines applications, nous avons besoin d'une méthode pour l'éliminer. Vous pouvez en apprendre davantage dans le tutoriel ESP32 - Antirebond du bouton.
- Pour simplifier les choses pour les débutants, surtout lors de l'utilisation de plusieurs boutons, nous avons créé une bibliothèque, appelée ezButton. Vous pouvez en savoir plus sur la bibliothèque ezButton ici.
Vidéo
Connaissances supplémentaires
- DEVRAIT : Si le capteur possède deux états : fermé et ouvert, il nécessite une résistance de tirage vers le haut ou vers le bas pour transformer ces états en deux états : BAS et HAUT. Par exemple, bouton-poussoir, interrupteur, contact magnétique (capteur de porte)...
- NE DEVRAIT PAS : Si le capteur produit deux niveaux de tension (BAS et HAUT), il n'a PAS besoin d'une résistance de tirage vers le haut ou vers le bas. Par exemple, capteur de mouvement, capteur tactile ...