Arduino Nano - Botón
Este tutorial te enseña cómo usar Arduino Nano con un botón. En detalle, aprenderemos:
- Cómo conectar el botón al Arduino Nano
- Cómo programar Arduino Nano para leer el estado del botón
- Cómo programar Arduino Nano para detectar los eventos de pulsación y liberación del botón.
- Cómo evitar el problema de la entrada flotante al usar el botón con Arduino Nano.
- Cómo evitar el problema de rebote al usar el botón con Arduino Nano.
El botón se conoce como pulsador, botón táctil o interruptor momentáneo. Es un componente fundamental y se utiliza con frecuencia en proyectos de Arduino. Es sencillo de usar. Sin embargo, puede resultar confuso para los principiantes debido a sus aspectos mecánicos y físicos y a las diversas formas en que se puede utilizar. Este tutorial facilita las cosas a los principiantes.
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
Los principiantes suelen encontrar dos dificultades comunes al usar un botón:
1. Problema de entrada flotante:.
- Síntoma: El valor leído del pin de entrada no corresponde con el estado de pulsación del botón.
- Causa: El pin de entrada no tiene una resistencia de pull-up ni de pull-down en uso.
- Solución: Utilice una resistencia de pull-up o pull-down, y los pasos para hacerlo serán explicados en este tutorial.
2. Fenómeno de chattering:
- Síntoma: Aunque el botón se presiona solo una vez, el código de Arduino detecta múltiples pulsaciones.
- Causa: Los problemas mecánicos y físicos están haciendo que el estado del botón (o interruptor) cambie rápidamente entre LOW y HIGH varias veces.
- Solución: Para abordar este problema, se cubrirán técnicas de debounce en el tutorial Arduino Nano- Botón - Rebote
Solo las aplicaciones que requieren una detección precisa del número de pulsaciones deben tenerlo en cuenta.
※ Nota:
No confunda el botón con lo siguiente:
El pinout del botón
El pulsador, también conocido como botón táctil o interruptor momentáneo, es un tipo de interruptor que se cierra cuando se pulsa y se mantiene presionado, y se abre cuando se suelta. Existen varios tipos de pulsadores, que, a grandes rasgos, pueden clasificarse en dos grupos:
- PCB-mount push button (suitable for mounting on a breadboard)
- Panel-mount push button

Un pulsador de montaje en PCB normalmente tiene cuatro pines.

Sin embargo, estos pines están conectados entre sí en pares. En consecuencia, solo dos de los cuatro pines deben usarse, y estos dos no están conectados internamente.
Hay cuatro formas posibles de conectarse al botón, dos de las cuales son simétricas (como se ve en la imagen).

¿Por qué solo se utilizan dos pines de un botón, cuando tiene cuatro?
⇒ Para asegurar que esté montado de forma segura en la placa de circuito impreso (PCB) y pueda soportar cualquier fuerza de presión.
Un botón de montaje en panel suele tener dos pines.

El módulo de botón pulsador incluye una resistencia de pull-down integrada, lo que garantiza que la salida permanezca en estado bajo cuando el botón no está pulsado. Tiene tres pines:
- GND: Conecta este pin a tierra.
- VCC: Conecta este pin a una fuente de alimentación de 5V o 3.3V.
- OUT: Conecta este pin a una entrada digital de tu Arduino.
Con esta configuración, el módulo emite un nivel bajo cuando el botón no está presionado y emite un nivel alto cuando el botón está presionado.
Cómo funciona
- Cuando el botón no está presionado, los pines A y B no están conectados.
- Sin embargo, cuando se presiona el botón, los pines A y B quedan conectados.

Arduino Nano - Botón
El pin de un botón está conectado a VCC o a GND. El otro pin del mismo botón está conectado a un pin en una placa Arduino Nano. Al leer el estado de un pin de Arduino Nano configurado como entrada, podemos determinar si se ha presionado un botón o no.
Estado del Botón y Estado de Presión
La conexión entre el botón y el Arduino Nano, así como la configuración del pin del Arduino Nano, determinarán la relación entre el estado del botón y el estado de pulsación.
Hay dos formas de usar un botón con Arduino:
- El pin de un botón está conectado a VCC, el otro está conectado al pin de un Arduino con una resistencia de pull-down
- Cuando se presione el botón, el estado del pin del Arduino será ALTO. Si no, el estado del pin del Arduino será BAJO
- Se requiere una resistencia externa en este caso.
- Cuando se presione el botón, el estado del pin del Arduino será BAJO. Si no, el estado será ALTO
- Podemos usar una resistencia interna o externa. La resistencia interna ya está integrada en el Arduino Nano, y se puede configurar mediante código para Arduino Nano.
※ Nota:
- Si NO usamos ninguna resistencia externa de pull-down o pull-up, el estado del pin de entrada es “flotante” cuando el botón NO está presionado. Esto significa que el estado puede ser ALTO o BAJO (inestable, sin fijar), lo que provoca una detección incorrecta.
- La peor práctica: inicializa el pin de Arduino como entrada (pinMode(BUTTON_PIN, INPUT)) sin utilizar ninguna resistencia externa de pull-down o pull-up.
- La mejor práctica: inicializa el pin de Arduino como una entrada con pull-up interno (usando pinMode(BUTTON_PIN, INPUT_PULLUP)). No necesita utilizar ninguna resistencia externa de pull-down o pull-up.
Con el fin de simplificar las cosas para quienes recién están empezando, este tutorial utiliza el enfoque más directo: inicializar el pin del Arduino Nano como una entrada con pull-up interno sin necesitar una resistencia externa. No es necesario que los principiantes se preocupen por cómo conectar la resistencia pull-up o pull-down. Todo lo que tienen que hacer es usar el código de Arduino Nano.
Diagrama de Cableado
- Diagrama de cableado entre Arduino Nano y un botón montado en PCB

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

This image is created using Fritzing. Click to enlarge image
Ver La mejor forma de alimentar Arduino Nano y otros componentes.
Cómo programar para un botón
- Utilice la función pinMode() para configurar el pin del Arduino Nano como una entrada con pull-up interna.
- Por ejemplo, el pin 2:
- Utiliza la función digitalRead() para determinar el estado del pin del Arduino Nano.
※ Nota:
Existen dos casos de uso comunes:
- El primero: Si el estado de entrada es ALTO, realizar una acción. Si el estado de entrada es BAJO, realizar la acción opuesta.
- El segundo: Si el estado de entrada cambia de BAJO a ALTO (o de ALTO a BAJO), hacer algo.
Seleccionamos uno de estos según la aplicación. Por ejemplo, cuando se usa un botón para controlar un LED:
- Si queremos que el LED esté ENCENDIDO cuando se presione el botón y APAGADO cuando no se presione el botón, DEBEMOS usar el primer caso de uso.
- Si queremos que el LED se 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 Nano
Pasos R\u00e1pidos
- Conecta tu Arduino Nano a una computadora usando un cable USB.
- Inicia el IDE de Arduino, selecciona la placa y el puerto correctos.
- Copia el código a continuación y ábrelo en el IDE de Arduino.
- Haz clic en el Subir botón en el IDE de Arduino para compilar y cargar el código en Arduino Nano.

- Abrir el Monitor Serial.
- Presiona y suelta el botón varias veces.
- Consulta los resultados mostrados en el Monitor Serial.
1 es ALTO, 0 es BAJO.
Explicación del código
Consulta la explicación línea por línea que se encuentra en los comentarios del código fuente.
Modificando el código de Arduino Nano
Modifiquemos el código para que pueda reconocer eventos de pulsación y liberación.
Pasos R\u00e1pidos
- Modifique el código de la siguiente manera:
- Haga clic en el Upload botón de la IDE de Arduino para compilar y subir el código a la placa Arduino Nano.

- Abra el Monitor Serial.
- Presione el botón y manténgalo presionado.
- Libere el botón y observe el resultado en el Monitor Serial.
※ Nota:
- Aunque solo presiones y sueltes el botón una vez, la salida en el Monitor Serial puede mostrar múltiples eventos de pulsación y liberación. Este es el comportamiento típico del botón y se conoce como el "fenómeno de rebote". Para resolver este problema, por favor consulta el tutorial Arduino Nano - Rebote del botón.
- Hemos desarrollado una biblioteca, ezButton, para simplificar el proceso para quienes recién comienzan, especialmente cuando se trata de varios botones. Puedes obtener más información sobre la biblioteca ezButton aquí.
- Para el módulo de botón, configura el pin con pinMode(BUTTON_PIN, INPUT). La salida es 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.
Rétate a ti mismo
- Cuando se presione el botón, el LED se encenderá.
- Cuando no se pulse el botón, el LED se apagará.
- Cada vez que se pulse el botón, el LED cambiará entre ENCENDIDO y APAGADO.
Conocimiento Adicional
¿En qué casos es apropiado utilizar una resistencia pull-down o pull-up para un pin de entrada? ¿Cuándo no es adecuado utilizar una resistencia pull-down o pull-up para un pin de entrada?
- Si el sensor tiene estados cerrados o abiertos, se necesita una resistencia pull-up o pull-down para que pasen a LOW y HIGH. Ejemplos de estos sensores incluyen un pulsador, un interruptor y un interruptor de contacto magnético (sensor de puerta).
- Por otro lado, si el sensor tiene dos niveles de voltaje definidos (LOW y HIGH), no se requiere resistencia pull-up ni pull-down. Ejemplos de tales sensores son el sensor de movimiento y el sensor táctil.