Skip to Content

Cómo hacer parpadear un LED con Arduino (4 formas diferentes)

Cómo hacer parpadear un LED con Arduino (4 formas diferentes)

Crear LEDs parpadeantes es uno de los primeros proyectos sencillos que hacen los recién llegados a Arduino.

Es una tarea fácil de empezar y en este tutorial te enseñaré cuatro formas diferentes de manejar un LED usando Arduino. 

Los LED están en todas partes, en aplicaciones como la iluminación del hogar, las luces de la calle, los vehículos, las pantallas de los móviles, los mandos de la televisión, las luces de fondo y mucho más.

Cubriré los fundamentos de los LED, los tipos de LED, consejos para elegir los componentes limitadores de corriente adecuados y mucho más. 

Obtendrá un diagrama de conexión completo, un código de ejemplo de Arduino que funciona y respuestas a una colección de las preguntas más frecuentes. 

Comencemos.

Componentes necesarios para construir el proyecto Arduino y LED

Componentes de hardware

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

Conceptos básicos de un LED

Aquí voy a compartir algunos datos interesantes y básicos sobre los LED.

Esto le ayudará a comprender los conceptos como la tensión de avance, la corriente máxima, la forma de averiguar el valor correcto de una resistencia, etc. 

LED son las siglas de Light Emitting Diode (diodo emisor de luz). Un diodo es un semiconductor que conduce sólo en una dirección.

Los LED están disponibles en varios colores. Las opciones de color dependen de la luz de onda de la luz que produce el LED. 

El LED tiene dos pines. El ánodo y el cátodo.

Conceptos básicos de un LED
LED pins

El pin del ánodo es el pin (+). El pin del cátodo es el pin (-).

Si conectas el terminal positivo de una alimentación al ánodo y el terminal negativo de la alimentación al cátodo del LED, éste se iluminará. 

En los dispositivos de montaje superficial (SMD) las indicaciones del ánodo y del cátodo son difíciles de percibir.

Debe consultar la hoja de datos para entender la polaridad. 

Advertencia: Nunca conectes un LED directamente a la alimentación. Sería conveniente poner siempre una resistencia en serie. Veremos cómo calcular el valor de la resistencia más adelante en la sección posterior.

¿Cómo identificar el terminal positivo de un LED?

Cómo identificar el terminal positivo de un LED
Positive Pin of LED

El terminal positivo del LED será más largo que el terminal negativo, como se muestra en la imagen anterior. 

¿Y si las clavijas de los LEDs ya están cortadas para adaptarse a la longitud? 

Encontrará dos partes si todavía puede ver a través del cristal LED. Una parte es significativamente más grande que la otra.

En la imagen de abajo, se puede ver fácilmente que la parte del cátodo es más ancha que el ánodo dentro del LED.

Identify Cathode and Anode of an LED
Identify Cathode and Anode of an LED

 Vamos a entender algunas especificaciones críticas de los LED a partir de una hoja de datos de ejemplo.

ParámetroValorObservaciones
Tensión directa2,1 a 2,8 VTenga siempre en cuenta la tensión de avance máxima del LED al elegir una fuente de alimentación.
Corriente inversa100 uA
Tensión inversa5 VUna tensión superior a este valor destruirá el LED de forma permanente.
Longitud de onda máxima590 nmLas diferentes longitudes de onda corresponden a diferentes colores.
Intensidad luminosa5 a 15 mcd
  • Tensión directa - La tensión mínima necesaria para encender el LED. La tensión directa de los LEDs rojos suele ser menor que la de los demás LEDs de color. La tensión directa de los LEDs blancos suele estar en el rango de 3 V a 3,5 V.

El Arduino UNO acciona todos los LEDs porque una alimentación de 5 V lo alimenta. Si utilizas el Arduino micro u otras placas alimentadas por 3,3 V, tienes que utilizar circuitos adicionales. 

  • Corriente de Avance Máxima - Es la corriente máxima que puede soportar el LED. Si se aumenta la corriente, el LED se calentará y se quemará. También es peligroso anular el límite de corriente.
  • Tensión inversa - La tensión inversa es la máxima tensión inversa que se puede aplicar con seguridad a un LED. Si se aplica una tensión inversa al LED, éste se encenderá. Hay un límite en el valor. Si se aplica una tensión superior a la tensión inversa especificada, el LED fallará o se quemará. 
  • Intensidad luminosa - La intensidad luminosa es una medida del brillo del LED. Si tienes dos LEDs con diferentes intensidades luminosas a la misma corriente de avance, el LED con mayor intensidad luminosa es más eficiente. 
  • Pico de longitud de onda - Los colores varían en función de la longitud de onda de la luz emitida por los LED. Así, la longitud de onda es una forma más precisa de etiquetar el color del LED.

En la imagen de abajo, se puede ver que la luz visible tiene un rango de longitud de onda de 400 nm a 700 nm.

la luz visible tiene un rango de longitud de onda de 400 nm a 700 nm
Wavelength ranges

La hoja de datos de ejemplo 590 nm fue la longitud de onda con el color amarillo difuso, que puede relacionarse con la imagen de arriba. 

En la tabla siguiente se resumen las tensiones de avance de los LED de distintos colores.

Forward Voltages for different Colors of LEDs
Forward Voltages for different Colors of LEDs

¿Por qué hay que utilizar siempre una resistencia en serie con el LED?

Los LEDs son dispositivos controlados por corriente. Una vez que proporcionas la tensión de avance para el LED, actúan como un interruptor cerrado.

Por lo tanto, debería haber otro elemento para limitar la corriente. 

Puedes utilizar la siguiente ecuación para encontrar el valor correcto de la resistencia.

encontrar el valor correcto de la resistencia

Dónde,

 R → Resistencia del resistor 

VS → Tensión de alimentación de entrada

VLED → Tensión directa del LEDILED → Corriente directa del LED

Instrucciones paso a paso para conectar el LED a un Arduino UNO

En esta sección, vamos a construir un proyecto utilizando Arduino UNO y el LED. Las conexiones son fáciles de tomar significativamente menos tiempo para completar.

Empecemos con las conexiones de hardware.

Encontrarás el código Arduino necesario en las secciones posteriores.

¿Cómo conectar un LED al Arduino UNO?

A continuación se muestra la guía de conexión paso a paso para completar el Arduino y el LED juntos. 

Para completar las conexiones, necesitarás:

  1. Arduino UNO
  2. LED
  3. Resistencia

Paso 1: Comience con las conexiones GND.

Comienza con las conexiones GND

Conecta el pin catódico del LED al pin GND del Arduino. Puedes elegir cualquiera de los pines GND disponibles. 

Paso 2: Conectar la resistencia limitadora de corriente.

Conecte la resistencia limitadora de corriente

Conecta una resistencia de 220 ohmios a la patilla del ánodo del LED. Puedes elegir cualquier valor de resistencia entre 220 ohmios y 1 kohmio. 

Paso 3: Completar la conexión de la resistencia.

Completar la conexión de la resistencia

Conecta el otro extremo de la resistencia al pin 9 del Arduino UNO. 

Ejemplo de código Arduino para el proyecto Arduino y el LED

En esta sección, vamos a ver algunos ejemplos de cómo podemos manejar el LED usando Arduino UNO.

Puedes copiar y pegar el código en la ventana del editor y programar el Arduino.

Proyecto 1 - Parpadeo del LED usando digitalWrite()

En este proyecto, se alternará el LED cada segundo.

int ledPin = 9; 

void setup() {
  pinMode(ledPin, OUTPUT);
}
 
void loop() {
  digitalWrite(ledPin, HIGH);
  delay(1000); // Wait for 1 second
 
  digitalWrite(ledPin, LOW);
  delay(1000); // Wait for 1 second
}

Esta es una forma clásica de alternar un pin GPIO. Especifica el pin de Arduino al que está conectado el LED.

int ledPin = 9;

Establezca el pin como salida utilizando la siguiente instrucción.

pinMode(ledPin, OUTPUT);

Establezca el estado del pin en HIGH o Low utilizando la función digitalWrite.

 digitalWrite(ledPin, HIGH);

Esta es la salida. El LED se apaga y se enciende cada segundo.

El LED se apaga y se enciende cada segundo

Proyecto 2 - Parpadeo del LED usando millis()

Aquí hay otro método para alternar el LED. En lugar de utilizar la función delay(), puede utilizar la función millis() para seguir el tiempo.

Una vez transcurridos 1000 milisegundos, cambiará el estado del pin. 

El tamaño del programa es menor que el anterior. Si tiene alguna pregunta relacionada con el código, por favor publíquela en los comentarios.

int ledPin = 9; 
 
void setup() {
  pinMode(ledPin, OUTPUT);
}
 
void loop() {
  digitalWrite(ledPin, (millis() / 1000) % 2);
}

La función digitalWrite( ) toma un número como segundo argumento. Si envía un 1, el LED se encenderá (lógica HIGH).

Como está dividiendo el milis() entre 1000, cada vez que el milis() alcance un múltiplo de 1000, el módulo 2 generará un uno o un cero. 

Proyecto 3 - Parpadeo del LED utilizando interrupciones del temporizador

Este es un método avanzado para alternar el LED. En lugar de utilizar las funciones, utilizará temporizadores de hardware incorporados para alternar el LED. 

La ventaja de utilizar un temporizador incorporado es que puede realizar otras funciones de software.

La función delay() ocupó por completo el control del programa en los ejemplos anteriores. 

Estás habilitando la interrupción del temporizador. En la rutina de servicio de interrupción, alternarás el estado del pin.

La rutina de servicio de interrupción se llama cada segundo.

int ledPin = 9; 

void setup() {
  TCCR1A = 0;
  TCCR1B = 0;
  bitSet(TCCR1B, CS12);  // 256 prescaler
  bitSet(TIMSK1, TOIE1); // timer overflow interrupt
  pinMode(ledPin, OUTPUT);
}
 
ISR(TIMER1_OVF_vect) {
  digitalWrite(ledPin, !digitalRead(ledPin));
}
 
void loop() {
}

Proyecto 4 - Parpadeo del LED utilizando temporizadores y contadores

int ledPin = 9;
 
void setup() {
  TCCR1A = 0;
  TCCR1B = 0;
  bitSet(TCCR1B, CS12);  // 256 prescaler
  OCR1A = 62500;
  bitSet(TCCR1A, COM1A0); // Toggle pin OC1A (9)
  pinMode(ledPin, OUTPUT);
}
 
void loop() {
}

En el código anterior, no estás usando la función digitalWrite(). Estás usando temporizadores y contadores juntos para alternar el pin 9.

Para saber más sobre las características del temporizador de Arduino, consulte el enlace.

Preguntas frecuentes sobre los proyectos de LED y Arduino

He incluido una lista de las preguntas más frecuentes sobre los proyectos construidos con Arduino y LEDs.

Si tiene más preguntas, por favor publíquelas en la sección de comentarios.

Estaré encantado de responderles. 

1. ¿Cómo puedo programar para encender las luces LED con mi Arduino?

El Arduino puede manejar directamente los LEDs. Debe enviar un alto lógico en la señal GPIO para encender el LED.

Puedes utilizar la función digitalWrite() para establecer el valor del GPIO a un alto o un bajo. 

Hay dos formas posibles de conectar el LED. Puede ser una fuente de corriente o un sumidero de corriente.

Debes decidir la lógica en función de la forma de conexión del LED.

LED connected as sink or source
LED connected as sink or source

En la imagen anterior, el LED de la izquierda se encenderá cuando el pin GPIO se ponga en lógica 1.

El LED derecho se encenderá cuando el GPIO se ponga a cero lógico. 

2. ¿Puedo conectar el LED directamente al Arduino? 

El Arduino puede soportar hasta 20 mA de corriente continua. Si sólo utiliza un LED, puede conectar directamente el LED al Arduino.

Si utilizas varios LEDs, es mejor utilizar un buffer o un interruptor MOSFET para controlarlos. 

El Arduino puede consumir hasta 20 mA por pin. Cuando conectes varios LEDs, el consumo de corriente será demasiado alto, dañando el puerto GPIO o el regulador de a bordo debido al exceso de energía.

3. ¿Puedo conectar el LED sin una resistencia?

No. Si conectas un LED sin la resistencia, el LED absorberá la corriente máxima que puede suministrar el Arduino UNO.

El LED puede quemarse o explotar, lo cual es muy peligroso. 

Conecte siempre una resistencia limitadora de corriente en serie con el LED. 

4. ¿Cuántos LEDs puedo iluminar con el Arduino UNO?

El número de LEDs que se pueden encender depende de la corriente de LEDs ajustada.

Si utilizas resistencias limitadoras de corriente, que limitan la corriente a 1 mA por LED, puedes accionar hasta 20 LEDs sin dañarlos.

Los LEDs no serán más brillantes. Para uso en interiores, 1 mA es suficiente en la mayoría de los casos.

Conclusión

En este artículo, cubrimos los fundamentos de los LEDs. y te mostré cómo cuatro formas diferentes de hacer parpadear un LED con Arduino.

Estoy seguro de que después de leer esta guía, ya puedes completar las conexiones y probar los cuatro métodos de conmutación de los LEDs. 

He utilizado los LEDs en muchos proyectos diferentes y a menudo los uso para indicar el estado del programa. ¡Un solo LED puede indicar más de diez estados! 

Puedes variar la velocidad de parpadeo, cambiar el número de parpadeos, etc. 

¿Para qué piensa utilizar los LED?

Comparta sus proyectos en los comentarios.