ESP8266 - Botón - LED

Este tutorial te enseña cómo usar el ESP8266 y un botón para controlar el LED. Aprenderemos dos aplicaciones diferentes:

Aplicación 1 - El estado del LED está sincronizado con el estado del botón. En detalle:

Aplicación 2 - El estado del LED se alterna cada vez que se pulsa el botón. Más específicamente:

En la Aplicación 2, necesitamos implementar el anti-rebote del botón para asegurarnos de que funcione correctamente. Averiguaremos por qué es importante comparando cómo se comporta el LED cuando usamos el código ESP8266 con y sin el anti-rebote del botón.

Hardware Requerido

1×ESP8266 NodeMCU
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×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

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 la configuración de pines, su funcionamiento y la programación), los siguientes tutoriales pueden ayudar:

Diagrama de Cableado

Esquema de cableado del LED del botón ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

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

Código ESP8266

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-button-led */ #define BUTTON_PIN D1 // The ESP8266 pin D1 connected to button #define LED_PIN D7 // The ESP8266 pin D7 connected to led int button_state = 0; // variable for reading the button status void setup() { // Configure the LED pin as a digital output pinMode(LED_PIN, OUTPUT); // Configure the ESP8266 pin as a pull-up input: HIGH when the button is open, LOW when pressed. pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the button value: button_state = digitalRead(BUTTON_PIN); // control LED according to the state of button if (button_state == LOW) // if button is pressed digitalWrite(LED_PIN, HIGH); // turn on LED else // otherwise, button is not pressing digitalWrite(LED_PIN, LOW); // turn off LED }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el cómo configurar el entorno para ESP8266 en el IDE de Arduino tutorial si es la primera vez que usas ESP8266.
  • Conecta los componentes tal como se muestran en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre el IDE de Arduino en tu computadora.
  • Elige la placa ESP8266 correcta, por ejemplo (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Conecta un ESP8266 a tu computadora con un cable USB.
  • Inicia el IDE de Arduino y selecciona la placa y el puerto correctos.
  • Copia el código y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para compilar y subir el código al ESP8266.
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

¡Revisa 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 ESP8266 - El botón alterna el LED sin rebote

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-button-led */ #define BUTTON_PIN D1 // The ESP8266 pin D1 connected to button #define LED_PIN D7 // The ESP8266 pin D7 connected to led int led_state = LOW; // The current state of LED int button_state; // The current state of button int last_button_state; // The previous state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode pinMode(LED_PIN, OUTPUT); // Configure the ESP8266 pin to the output mode button_state = digitalRead(BUTTON_PIN); } void loop() { last_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if (last_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 ESP8266 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.
  • Carga el código al ESP8266.
  • Presiona el reinicio y el botón varias veces.
  • Observa el cambio en el estado del LED.

Puede observar que el estado del LED se alterna cada vez que se pulsa el botón. Sin embargo, este comportamiento puede no ser siempre consistente. En ocasiones, el estado del LED puede alternarse rápidamente varias veces durante una sola pulsación del botón, o puede no alternarse en absoluto (cambiar 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 del botón.

Código ESP8266 - Botón que alterna un LED con anti-rebote

El rebote de un botón puede resultar complicado para los principiantes. Afortunadamente, la biblioteca ezButton facilita las cosas.

¿Por qué es necesario el antirrebote? Para obtener más información, consulte el Tutorial de antirrebote de botón para ESP8266.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-button-led */ #include <ezButton.h> #define BUTTON_PIN D1 // The ESP8266 pin D1 connected to button #define LED_PIN D7 // The ESP8266 pin D7 connected to led ezButton button(BUTTON_PIN); // create ezButton object for pin 7; 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); // Configure the ESP8266 pin to the 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 librería ezButton. Consulta Cómo hacerlo para instrucciones.
  • Copia el código y ábrelo con Arduino IDE.
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al ESP8266.
  • 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 pulsa 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!