Introducción
Controlar un LED mediante un pulsador es el primer proyecto práctico que se realiza al iniciarse con Arduino. Aunque parece un ejercicio sencillo, es fundamental entenderlo bien, ya que en él se esconde uno de los errores más comunes en electrónica digital: el problema del "estado flotante".
En este tutorial analizamos la lógica, el esquema y el código, explicando por qué un LED puede parpadear de forma errática sin las conexiones adecuadas y cómo solucionarlo mediante una resistencia Pull-Down o utilizando la función interna INPUT_PULLUP.
Materiales necesarios
Para realizar este montaje en tu banco de pruebas vas a necesitar los siguientes componentes básicos:
- 1 Placa Arduino UNO, Nano o Mega
- 1 LED (5mm, cualquier color)
- 1 Pulsador o botón push-button (4 pines)
- 1 Resistencia de 220Ω (protección para el LED)
- 1 Resistencia de 10kΩ (para el circuito Pull-Down)
- Cables Dupont / jumpers de conexión
- 1 Protoboard (placa de pruebas)
🛒 Componentes recomendados para este proyecto
Si necesitas adquirir los componentes o buscas un kit de electrónica completo para tus prácticas de laboratorio, aquí tienes las opciones recomendadas:
| Componente / Material | Descripción / Especificación | Enlace |
|---|---|---|
| Placa Arduino UNO R3 / R4 | Placa de desarrollo estándar para proyectos de microcontroladores. | Ver en Amazon |
| Kit de iniciación Arduino / ESP32 | Kit completo con placa, resistencias, pulsadores, LEDs, protoboard y sensores. | Ver en Amazon |
| Kit de LEDs variados (5mm / RGB) | Surtido de LEDs de colores para proyectos y señalización digital. | Ver en Amazon |
| Kit surtido de resistencias (1/4W 1%) | Contiene valores esenciales como 220Ω, 1kΩ y 10kΩ para Pull-Up/Pull-Down. | Ver en Amazon |
| Pulsadores de 4 pines para protoboard | Botones push-button compatibles con protoboard estándar. | Ver en Amazon |
| Protoboard + Kit de Cables Dupont | Placa de prototipado sin soldadura y jumpers M-M/M-H para interconexión. | Ver en Amazon |
| Multímetro digital TRMS de precisión | Polímetro para medición de voltajes, continuidad y resistencias en el circuito. | Ver en Amazon |
El Problema del "Estado Flotante" (Por qué el LED parpadea solo)
Un error común consiste en conectar directamente un pin del pulsador a 5V y el opuesto al pin digital de entrada en Arduino. Este conexionado genera inestabilidad.
Cuando el pulsador está presionado, el pin recibe una lectura clara de 5V (HIGH). Sin embargo, al soltarlo, el pin de entrada queda "en el aire", desconectado tanto de 5V como de GND (0V). En electrónica esto se conoce como estado flotante (floating state).
Un pin flotante actúa como una pequeña antena sensible al ruido electromagnético ambiental, provocando que el microcontrolador lea aleatoriamente valores de HIGH y LOW. Como consecuencia, el LED parpadeará de forma errática sin tocar el pulsador.
La solución: Garantizar un nivel lógico definido de 0V (LOW) cuando el pulsador permanezca reposado. Esto se logra conectando una resistencia de 10kΩ (Pull-Down) entre el pin digital y GND.
Esquema del Circuito (Conexiones paso a paso)
Sigue los pasos detallados a continuación para el montaje en protoboard:
- Conexión del LED:
- Conecta el patillaje largo del LED (ánodo, +) al Pin Digital 13 de Arduino.
- Conecta el patillaje corto (cátodo, -) a un extremo de la resistencia de 220Ω.
- Conecta el otro extremo de la resistencia de 220Ω a la línea de GND.
- Conexión del Pulsador:
- Conecta un pin del pulsador a la línea de 5V de Arduino.
- Conecta el pin diagonalmente opuesto del pulsador al Pin Digital 2 de Arduino.
- Resistencia Pull-Down (10kΩ):
- Inserta la resistencia de 10kΩ uniendo el Pin Digital 2 y la línea de GND. De este modo, la entrada permanecerá en 0V por defecto.
Código de Arduino
Copia y carga el siguiente boceto (sketch) en el IDE de Arduino:
Explicación detallada del Código
const int pinPulsador = 2;: Asigna un nombre descriptivo al pin, facilitando la legibilidad del código y su posterior mantenimiento.pinMode(pinLED, OUTPUT);: Declara en el bloquesetup()que el pin 13 actuará como salida de tensión.pinMode(pinPulsador, INPUT);: Declara el pin 2 como entrada lógica.digitalRead(pinPulsador);: Lee el nivel de tensión presente en la patilla (devuelveHIGHoLOW).if (estadoPulsador == HIGH): Evalúa si la entrada recibe 5V para conmutar la salida condigitalWrite().
Alternativa Avanzada: Usar INPUT_PULLUP (Ahorra la resistencia de 10kΩ)
El ATmega328P incorpora resistencias de Pull-Up internas activables por software, lo que permite simplificar el circuito omitiendo la resistencia física de 10kΩ.
- Modificación del circuito: Retira la resistencia externa de 10kΩ. Conecta un terminal del pulsador directamente al Pin 2 y el opuesto a GND.
- Actualización en setup(): Modifica la configuración del pin de entrada:
- Inversión de la lógica de lectura: Al activar Pull-Up, el estado por defecto sin pulsar será
HIGH(5V) y al presionar se derivará aLOW(0V). Por lo tanto, se invierte la condición:
🎥 Vídeo relacionado
Conclusión
Dominar la lectura de entradas digitales y evitar estados flotantes es un requisito indispensable para desarrollar proyectos robustos en robótica y domótica. En siguientes entregas analizaremos la implementación de conmutadores tipo interruptor (toggle) y el tratamiento de rebotes mecánicos (*debounce*) por software.

Comentarios
Publicar un comentario