Arduino - Botón
El botón es un componente básico y ampliamente utilizado en muchos proyectos de Arduino. 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. ¡Empecemos!
※ Nota:
Antes de hablar sobre el botón, nos gustaría señalar que hay dos errores comunes que los principiantes suelen encontrar:
- El problema de la entrada flotante:
- Síntoma: Al conectar un botón al pin de entrada de Arduino, 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 utiliza una resistencia pull-down o una resistencia pull-up.
- Solución: ⇒ Utilice una resistencia pull-down o una resistencia pull-up en el pin de entrada. El detalle se describirá más adelante en este tutorial.
- Síntoma: El código en Arduino lee el estado del botón e identifica el evento de pulsación detectando el cambio de estado (HIGH a LOW, o LOW a HIGH). Cuando el botón se pulsa realmente solo una vez, el código de Arduino detecta múltiples pulsaciones en lugar de una.
- Causa: Debido a las características mecánicas y físicas, cuando haces una única pulsación de un botón, el estado del pin de entrada cambia rápidamente entre LOW y HIGH varias veces en lugar de una pulsación.
- Solución: ⇒ Antirrebote. El detalle se describirá en Arduino - Botón - Debounce tutorial.
El fenómeno de rebote provoca malfuncionamiento solo en ciertos 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 STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del Botón
El pulsador, también conocido como pushbutton, botón táctil o interruptor momentáneo, es un tipo de interruptor que se cierra cuando se presiona y se mantiene presionado, y se abre cuando se suelta. Existen varios tipos de pulsadores, clasificados en dos grandes grupos:
- PCB-mount push buttons (breadboard-mountable)
- Panel-mount push buttons

Diagrama de pines
Los botones para montaje en PCB suelen tener cuatro pines.

Sin embargo, estos pines están conectados internamente en pares. Por lo tanto, solo necesitamos usar dos de los cuatro pines, que no están conectados entre sí internamente.
Hay cuatro formas (en realidad dos debido a la simetría) de conectar al botón (ver imagen).

Podemos usar solo dos pines de un botón; ¿Por qué tiene cuatro pines?
⇒ Para que se sostenga firmemente en la placa de circuito impreso (PCB) para resistir la fuerza de presión.
Los botones de montaje en panel suelen tener dos pines.

El módulo de pulsador incluye una resistencia pull-down integrada, que garantiza que la salida permanezca en nivel bajo cuando el botón no está presionado. Tiene tres pines:
- GND: Conecte este pin a la masa.
- VCC: Conecte este pin a una fuente de alimentación de 5 V o 3.3 V.
- OUT: Conecte este pin a una entrada digital en su Arduino.
Con esta configuración, el módulo genera una señal baja cuando el botón no está presionado y una señal alta cuando el botón está presionado.
Cómo funciona
- Cuando el botón no está presionado, el pin A no está conectado al pin B
- Cuando se presiona el botón, el pin A está conectado al pin B

Arduino - Botón
El pin de un botón está conectado a VCC o GND. El otro pin está conectado a un pin de Arduino.
Al leer el estado del pin de Arduino (configurado como pin de entrada), podemos detectar si el botón está presionado o no.
Estado del botón y estado de pulsación
La relación entre el estado del botón y el estado de la pulsación depende de cómo conectamos el botón a Arduino y de la configuración del pin de Arduino.
Hay dos formas de usar un botón con Arduino:
- Un pin de un botón está conectado a VCC, el otro está conectado al pin de un Arduino con una resistencia de pull-down
- Si se presiona el botón, el estado del pin del Arduino es ALTO. Si no, el estado del pin del Arduino es BAJO
- Debemos usar una resistencia externa.
- Si se presiona el botón, el estado del pin del Arduino es BAJO. Si no, el estado del pin del Arduino es ALTO
- Podemos usar una resistencia interna o externa. La resistencia interna está integrada en el Arduino; solo necesitamos configurarla mediante código de Arduino.
※ Nota:
Si NO usamos ni una resistencia pull-down ni pull-up, el estado del pin de entrada es “flotante” cuando el botón NO está presionado. Esto significa que el estado puede ser HIGH o LOW (inestable, no fijado), lo que resulta en una detección incorrecta.
- La peor práctica: inicializa el pin del Arduino como entrada (usando pinMode(BUTTON_PIN, INPUT)) y NO usa ninguna resistencia externa pull-down/pull-up.
- La mejor práctica: inicializa el pin del Arduino como entrada con pull-up interna (usando pinMode(BUTTON_PIN, INPUT_PULLUP)). No es necesario usar ninguna resistencia externa pull-down/pull-up.
Para facilitar a los principiantes, este tutorial utiliza el método más sencillo: inicializa el pin de Arduino como una entrada con pull-up interna sin utilizar la resistencia externa. Los principiantes NO necesitan preocuparse por cómo conectar la resistencia de pull-up o pull-down. Los principiantes solo necesitan usar el código de Arduino.
Diagrama de Cableado
- Diagrama de cableado entre Arduino y un botón montado en la placa de circuito impreso

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

This image is created using Fritzing. Click to enlarge image

Cómo programar para un botón
- Inicializa el pin de Arduino como una entrada con pull-up interno utilizando la función pinMode(). Por ejemplo, el pin 7:
- Lee el estado del pin de Arduino utilizando la función digitalRead().
※ Nota:
Hay dos casos de uso muy utilizados:
- El primero: Si el estado de la entrada es alto, haz algo. Si el estado de la entrada es bajo, haz otra cosa en sentido contrario.
- El segundo: Si el estado de la entrada cambia de bajo a alto (o de alto a bajo), haz algo.
Dependiendo de la aplicación, elegimos uno de ellos. Por ejemplo, en el caso de usar un botón para controlar un LED:
- Si queremos que el LED esté encendido cuando se presione el botón y apagado cuando el botón no esté presionado, debemos usar el primer caso de uso.
- Si queremos que el LED alterne entre encendido y apagado cada vez que se presione el botón, debemos usar el segundo caso de uso.
Cómo detectar el cambio de estado de bajo a alto
Código de Arduino
Pasos R\u00e1pidos
- Conecta Arduino a la PC mediante un cable USB
- Abre el IDE de Arduino, selecciona la placa y el puerto correctos
- Copia el código a continuación y ábrelo con Arduino IDE
- Haz clic en el botón Subir en el IDE de Arduino para cargar el código en Arduino

- Abrir Monitor Serial
- Presiona y suelta el botón varias veces
- Ver el resultado en Monitor Serial:
1 es ALTO, 0 es BAJO.
Explicación del código
Puede encontrar la explicación en la línea de comentarios del código Arduino anterior.
Modificando el código de Arduino
Modifiquemos el código para detectar los eventos de pulsación y liberación.
Pasos R\u00e1pidos
- Modifica el código como se indica a continuación
- Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino

- Abre el Monitor Serial
- Presiona el botón y luego suéltalo
- Mira el resultado en el Monitor Serial
※ Nota:
- Aunque hayas presionado y soltado el botón solo una vez, la salida en el Monitor Serial puede mostrar varios eventos de presión y liberación. Este es el comportamiento normal del botón. Este comportamiento se llama el “fenómeno de rebote”. Puedes aprender más en Arduino - Tutorial de debounce del botón.
- Para hacerlo mucho más fácil para los principiantes, especialmente cuando se usan múltiples botones, creamos una biblioteca llamada ezButton. Puedes informarte sobre la biblioteca ezButton aquí.
- Usa pinMode(BUTTON_PIN, INPUT) para el módulo de botón. Emite LOW cuando no está presionado y HIGH cuando está presionado.
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.
Desafíate a ti mismo
- Enciende el LED cuando se presione el botón y apaga el LED cuando el botón no esté presionado.
- Alterna el LED entre ENCENDIDO y APAGADO cada vez que se presione el botón.
Conocimientos Adicionales
¿Cuándo deberíamos usar una resistencia pull-down o pull-up para un pin de entrada y cuándo no deberíamos usarla?
- Si el sensor tiene estados cerrados (conectados a VCC o GND) o abiertos (NO conectados a nada), necesitas una resistencia de 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)...
- Si el sensor tiene dos niveles de voltaje definidos (BAJO y ALTO), no necesitas una resistencia de pull-up o pull-down. Por ejemplo, sensor de movimiento, sensor táctil ...