Arduino Nano ESP32 - LED de botón

Este tutorial te guía para utilizar el Arduino Nano ESP32 y un botón para controlar el LED. Exploraremos dos casos de uso distintos:

Caso de uso 1 - Sincronización entre los estados del LED y del botón, explicado como sigue:

Caso de uso 2 - Alternar el estado del LED con cada pulsación de botón, detallado a continuación:

En Use-Case 2, es crucial eliminar el rebote del botón para garantizar un funcionamiento correcto. Examinaremos la importancia del debouncing al comparar el comportamiento del LED al utilizar el código de Arduino Nano ESP32 con y sin el rebote del botón.

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Botón para Protoboard con Tapa
1×Kit de Botón para Protoboard
1×Botón Pulsador de Panel
1×Módulo de Botón Pulsador
1×LED Kit
1×LED (red)
1×LED Module
1×220Ω Resistor
1×Protoboard
1×Cables Puente
1×(Opcional) 5V Power Adapter for Arduino Nano ESP32
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Buy Note: Use the LED Module for easier wiring. It includes an integrated resistor.

Acerca de LED y botón

Si no estás familiarizado con el LED y el botón (incluyendo el pinout, el funcionamiento y la programación), los siguientes tutoriales pueden ayudar:

Diagrama de Cableado

Diagrama de cableado de Arduino Nano ESP32: botón y LED

This image is created using Fritzing. Click to enlarge image

Aplicación 1 - El estado del LED está sincronizado con el estado del botón

Código de Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 }

Pasos R\u00e1pidos

  • Si esta es la primera vez que usa Arduino Nano ESP32, consulte cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
  • Conecte los componentes como se muestra en el diagrama.
  • Conecte la placa Arduino Nano ESP32 a su computadora mediante un cable USB.
  • Abra Arduino IDE en su computadora.
  • Elija la placa Arduino Nano ESP32 y su puerto COM correspondiente.
  • Copie el código y ábralo en el Arduino IDE.
  • Haga clic en el botón Subir en el Arduino IDE para compilar y cargar el código en el Arduino Nano ESP32.
Subir código al IDE de Arduino
  • Presiona el botón y manténlo presionado durante unos segundos.
  • Observa el cambio en el estado del LED.

Verás que el estado del LED está sincronizado con el estado del botón.

Explicación del código

Consulta la explicación línea por línea contenida en los comentarios del código fuente.

Aplicación 2 - El botón alterna el LED

Código de Arduino Nano ESP32 - El botón alterna el LED sin antirrebote

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); } }

Explicación del código

Puede encontrar la explicación en las líneas de comentario del código Arduino Nano ESP32 anterior.

En el código, la expresión led_state = !led_state es equivalente al siguiente código:

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

Pasos R\u00e1pidos

  • Copia el código y ábrelo en el IDE de Arduino.
  • Sube el código al Arduino Nano ESP32.
  • Presiona el botón de reinicio varias veces.
  • Observa el cambio en el estado del LED.

Puede observarse que el estado del LED se alterna cada vez que se presiona el botón. Sin embargo, este comportamiento puede no ser siempre consistente. A veces, el estado del LED puede alternarse rápidamente varias veces dentro de una sola pulsación del botón, o puede que no se alterne en absoluto (alternarse dos veces en rápida sucesión, lo cual puede ser difícil de ver a simple vista).

⇒ Para resolver este problema, necesitamos anti-rebote para el botón.

Código para Arduino Nano ESP32 - El botón alterna el LED con anti-rebote

La eliminación de rebotes de un botón puede ser un desafío para los principiantes. Afortunadamente, la librería ezButton facilita las cosas.

¿Por qué es necesario el antirrebote? Consulta el tutorial de antirrebote de botón para Arduino Nano ESP32 para obtener más información.

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); } }

Pasos R\u00e1pidos

  • Instala la biblioteca ezButton. Consulta Cómo hacerlo para obtener instrucciones.
  • Copia el código y ábrelo con Arduino IDE.
  • Haz clic en el botón Cargar en Arduino IDE para cargar el código al Arduino Nano ESP32.
  • Presiona y suelta el botón varias veces.
  • Observa el cambio de estado del LED.

Verás que el estado del LED se alterna exactamente una vez cada vez que se presiona el botón.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!