Ir al contenido principal

Encender un LED con un Pulsador en Arduino (Tutorial Completo y sin fallos)

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:

  1. 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.
  2. 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.
  3. 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:

sketch.ino
// Definición de pines
const int pinPulsador = 2;  // Entrada digital para la lectura del pulsador
const int pinLED = 13;      // Salida digital conectada al LED

int estadoPulsador = 0;     // Variable de almacenamiento para el estado del botón

void setup() {
  // Configuración de modos de pin
  pinMode(pinLED, OUTPUT);
  pinMode(pinPulsador, INPUT);
}

void loop() {
  // Lectura del valor lógico en el pin digital
  estadoPulsador = digitalRead(pinPulsador);

  // Evaluación de la condición
  if (estadoPulsador == HIGH) {
    digitalWrite(pinLED, HIGH); // Activa el LED al presionar
  } else {
    digitalWrite(pinLED, LOW);  // Mantiene apago el LED mediante la resistencia Pull-Down
  }
}

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 bloque setup() 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 (devuelve HIGH o LOW).
  • if (estadoPulsador == HIGH): Evalúa si la entrada recibe 5V para conmutar la salida con digitalWrite().

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Ω.

  1. Modificación del circuito: Retira la resistencia externa de 10kΩ. Conecta un terminal del pulsador directamente al Pin 2 y el opuesto a GND.
  2. Actualización en setup(): Modifica la configuración del pin de entrada:
    setup()
    pinMode(pinPulsador, INPUT_PULLUP); // Habilita la resistencia Pull-Up interna (~20kΩ)
  3. 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á a LOW (0V). Por lo tanto, se invierte la condición:
    loop()
    if (estadoPulsador == LOW) { // El botón se detecta en nivel bajo
      digitalWrite(pinLED, HIGH);
    } else {
      digitalWrite(pinLED, LOW);
    }

🎥 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

Entradas populares de este blog

Cómo evitar que Windows apague la pantalla o el disco duro (con gpedit)

Introducción Uno de los problemas más frecuentes en Windows es la suspensión automática del sistema, el apagado de la pantalla o la desactivación del disco duro tras unos minutos de inactividad. Aunque esto busca ahorrar energía, puede resultar frustrante si utilizas tu PC como servidor doméstico, servidor Plex, máquina de descargas o para tareas de larga duración . Si bien es posible cambiar estos ajustes desde la configuración tradicional de energía, muchas veces Windows ignora nuestras preferencias debido a directivas internas. La solución definitiva para evitar que tu ordenador se apague o suspenda es utilizar el Editor de Directivas de Grupo Local (gpedit.msc) . ⚠️ Advertencia sobre la versión de Windows El comando gpedit.msc solo está disponible de forma nativa en las ediciones Windows Pro, Enterprise y Education . Si utilizas Windows Home , esta herramienta no estará presente por defecto y deberás recurrir a la configuración convencional del Panel de Control. Paso 1...

Alarma con Arduino y Sensor Ultrasónico HC-SR04 (Tutorial paso a paso)

Introducción Crear un sistema de seguridad o detección de movimiento no tiene que ser complicado ni caro. En este tutorial vamos a construir una alarma con Arduino y un sensor de ultrasonidos (el famoso HC-SR04). Este proyecto es ideal para principiantes porque aprendes a leer sensores externos y a generar una respuesta física (encender un LED y hacer sonar un buzzer) cuando alguien se acerca demasiado. A continuación, te explico cómo funciona el sensor, qué materiales necesitas, cómo montar el circuito y te desgloso el código línea por línea para que realmente entiendas lo que estás programando. ¿Cómo funciona el Sensor Ultrasónico HC-SR04? Este sensor funciona igual que un sonar o los delfines: emite un sonido imperceptible para el humano (ultrasonido) y espera a que ese sonido choque contra un objeto y regrese (eco). Pin Trig (Trigger - Disparo): Le dice al sensor que debe "gritar" y emitir el pulso de ultrasonido. Pin Echo (Eco - Recepción): Se queda escuchando...

Instalar el driver USB a TTL PL2303HX en Windows 10 (Solución al Error Code 10)

Introducción: ¿Para qué sirve el convertidor USB a TTL? Los adaptadores USB a TTL (equipados con chips como el PL2303HX , FTDI o CP2102) son herramientas indispensables en el taller de cualquier maker, técnico o entusiasta de la electrónica. Nos permiten establecer comunicación serie UART entre un ordenador y dispositivos como Arduino, ESP32-CAM, routers, receptores de satélite o tablets . Sin embargo, conectar este tipo de cables en Windows 10 o Windows 11 suele transformarse en un dolor de cabeza. Al conectar el dispositivo, el sistema instala automáticamente el controlador más reciente y muestra un aviso de fallo con el icono amarillo de advertencia: "Este dispositivo no puede iniciar (Código 10)" . A continuación te explicamos por qué sucede y cómo solucionarlo en pocos minutos. ⚠️ Causa del fallo: Bloqueo de chips no oficiales por Prolific La inmensa mayoría de los módulos USB-TTL económicos integran una revisión o clon del chip Pr...