Inicio » Leds para Arduino » Cómo hacer que 2 LEDs parpadeen de forma alterna con Arduino

Este tutorial es una evolución del anterior en el que veíamos cómo hacer parpadear un LED con Arduino.

Vamos a ir un paso más allá y vamos a conectar un segundo LED al circuito. En este caso los 2 LEDs van a parpadear, pero de forma alterna. Es decir, cuando uno esté encendido el segundo estará apagado. Y cuando el primero se apague se encenderá el segundo.

Puedes ver el resultado que buscamos en el siguiente vídeo:

Materiales

Una placa Arduino (Yo usaré Arduino UNO)
2 leds de 5 mm
2 resistencias de 330Ω
Cables
Una protoboard
Un ordenador con el IDE de Arduino instalado

Conexiones

Cómo hacer que 2 LEDs parpadeen de forma alterna con Arduino

Como puedes ver en la imagen he conectado un pin GND de Arduino a la línea marcada como negativa de la protoboard (cable negro). De esta forma extiendo la tierra del Arduino a toda la línea de la protoboard aumentando los pines disponibles con GND para conectar los LEDs cómodamente.

Para conectar los LEDs debes elegir dos pines digitales del Arduino. Yo voy a usar el pin 12 y el pin 8, pero tú puedes utilizar los que prefieras.

Recuerda, el cátodo del LED (negativo, pata corta) debe conectarse a una resistencia de 330Ω. El otro extremo de la resistencia irá a tierra.

En el caso del ánodo (positivo, pata larga). Cada LED se conectará a un pin digital. En mi caso el primer LED va conectado al pin 12 digital y el segundo al pin 8 digital.

En cuanto a las conexiones eso es todo. Vamos a seguir con el sketch.

Sketch

El código que necesitamos para hacer que los LEDs parpadeen de forma alterna es el siguiente:

//DECLARACIONES
const int LED_12 = 12;
const int LED_8 = 8;

//CONFIGURACIÓN 
void setup (){ 
    pinMode (LED_12, OUTPUT);
  	pinMode (LED_8, OUTPUT);
}

//FUNCIÓN LOOP 
void loop (){ 
    digitalWrite (LED_12, HIGH);
  	digitalWrite (LED_8, LOW);
    delay (1000);
    digitalWrite (LED_12, LOW);
  	digitalWrite (LED_8, HIGH);
    delay (1000);
}

Declaraciones

En las líneas 1 y 2 estoy declarando dos constantes enteras:

const int LED_12 = 12;
const int LED_8 = 8;

La primera constante, que he llamado LED_12, representa el pin digital 12, por eso le he asignado ese valor.

Ocurre lo mismo con la segunda constante, la que he llamdo LED_8. Pero en este caso representa el pin digital 8.

Configuración

Lo siguiente es la configuración. Recuerda que siempre se utiliza la función setup para configurar el Arduino:

void setup (){ 
    pinMode (LED_12, OUTPUT);
  	pinMode (LED_8, OUTPUT);
}

Como en ambos pines digitales hay conectados sendos LEDs, debo configurar los 2 como salida puesto que enviaré pulsos a través de ellos para poder encender y apagar los LEDS. Por eso utilizo la función pinMode.

El primer parámetro de la función pinMode es el número del pin que quiero configurar (LED_12 y LED_8). El segundo parámetro es el modo en el que configuro el pin. Como ya he dicho, ambos pines serán salidas, por eso utilizo la constante OUTPUT.

Función loop

Ya solo falta la función loop:

void loop (){ 
    digitalWrite (LED_12, HIGH);
  	digitalWrite (LED_8, LOW);
    delay (1000);
    digitalWrite (LED_12, LOW);
  	digitalWrite (LED_8, HIGH);
    delay (1000);
}

La primera instrucción, digitalWrite(LED_12, HIGH) enciende el LED. Al enviar HIGH estoy mandando un pulso alto así que el LED conectado al pin 12 se enciende.

La siguiente instrucción, digitalWrite(LED_8, LOW) apaga el LED conectado al pin 8 puesto que envío un pulso bajo con LOW.

Ahora mismo estaría el LED conectado al pin 12 encendido y el LED del pin 8 apagado.

La siguiente instrucción es delay(1000). Esta instrucción provoca un retraso de 1000 mili segundos, es decir, de 1 segundo. Durante este tiempo no se ejecuta nada más, por lo que los LEDs permanecen en el estado en el que están.

Una vez la ejecución de delay se completa se ejecutan las siguientes instrucciones. Si te fijas, vuelven a ser llamadas a digitalWrite, pero en este caso se envían pulsos opuestos a los anteriores. Ahora se envía LOW al pin 12 y HIGH al 8. Con esto conseguimos que el 12, que estaba encendido, se apague y el 8, que estaba apagado, se encienda.

Como puedes ver, el pin 12 y el 8 siempre tendrán estados opuestos, por lo que nunca estarán encendidos o apagados a la vez.

Antes de terminar la ejecución de la función loop verás que hay de nuevo un delay de 1 segundo. Con esto aseguramos que los LEDS conserven ese estado durante 1 segundo antes de que la función loop vuelva a empezar (no olvides que siempre se ejecuta en bucle).

Y con esto estaría el sketch completo. Ya puedes cargarlo en tu Arduino y probarlo.

Videotutorial

Aquí tienes el videotutorial completo por si te quedan dudas de cómo hacer que 2 leds parpadeen con Arduino:


Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).

No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso