ESP8266 - Botón - Antirrebote
Cuando se presiona o se suelta un botón, o se activa un interruptor, los novatos suelen asumir que su estado cambia de BAJO a ALTO o de ALTO a BAJO. En realidad, esto no es así. Debido a características mecánicas y físicas, el estado del botón (o interruptor) puede fluctuar entre BAJO y ALTO varias veces durante una única acción del usuario. Esto se conoce como parpadeo de contactos. El parpadeo de contactos puede hacer que una única pulsación se lea como varias pulsaciones, lo que provoca un mal funcionamiento en ciertas aplicaciones.

El método para evitar este problema se conoce como debouncing o debounce. Este tutorial te enseña cómo hacerlo al usar el botón con ESP8266. Aprenderemos a través de los siguientes pasos:
- Código ESP8266 sin rebote de un botón.
- Código ESP8266 con rebote de un botón.
- Código ESP8266 con rebote de un botón usando la biblioteca ezButton.
- Código ESP8266 con rebote para múltiples botones.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del botón
Si no estás familiarizado con los botones (incluidos los pinouts, su funcionamiento y la programación), los siguientes tutoriales pueden ayudarte:
Diagrama de Cableado

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.
Vamos a echar un vistazo al código del ESP8266 para ambos casos, con y sin anti-rebote, y comparar sus comportamientos respectivos.
Lectura de un botón sin rebote
Antes de explorar el debouncing, eche un vistazo al código sin él y observe su comportamiento.
Pasos R\u00e1pidos
Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:
- Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
- Conecta los componentes como se muestran en el diagrama.
- Conecta la placa ESP8266 a tu computadora usando un cable USB.
- Abre Arduino IDE en tu computadora.
- Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM correspondiente.
- Conecta tu ESP8266 a tu computadora usando un cable USB.
- Inicia el IDE de Arduino, selecciona la placa y el puerto adecuados.
- Copia el código a continuación y ábrelo en el IDE de Arduino.
- Haz clic en el botón Subir en el IDE de Arduino para compilar y cargar el código al ESP8266.

- Abre el Monitor Serial.
- Mantén pulsado el botón durante unos segundos, luego suéltalo.
- Verifica la salida en el Monitor Serial.
Puede que veas que, a veces, solo presionaste y soltaste el botón una vez. Sin embargo, el ESP8266 lo percibe como múltiples pulsaciones y liberaciones. Este es el fenómeno de rebote mencionado al inicio del tutorial. Veamos cómo solucionarlo en la próxima parte.
Lectura de un botón con antirrebote
El código que se muestra a continuación aplica el método llamado debounce para prevenir el fenómeno de parpadeo.
Pasos R\u00e1pidos
- Conecta los componentes como se muestra en el diagrama.
- Conecta la placa ESP8266 a tu computadora utilizando 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.
- Copia el código anterior y ábrelo con el IDE de Arduino.
- Haz clic en el botón Subir en el IDE de Arduino para compilar y cargar el código a la ESP8266.
- Abre el Monitor serie.
- Mantén presionado el botón durante unos segundos, luego suéltalo.
- Verifica el Monitor serie para ver el resultado.
Como puedes observar, solo presionaste y soltaste el botón una vez. ESP8266 es capaz de detectarlo como una única pulsación y liberación, eliminando así cualquier rebote innecesario.
Lo Hicimos Fácil - Código de Rebote de Botón ESP8266 con Biblioteca
Hemos desarrollado una biblioteca, ezButton, para facilitar su uso a quienes recién comienzan, especialmente cuando utilizan varios botones. Puedes obtener más información sobre la biblioteca ezButton aquí.
Código de anti-rebote de botón para un solo botón en ESP8266
Código de antirrebote para múltiples botones con ESP8266
El esquema del código anterior:
La ilustración del cableado del código:
La representación de las conexiones para el código:

This image is created using Fritzing. Click to enlarge image
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.
Conocimiento Adicional
- El valor de DEBOUNCE_DELAY depende de las características físicas del botón. Cada botón puede tener un valor diferente.
Extensibilidad
La técnica de anti-rebote se puede utilizar para interruptores, sensores táctiles y más.