ESP8266 - Plusieurs boutons

Ce tutoriel vous explique comment programmer un ESP8266 pour qu'il fonctionne avec plusieurs boutons en même temps, sans dépendre de la fonction delay(). En détail, nous apprendrons :

Nous utiliserons trois boutons comme exemples. Vous pouvez facilement le modifier pour l'adapter à deux boutons, quatre boutons, ou même plus.

Préparation du matériel

1×ESP8266 NodeMCU
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Bouton avec capuchon pour plaque d'essai
1×Kit bouton pour plaque d'essai
1×Panel-mount Button
1×Module bouton poussoir
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP8266
1×Recommandé: Répartiteur d'alimentation pour ESP8266 Type-C

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
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

Si vous n'êtes pas familier avec le bouton (brochage, fonctionnement, programmation...), les tutoriels suivants peuvent vous fournir plus d'informations :

Diagramme de câblage

Schéma de câblage de plusieurs boutons ESP8266 NodeMCU

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

Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..

Code ESP8266 - Plusieurs boutons avec anti-rebond

Lorsque vous utilisez plusieurs boutons, les choses peuvent se compliquer dans certains scénarios :

Heureusement, la bibliothèque ezButton simplifie ce processus en gérant en interne le debounce et les événements des boutons. Cela décharge les utilisateurs de la tâche de gestion des horodatages et des variables lors de l'utilisation de la bibliothèque. De plus, l'utilisation d'un tableau de boutons peut améliorer la clarté et la concision du code.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-multiple-button */ #include <ezButton.h> #define BUTTON_PIN_1 D5 // The ESP8266 pin connected to the button 1 #define BUTTON_PIN_2 D6 // The ESP8266 pin connected to the button 2 #define BUTTON_PIN_3 D7 // The ESP8266 pin connected to the button 3 ezButton button1(BUTTON_PIN_1); // create ezButton object for button 1 ezButton button2(BUTTON_PIN_2); // create ezButton object for button 2 ezButton button3(BUTTON_PIN_3); // create ezButton object for button 3 void setup() { Serial.begin(9600); button1.setDebounceTime(100); // set debounce time to 100 milliseconds button2.setDebounceTime(100); // set debounce time to 100 milliseconds button3.setDebounceTime(100); // set debounce time to 100 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 // get button state after debounce int button1_state = button1.getState(); // the state after debounce int button2_state = button2.getState(); // the state after debounce int button3_state = button3.getState(); // the state after debounce /* Serial.print("The button 1 state: "); Serial.println(button1_state); Serial.print("The button 2 state: "); Serial.println(button2_state); Serial.print("The button 3 state: "); Serial.println(button3_state); */ 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"); }

É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é sur 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, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Faites le câblage comme sur l'image ci-dessus.
  • Connectez la carte ESP8266 à votre PC via un câble USB.
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP8266 (par exemple ESP8266 Uno) et le port COM.
  • Cliquez sur l'icône Libraries dans la barre gauche de l'Arduino IDE.
  • Recherchez "ezButton", puis trouvez la bibliothèque de boutons par ESP8266GetStarted.
  • Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
Bibliothèque de bouton ESP8266 NodeMCU
  • Copiez le code ci-dessus et collez-le dans l'IDE Arduino.
  • Compilez et téléchargez le code sur la carte ESP8266 en cliquant sur le bouton Upload dans l'IDE Arduino.
Comment télécharger le code ESP8266 NodeMCU sur Arduino IDE
  • Ouvrez le moniteur série sur Arduino IDE
  • Appuyez et relâchez le bouton un par un
COM6
Send
The button 1 is pressed The button 1 is released The button 2 is pressed The button 2 is released The button 3 is pressed The button 3 is released
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code ESP8266 - Plusieurs boutons utilisant un tableau

Nous pouvons améliorer le code ci-dessus en utilisant un tableau de boutons. Le code suivant utilise ce tableau pour gérer les objets bouton.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 3 // the number of buttons #define BUTTON_PIN_1 D5 // The ESP8266 pin connected to the button 1 #define BUTTON_PIN_2 D6 // The ESP8266 pin connected to the button 2 #define BUTTON_PIN_3 D7 // The ESP8266 pin connected to the button 3 ezButton buttonArray[] = { ezButton(BUTTON_PIN_1), ezButton(BUTTON_PIN_2), ezButton(BUTTON_PIN_3) }; void setup() { Serial.begin(9600); for (byte i = 0; i < BUTTON_NUM; i++) { buttonArray[i].setDebounceTime(100); // set debounce time to 100 milliseconds } } void loop() { for (byte i = 0; i < BUTTON_NUM; i++) buttonArray[i].loop(); // MUST call the loop() function first for (byte i = 0; i < BUTTON_NUM; i++) { // get button state after debounce int button_state = buttonArray[i].getState(); // the state after debounce /* Serial.print("The button "); Serial.print(i + 1); Serial.print(": "); Serial.println(button_state); */ if (buttonArray[i].isPressed()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is pressed"); } if (buttonArray[i].isReleased()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is released"); } } }

Vidéo

※ 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 !