Arduino Nano ESP32 - Botón
El botón es un componente básico y se utiliza ampliamente en muchos proyectos con Arduino Nano ESP32. No es tan simple como parece (debido a sus características mecánicas y físicas). Los principiantes pueden tener muchos problemas con él. Este tutorial facilita las cosas para los principiantes. ¡Comencemos!
※ Nota:
Antes de presentar sobre el botón, nos gustaría señalar que hay dos errores comunes que suelen encontrar los principiantes:
- El problema de entrada flotante:
- Síntoma: Al conectar un botón al pin de entrada de una Arduino Nano ESP32, el estado del pin de entrada es aleatorio y no coincide con el estado de pulsación del botón.
- Causa: Al pin del botón no se le está utilizando una resistencia pull-down o una resistencia pull-up.
- Solución: ⇒ Utilice una resistencia pull-down o pull-up en el pin de entrada. El detalle se describirá más adelante en este tutorial.
- Síntoma: El código en Arduino Nano ESP32 lee el estado del botón e identifica el evento de pulsación detectando el cambio de estado (ALTO a BAJO, o BAJO a ALTO). Cuando el botón se pulsa realmente solo una vez, el código de Arduino Nano ESP32 detecta múltiples pulsaciones en lugar de una sola.
- Causa: Debido a las características mecánicas y físicas, cuando se realiza una sola pulsación en un botón, el estado del pin de entrada cambia rápidamente entre BAJO y ALTO varias veces en lugar de una.
- Solución: ⇒ Debounce. El detalle se describirá en Arduino Nano ESP32 - Button - Debounce tutorial.
El fenómeno de rebote provoca el mal funcionamiento solo en algunos tipos de aplicaciones que necesitan detectar exactamente el número de pulsaciones. En algunas aplicaciones, es inofensivo.
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Botón Acerca de
El pulsador, también conocido como pushbutton, botón táctil o interruptor momentáneo, es un tipo de interruptor que se cierra al presionarlo y mantenerlo presionado, y se abre al soltarlo. Existen varios tipos de pulsadores, que se clasifican en dos grupos principales:
- PCB-mount push buttons (suitable for breadboard mounting)
- Panel-mount push buttons

Pinout del botón
Un botón montado en una placa de circuito impreso suele tener cuatro pines que están conectados internamente en pares.

Solo necesitamos usar dos de los cuatro pines, que NO están en el mismo par conectado. Por consiguiente, hay cuatro formas de realizar el cableado del botón (ver la imagen abajo).

En realidad, debido a la simetría, estas cuatro formas se convierten en dos. El resto de este tutorial usará dos pines: Pin A y Pin B que no están conectados entre sí.
¿Por qué el botón tiene cuatro pines mientras que solo necesitamos dos pines?
El botón recibe la fuerza que ejercen los usuarios. Para que se mantenga estable y firme en la PCB (placa de circuito impreso), tiene cuatro pines para resistir la fuerza de pulsación.
Un botón de montaje en panel suele tener dos pines.

El módulo de pulsador incluye una resistencia de pull-down integrada, lo que garantiza que la salida permanezca en nivel bajo cuando el botón no esté presionado. Tiene tres pines:
- GND: Conecta este pin a tierra.
- VCC: Conecta este pin a una fuente de 3.3V.
- OUT: Conecta este pin a una entrada digital de tu Arduino Nano ESP32.
Con esta configuración, el módulo genera nivel bajo cuando el botón no está presionado y genera nivel alto cuando el botón está presionado.
Cómo funciona el botón
- Cuando el botón está presionado, el pin A está conectado al pin B
- Cuando el botón no está presionado, el pin A no está conectado al pin B

Arduino Nano ESP32 - Botón
El pin de un botón está conectado a un pin de entrada digital de Arduino Nano ESP32. El otro pin está conectado a VCC o GND. En el código de Arduino Nano ESP32, al leer el estado del pin de entrada, podemos inferir si el botón está presionado o no.
Estado de entrada y estado de pulsación
La relación entre el estado del pin de entrada y el estado de pulsación del botón depende de cómo conectamos el botón con Arduino Nano ESP32 y de la configuración del pin del ESP32. Hay dos formas de usar un botón con ESP32:
- El pin de un botón está conectado a un pin de entrada digital del ESP32, el otro pin está conectado a VCC:
- Se debe usar una resistencia pull-down
- Si se pulsa el botón, el estado del pin del ESP32 es ALTO. De lo contrario, el estado del pin del ESP32 es BAJO
- Se debe usar una resistencia pull-up
- Si se pulsa el botón, el estado del pin del ESP32 es BAJO. De lo contrario, el estado del pin del ESP32 es ALTO
※ Nota:
Si no se utiliza una resistencia pull-down ni una resistencia pull-up, el estado del pin de entrada es aleatorio entre HIGH o LOW (inestable, no fijado) cuando el botón NO está presionado. Esto se llama “problema de entrada flotante”. Esto resulta en el mal funcionamiento.
Para facilitar las cosas a los principiantes, este tutorial recomienda encarecidamente usar una resistencia pull-up interna para el pin del Arduino Nano ESP32. No se requiere resistencia externa. Esto ahorra hardware y simplifica el esquema de cableado.
Diagrama de cableado entre el botón y Arduino Nano ESP32
- Diagrama de cableado entre Arduino Nano ESP32 y un botón montado en PCB

This image is created using Fritzing. Click to enlarge image
- Diagrama de cableado entre Arduino Nano ESP32 y botón de montaje en panel

This image is created using Fritzing. Click to enlarge image
Cómo programar un botón
- Inicializa el pin del Arduino Nano ESP32 como una entrada con pull-up interno utilizando la función pinMode(). Por ejemplo, el pin D2:
- Lee el estado del pin de entrada utilizando la función digitalRead().
※ Nota:
Hay dos casos de uso muy usados:
- El primer caso de uso: Si el estado de la entrada es ALTO, haz algo. Si el estado de la entrada es BAJO, haz otra cosa.
- El segundo caso de uso: Si el estado de la entrada cambia de BAJO a ALTO, haz algo. Si el estado de la entrada cambia de ALTO a BAJO, haz otra cosa.
Dependiendo de la aplicación, se usa uno de ellos. Por ejemplo, en el caso de usar un botón para controlar un LED:
- Si queremos encender el LED cuando se presiona el botón y apagarlo cuando no se presiona el botón, DEBEMOS usar el primer caso.
- Si queremos alternar el LED entre ENCENDIDO y APAGADO cada vez que se presione el botón, DEBEMOS usar el segundo caso.
El código de ejemplo a continuación muestra cómo detectar el cambio de estado de LOW a HIGH.
Código Arduino Nano ESP32
Pasos R\u00e1pidos
Para empezar con Arduino Nano ESP32, siga estos pasos:
- Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
- Conecta los componentes de acuerdo con el diagrama proporcionado.
- Conecta la placa Arduino Nano ESP32 a tu computadora usando un cable USB.
- Inicia el IDE de Arduino en tu computadora.
- Selecciona la placa Arduino Nano ESP32 y su puerto COM correspondiente.
- Copia el código que se muestra a continuación y pégalo en el IDE de Arduino.
- Compila y carga el código en la placa Arduino Nano ESP32 haciendo clic en el botón Cargar en el IDE de Arduino

- Abrir el Monitor Serial en el IDE de Arduino

- Presiona y suelta el botón varias veces
- Revisa el resultado en el Monitor Serial. Se ve como lo que se muestra abajo.
1 es alto, 0 es bajo.
Explicación del código línea por línea
El código anterior de Arduino Nano ESP32 contiene una explicación línea por línea. Por favor, lea los comentarios en el código.
Modificando el código de Arduino Nano ESP32
Vamos a modificar el código para detectar los eventos de pulsación y liberación.
Pasos R\u00e1pidos
- Si es la primera vez que usas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
- Modifica el código como se muestra a continuación
- Compila y sube el código a la placa Arduino Nano ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
- Abre el Monitor Serial en el IDE de Arduino.
- Presiona el botón y luego suéltalo.
- Consulta el resultado en el Monitor Serial. Se muestra a continuación:
※ Nota:
- El Monitor Serial puede mostrar varios eventos de pulsación y liberación, aunque solo hayas realizado una pulsación y liberación. Este es un comportamiento normal del botón. Este comportamiento se llama el “fenómeno de rebote”. En algunas aplicaciones, necesitamos un método para eliminarlo. Puedes aprender más en Arduino Nano ESP32 - Button Debounce tutorial.
- Para hacerlo más sencillo para principiantes, especialmente cuando se usan varios botones, creamos una biblioteca llamada ezButton. Puedes aprender sobre la biblioteca ezButton aquí.
- Cuando uses el módulo de botón, configura el pin como pinMode(BUTTON_PIN, INPUT). El módulo emite LOW cuando no está pulsado y HIGH cuando está pulsado.
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.
Conocimientos adicionales
¿Cuándo se debe usar una resistencia pull-down o pull-up y cuándo no?
- DEBERÍA: Si el sensor tiene dos estados: cerrado y abierto, necesita una resistencia pull-up o pull-down para hacer que estos estados se conviertan en dos estados: BAJO y ALTO. Por ejemplo, pulsador, interruptor, interruptor de contacto magnético (sensor de puerta)...
- NO DEBERÍA: Si el sensor produce dos niveles de voltaje (BAJO y ALTO), NO necesita una resistencia pull-up o pull-down. Por ejemplo, sensor de movimiento, sensor táctil ...