Arduino Nano ESP32 - Bouton LED

Ce tutoriel vous guide dans l'utilisation de l'Arduino Nano ESP32 et d'un bouton pour contrôler la LED. Nous explorerons deux cas d'utilisation distincts :

Cas d'utilisation 1 - Synchronisation entre l'état des LED et des boutons, expliquée comme suit :

Cas d'utilisation 2 - Changer l'état de la LED à chaque pression sur le bouton, détaillé comme suit :

Dans le Cas d'Utilisation 2, il est crucial de stabiliser le bouton pour assurer un fonctionnement correct. Nous explorerons l'importance de la stabilisation en comparant le comportement de la LED lors de l'utilisation du code Arduino Nano ESP32 avec et sans stabilisation du bouton.

Préparation du matériel

1×Arduino Nano ESP32
1×USB Cable Type-C
1×Push Button
1×(Optional) Panel-mount Push Button
1×LED
1×220 ohm resistor
1×Breadboard
1×Jumper Wires
1×(Optional) 5V Power Adapter for Arduino Nano ESP32
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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 des LED et des boutons

Si vous n'êtes pas familiarisé avec les LED et les boutons (y compris le brochage, le fonctionnement et la programmation), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage du bouton LED Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

L'état de la LED est synchronisé avec l'état du bouton.

Code Arduino Nano ESP32

/* * Ce code Arduino Nano ESP32 a été développé par newbiely.fr * Ce code Arduino Nano ESP32 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/arduino-nano-esp32/arduino-nano-esp32-button-led */ #define BUTTON_PIN D2 // The Arduino Nano ESP32 pin connected to the button #define LED_PIN D5 // The Arduino Nano ESP32 pin connected to the LED int button_state = 0; // variable for reading the pushbutton status void setup() { // Configure the LED pin as a digital output pinMode(LED_PIN, OUTPUT); // 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 pushbutton value: button_state = digitalRead(BUTTON_PIN); // control LED according to the state of button if(button_state == LOW) // If button is pressing digitalWrite(LED_PIN, HIGH); // turn on LED else // otherwise, button is not pressing digitalWrite(LED_PIN, LOW); // turn off LED }

Étapes rapides

  • Si c'est la première fois que vous utilisez un Arduino Nano ESP32, consultez comment configurer l'environnement pour Arduino Nano ESP32 sur Arduino IDE.
  • Connectez les composants comme indiqué sur le schéma.
  • Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte Arduino Nano ESP32, comme par exemple NodeMCU 1.0 (Module ESP-12E), et son port COM respectif.
  • Connectez un Arduino Nano ESP32 à votre ordinateur avec un câble USB.
  • Lancez Arduino IDE et sélectionnez la carte et le port corrects.
  • Copiez le code et ouvrez-le dans Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour compiler et téléverser le code sur l'Arduino Nano ESP32.
Téléverser le Code dans l'IDE Arduino
  • Appuyez sur le bouton et maintenez-le enfoncé pendant quelques secondes.
  • Observez le changement d'état du LED.

Vous verrez que l'état de la LED est synchronisé avec l'état du bouton.

Explication du code

Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !

Application 2 - Bouton bascule LED

Code Arduino Nano ESP32 - Bouton bascule la LED sans anti-rebond

/* * Ce code Arduino Nano ESP32 a été développé par newbiely.fr * Ce code Arduino Nano ESP32 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/arduino-nano-esp32/arduino-nano-esp32-button-led */ #define BUTTON_PIN D2 // The Arduino Nano ESP32 pin connected to the button #define LED_PIN D5 // The Arduino Nano ESP32 pin connected to the LED int led_state = LOW; // The current state of LED int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // toggle state of LED led_state = !led_state; // control LED according to the toggled state digitalWrite(LED_PIN, led_state); } }

Explication du code

Vous pouvez trouver l'explication dans les lignes de commentaire du code Arduino Nano ESP32 ci-dessus.

Dans le code, l'expression led_state = !led_state est équivalente au code suivant :

if(led_state == LOW) led_state = HIGH; else led_state = LOW;

Étapes rapides

  • Copiez le code et ouvrez-le dans l'IDE Arduino.
  • Téléchargez le code sur l'Arduino Nano ESP32.
  • Appuyez plusieurs fois sur le bouton de relâchement.
  • Observez le changement d'état de la LED.

Vous pouvez observer que l'état de la LED bascule à chaque fois que le bouton est pressé. Cependant, ce comportement peut ne pas toujours être constant. Parfois, l'état de la LED peut basculer plusieurs fois rapidement lors d'une seule pression du bouton, ou il se peut qu'il ne bascule pas du tout (basculement deux fois de suite rapidement, ce qui peut être difficile à voir à l'œil nu).

Pour résoudre ce problème, nous devons implémenter un anti-rebond pour le bouton.

Code Arduino Nano ESP32 - Bouton bascule LED avec anti-rebond

Le filtrage (debouncing) d'un bouton peut être un défi pour les débutants. Heureusement, la bibliothèque ezButton facilite les choses.

Pourquoi est-il nécessaire de supprimer les rebonds ? Consultez le tutoriel sur l'anti-rebond des boutons Arduino Nano ESP32 pour plus d'informations.

/* * Ce code Arduino Nano ESP32 a été développé par newbiely.fr * Ce code Arduino Nano ESP32 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/arduino-nano-esp32/arduino-nano-esp32-button-led */ #include <ezButton.h> #define BUTTON_PIN D2 // The Arduino Nano ESP32 pin connected to the button #define LED_PIN D5 // The Arduino Nano ESP32 pin connected to the LED ezButton button(BUTTON_PIN); // create ezButton object int led_state = LOW; // The current state of LED void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(LED_PIN, OUTPUT); // set arduino pin to output mode button.setDebounceTime(50); // 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"); // toggle state of LED led_state = !led_state; // control LED according to the toggleed sate digitalWrite(LED_PIN, led_state); } }

Étapes rapides

  • Installez la bibliothèque ezButton. Consultez Comment faire pour les instructions.
  • Copiez le code et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code sur l'Arduino Nano ESP32.
  • Appuyez et relâchez le bouton plusieurs fois.
  • Observez le changement d'état de la LED.

Vous verrez que l'état de la LED est basculé exactement une fois à chaque fois que le bouton est pressé.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!