Introducción
Aprender a leer un pulsador individual es el primer paso en Arduino, pero en proyectos reales como paneles de control, teclados matriciales o mandos de juegos, necesitas leer múltiples pulsadores al mismo tiempo.
Muchos tutoriales básicos enseñan a declarar variables independientes para cada botón y concatenar interminables estructuras if. Eso genera un código difícil de mantener. En este tutorial vamos a aplicar la solución limpia y eficiente: usar Arrays (vectores) y bucles for para leer múltiples entradas digitales con muy pocas líneas de código, enviando los estados en tiempo real al Monitor Serie.
Materiales Necesarios
Para construir el circuito de lectura múltiple en protoboard, necesitarás los siguientes componentes esenciales:
| Componente | Descripción | Enlace |
|---|---|---|
| Arduino UNO R3 / R4 | Placa de desarrollo para procesar las entradas digitales de los pulsadores. | Ver en Amazon |
| Pulsadores / Botones de 4 pines | Interruptores momentáneos compatibles con montaje directo en protoboard. | Ver en Amazon |
| Resistencias 10kΩ (Pull-Down) | Resistencias para estabilizar el estado lógico a GND y evitar lecturas flotantes. | Ver en Amazon |
| Protoboard / Placa de Pruebas | Base de conexiones sin soldadura para montar el circuito de entradas. | Ver en Amazon |
| Kit de Cables Dupont (Jumper) | Cables de puentes Macho-Macho para conectar las líneas de señal y alimentación. | Ver en Amazon |
El Concepto Clave: ¿Por qué usar Arrays y Bucles?
Imagina declarar 5 pulsadores de forma tradicional: int pulsador1 = 2; int pulsador2 = 3; ... y escribir la función digitalRead() repetida cinco veces. Si tu proyecto escala a 10 o 15 botones, el código se vuelve insostenible.
La alternativa eficiente es agrupar las referencias de los pines en un Array: int pulsadores[] = {2, 3, 4, 5, 6};. Un Array actúa como una lista ordenada donde cada elemento ocupa una posición (índice). Mediante un bucle for, recorremos secuencialmente todas las posiciones para leer el estado de cada entrada usando una única estructura de código.
Esquema de Montaje y Conexiones
Nota sobre el montaje de la imagen: En el circuito físico de demostración utilizamos 3 pulsadores conectados a los pines 10, 11 y 12 de un Arduino Mega. El código fuente provisto contempla 5 pulsadores (pines 2 al 6). La lógica es idéntica; si tu montaje cuenta con 3 o más entradas, solo debes adaptar los números asignados dentro del Array.
Esquema de conexión con resistencias Pull-Down:
- Alimentación común: Un terminal de cada pulsador se conecta a la línea de 5V.
- Pin de lectura digital: El terminal opuesto se conecta al Pin Digital correspondiente (en el ejemplo, pines 10, 11 y 12).
- Resistencia Pull-Down: Se coloca una resistencia de 10kΩ desde cada Pin Digital conectado hacia la línea de GND.
Código de Arduino Optimizado (Ejemplo con Array)
A continuación se muestra el programa estructurado mediante vectores. Puedes ajustar la declaración inicial del Array para adaptar el número y asignación de pines a tu montaje concreto.
Explicación del Código paso a paso
El programa implementa técnicas de optimización esenciales en C++ para microcontroladores:
- Declaración de Vectores (
pulsadores[]): Almacena los pines en posiciones consecutivas comenzando desde el índice cero (pulsadores[0]equivale al primer pin asignado). Si modificas los pines en la declaración inicial, no necesitas reescribir la lógica posterior. - Cálculo dinámico con
sizeof(): La expresiónsizeof(pulsadores) / sizeof(int)determina la longitud real del vector dividiendo el tamaño total en bytes entre el tamaño de la variable base. Esto permite añadir o quitar botones del Array sin alterar el resto del código. - Iteración con Bucle
for: La variable del bucleirecorre la lista desde 0 hastanumPulsadores - 1. En cada paso se ejecutadigitalRead(pulsadores[i])asignando la lectura al elemento correspondiente. - Formateo e impresión Serie: Las instrucciones
Serial.print()ySerial.println()muestran la información estructurada en la consola del entorno de desarrollo IDE.
Configuración del Monitor Serie en Arduino IDE
Para visualizar las lecturas enviadas por la placa a través del cable USB:
- Carga el programa compilado en la placa Arduino.
- Abre el Monitor Serie en el IDE mediante el icono de la lupa (o con el atajo
Ctrl + Shift + M). - Selecciona una velocidad de comunicación de 9600 baudios en el desplegable inferior para sincronizarla con
Serial.begin(9600). - Al presionar cada pulsador, verás reflejado el evento correspondiente de forma inmediata.
Conclusión
Aprender a gestionar agrupaciones de datos mediante Arrays y bucles iterativos permite escribir código limpio, modular y escalable en sistemas embebidos. Esta estructura te servirá como base para crear teclados personalizados, matrices de entrada o controladores avanzados.
Si deseas profundizar en la teoría de las resistencias Pull-Down e ignorar lecturas no deseadas por ruido eléctrico, consulta nuestro tutorial dedicado sobre cómo encender un LED con un pulsador en Arduino (Sin fallos).
Comentarios
Publicar un comentario