ESP32 C3 Super Mini - Bouton - Antirebond

Apprenez à éliminer le chattering des boutons sur votre ESP32 C3 Super Mini avec des techniques d'antirebond appropriées. Ce tutoriel vous montre des méthodes simples pour traiter les appuis sur les boutons avec précision.

Dans ce didacticiel, vous apprendrez:

ESP32 C3 Super Mini - Bouton - Antirebond

Lorsque vous appuyez sur un bouton, son état passe-t-il de LOW à HIGH (ou 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 chattering. Le phénomène de chattering fait que votre ESP32 C3 Super Mini lit plusieurs appuis sur un bouton alors que vous n'en avez appuyé qu'une seule fois, causant des erreurs dans vos projets. La solution pour éliminer ce problème s'appelle antirebond de bouton.

Phénomène de chattering ESP32 C3 Super Mini

Ce didacticiel couvre:

Matériel Requis

1×ESP32 C3 Super Mini
1×Câble USB Type-C
1×Bouton avec Capuchon Montage Breadboard
1×Ensemble de Boutons Montage Breadboard
1×Bouton Poussoir Montage Panneau
1×Module bouton poussoir
1×Plaque d'essai
1×Fils de Liaison
1×(Optionnel) Connecteur d'Alimentation CC

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Bouton

Les boutons sont des appareils d'entrée qui détectent quand ils sont pressés ou relâchés.

Nous avons un tutoriel dédié couvrant tout sur les boutons avec ESP32 C3 Super Mini:

  • Détails complets de la disposition des broches
  • Comment fonctionnent les boutons
  • Connexions de câblage
  • Exemples de code
  • Instructions étape par étape

En savoir plus: ESP32 C3 Super Mini - Bouton

Schéma de Câblage

Le schéma de câblage ci-dessous montre comment connecter un bouton à votre ESP32 C3 Super Mini.

Schéma de Câblage du Bouton ESP32 C3 Super Mini

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche du Bouton Broche ESP32 C3 Super Mini
Une broche GPIO7
Autre broche GND

Pour voir clairement la différence, nous allons d'abord exécuter le code ESP32 C3 Super Mini SANS antirebond, puis AVEC antirebond, et comparer les résultats.

Lecture du Bouton sans Antirebond

Étapes Rapides

  • Nouveau sur Arduino? Commencez par notre guide Démarrage ESP32 C3 Super Mini d'abord.
  • Câbler les composants: Suivez le schéma de câblage ci-dessus pour connecter le bouton à la broche GPIO7.
  • Connecter la carte: Branchez votre ESP32 C3 Super Mini à votre ordinateur à l'aide d'un câble USB Type-C.
  • Ouvrir l'IDE Arduino: Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionner votre carte: Choisissez "ESP32 C3 Super Mini" et le bon port COM dans le menu Outils.
  • Télécharger le code: Copiez le code ci-dessous et téléchargez-le sur votre carte ESP32 C3 Super Mini.
  • Ouvrir le Moniteur Série: Cliquez sur l'icône du Moniteur Série pour afficher la sortie.
  • Tester le bouton: Appuyez sur le bouton une fois et maintenez-le pendant plusieurs secondes, puis relâchez-le.
  • Observer les résultats: Regardez la sortie du Moniteur Série montrant plusieurs événements de presse/relâchement.
  • Conseil Pro: Si vous ne voyez pas de chattering immédiatement, essayez d'appuyer plusieurs fois sur le bouton - c'est un phénomène aléatoire qui apparaît par intermittence.
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-debounce */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button int prev_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(115200); // initialize the button pin as an pull-up input (HIGH when the switch is open and LOW when the switch is closed) pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_state == HIGH && button_state == LOW) Serial.println("The button is pressed"); else if (prev_state == LOW && button_state == HIGH) Serial.println("The button is released"); // save the the last state prev_state = button_state; }
Téléchargement du Code IDE Arduino
Comment ouvrir le moniteur série sur Arduino IDE

Sortie du Moniteur Série:

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
The button is pressed The button is pressed The button is pressed The button is pressed The button is released The button is released The button is released
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

⇒ 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 C3 Super Mini a détecté plusieurs appuis et relâchements en raison du chattering.

※ Note:

Le phénomène de chattering ne se produit pas tout le temps. S'il ne se produit pas, veuillez essayer le test ci-dessus plusieurs fois pour l'observer.

Lecture du Bouton avec Antirebond

Ce code élimine le chattering en implémentant l'antirebond du bouton sur votre ESP32 C3 Super Mini.

Ce que ce code d'antirebond fait:

  • Enregistre l'heure du changement d'état du bouton
  • Attend un court délai (temps d'antirebond) avant de confirmer le changement
  • Ignore les changements d'état rapides pendant la période d'antirebond
  • Rapporte uniquement les appuis et relâchements de bouton stables

Étapes Rapides

  • Nouveau sur Arduino? Commencez par notre guide Démarrage ESP32 C3 Super Mini d'abord.
  • Copier le code: Copiez le code d'antirebond ci-dessous dans l'IDE Arduino.
  • Télécharger le code: Cliquez sur le bouton Télécharger pour programmer votre ESP32 C3 Super Mini.
  • Ouvrir le Moniteur Série: Cliquez sur l'icône du Moniteur Série pour afficher la sortie.
  • Tester le bouton: Appuyez sur le bouton et maintenez-le pendant plusieurs secondes, puis relâchez-le.
  • Observer les résultats: Remarquez que vous voyez maintenant un seul événement de presse et un seul événement de relâchement.
  • Conseil Pro: Si vous voyez toujours du chattering, essayez d'augmenter la valeur DEBOUNCE_TIME de 50 à 100 millisecondes.
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-debounce */ #define BUTTON_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define DEBOUNCE_TIME 50 // The debounce time in millisecond, increase this time if it still chatters int prev_state_steady = LOW; // The previous steady state from the input pin int prev_state_flick = LOW; // The previous flickerable state from the input pin int button_state; // The current reading from the input pin unsigned long last_debounce_time = 0; // The last time the output pin was toggled void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(115200); // initialize the button pin as an pull-up input (HIGH when the switch is open and LOW when the switch is closed) pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); // check to see if you just pressed the button // (i.e. the input went from LOW to HIGH), and you've waited long enough // since the last press to ignore any noise: // If the switch/button changed, due to noise or pressing: if (button_state != prev_state_flick) { // reset the debouncing timer last_debounce_time = millis(); // save the the last flickerable state prev_state_flick = button_state; } if ((millis() - last_debounce_time) > DEBOUNCE_TIME) { // whatever the reading is at, it's been there for longer than the debounce // delay, so take it as the actual current state: // if the button state has changed: if(prev_state_steady == HIGH && button_state == LOW) Serial.println("The button is pressed"); else if(prev_state_steady == LOW && button_state == HIGH) Serial.println("The button is released"); // save the the last steady state prev_state_steady = button_state; } }

Sortie du Moniteur Série:

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
The button is pressed The button is released
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

⇒ Parfait! Vous avez appuyé une fois et relâché une fois, et l'ESP32 C3 Super Mini a correctement lu un appui et un relâchement. Le chattering a été éliminé avec un antirebond de bouton approprié.

Nous l'Avons Simplifié - Code Antirebond Bouton ESP32 C3 Super Mini avec Bibliothèque

Nous avons créé la bibliothèque ezButton pour simplifier beaucoup l'antirebond des boutons, surtout lorsque vous travaillez avec plusieurs boutons sur votre ESP32 C3 Super Mini.

Avantages de l'utilisation de la bibliothèque ezButton:

  • Configuration simple d'une ligne pour l'antirebond du bouton
  • Code propre et lisible
  • Facile de gérer plusieurs boutons
  • Fonctions intégrées pour la détection d'appui et de relâchement
  • Aucun code de synchronisation complexe requis

En savoir plus: Documentation de la bibliothèque ezButton

Code Antirebond Bouton ESP32 C3 Super Mini pour Un Seul Bouton

Cet exemple montre comment faire l'antirebond d'un seul bouton en utilisant la bibliothèque ezButton sur ESP32 C3 Super Mini.

/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-debounce */ #include <ezButton.h> #define DEBOUNCE_TIME 50 // the debounce time in millisecond, increase this time if it still chatters ezButton button(D7); // create ezButton object for pin GPIO7 void setup() { Serial.begin(115200); button.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) Serial.println("The button is pressed"); if (button.isReleased()) Serial.println("The button is released"); }

Code Antirebond Bouton ESP32 C3 Super Mini pour Plusieurs Boutons

Cet exemple démontre comment faire l'antirebond de trois boutons simultanément sur votre ESP32 C3 Super Mini en utilisant la bibliothèque ezButton.

Le schéma de câblage

Connectez trois boutons à votre ESP32 C3 Super Mini comme indiqué ci-dessous.

Schéma de Câblage Bibliothèque Bouton ESP32 C3 Super Mini

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Bouton Broche ESP32 C3 Super Mini
Bouton 1 D5 et GND
Bouton 2 D6 et GND
Bouton 3 D7 et GND
/* * Ce code ESP32 C3 Super Mini a été développé par newbiely.fr * Ce code ESP32 C3 Super Mini est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-c3/esp32-c3-super-mini-button-debounce */ #include <ezButton.h> #define DEBOUNCE_TIME 50 // the debounce time in millisecond, increase this time if it still chatters ezButton button1(D5); // create ezButton object for pin D5 ezButton button2(D6); // create ezButton object for pin D6 ezButton button3(D7); // create ezButton object for pin D7 void setup() { Serial.begin(115200); button1.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds button2.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds button3.setDebounceTime(DEBOUNCE_TIME); // set debounce time to 50 milliseconds } void loop() { button1.loop(); // MUST call the loop() function first button2.loop(); // MUST call the loop() function first button3.loop(); // MUST call the loop() function first if (button1.isPressed()) Serial.println("The button 1 is pressed"); if (button1.isReleased()) Serial.println("The button 1 is released"); if (button2.isPressed()) Serial.println("The button 2 is pressed"); if (button2.isReleased()) Serial.println("The button 2 is released"); if (button3.isPressed()) Serial.println("The button 3 is pressed"); if (button3.isReleased()) Serial.println("The button 3 is released"); }

Sortie du Moniteur Série:

Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
The button 1 is pressed The button 2 is pressed The button 1 is released The button 3 is pressed The button 2 is released The button 3 is released
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Idées d'Application

Voici quelques projets pratiques où l'antirebond de bouton est essentiel pour votre ESP32 C3 Super Mini:

  • Systèmes de serrure de porte avec entrée de clavier
  • Contrôleurs de jeu avec entrée de bouton réactive
  • Appareils de contrôle à distance pour la domotique
  • Systèmes de navigation de menu avec plusieurs boutons
  • Circuits de compteur qui nécessitent une détection d'appui précise
  • Claviers d'alarme de sécurité avec entrée fiable

Défiez-vous

Essayez ces défis pour améliorer vos compétences d'antirebond de bouton ESP32 C3 Super Mini:

  • Facile: Changez le temps d'antirebond en différentes valeurs et observez comment cela affecte la réactivité du bouton
  • Moyen: Ajoutez une LED qui bascule on/off à chaque appui de bouton en utilisant une entrée antirebondissante
  • Moyen: Créez un compteur qui s'incrémente une seule fois par appui de bouton, affichant le compte sur le Moniteur Série
  • Avancé: Construisez un système de menu à 4 boutons avec antirebond où chaque bouton effectue une action différente
  • Avancé: Implémentez la détection de pression longue qui déclenche différentes actions pour les appuis de bouton courts vs. longs

Connaissances Supplémentaires

Conseils importants d'antirebond pour ESP32 C3 Super Mini:

  • La valeur DEBOUNCE_TIME dépend de votre matériel de bouton spécifique
  • Différents boutons peuvent nécessiter différents temps d'antirebond (généralement 20-100ms)
  • Commencez par 50ms et ajustez si vous voyez toujours du chattering
  • Les techniques d'antirebond fonctionnent également pour les commutateurs, les commutateurs de limite, les commutateurs à anche et les capteurs tactiles
  • L'antirebond matériel (utilisant des condensateurs) peut compléter l'antirebond logiciel pour les applications critiques

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !