Inicio » Leds para Arduino » Cómo hacer que un LED parpadeé con Arduino

En un artículo anterior te conté cómo conectar y encender un LED con Arduino. Si no viste ese tutorial te invito a que le eches un ojo.

Vamos a ir un paso más allá y en esta ocasión vamos a hacer que el LED parpadeé.

Materiales

Esta es la lista de materiales que vas a necesitar para hacer que un LED parpadeé con Arduino:

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

Conexiones

Voy a usar el pin 13 digital para este ejemplo, pero puedes usar otro si lo prefieres.

Como puedes ver en la imagen las conexiones son muy sencillas:

El ánodo del LED (positivo, pata larga) irá conectado al pin 13 digital (o al que hayas elegido). A través de este pin enviaremos 5V al led para que se encienda.

El cátodo del led (negativo, pata corta) irá conectado a tierra (pin GND). Entre el pin GND y el cátodo colocaremos una resistencia de 330Ω para evitar que se queme.

Recuerda que el pin 13 digital de Arduino tiene su propia resistencia interna, por lo que no sería necesario conectar una resistencia si usas este pin. Si usas otro no es opcional si no quieres quemar el LED.

Sketch

El código para este ejemplo es bastante sencillo también como puedes ver a continuación:

const int LED = 13;
 
void setup (){ 
    pinMode (LED, OUTPUT);
}
 
void loop (){ 
    digitalWrite (LED, HIGH);
    delay (1000);
    digitalWrite (LED, LOW);
    delay (1000);
}

Puedes descargar el sketch completo desde aquí: https://github.com/TechKrowd/arduino_leds/blob/master/ledParpadeo/ledParpadeo.ino

Vamos a analizar el código escrito en el sketch del ejemplo.

Empezando por la primera línea:

const int LED = 13;

He declarado una constante (const) de tipo entero (int) con identificador LED y valor 13 (Si has conectado el LED a otro pin, debes cambiar el 13 por el número del pin digital que estés usando). De esta forma, cada vez que escriba LED en el código, será equivalente a escribir 13. Si en un futuro quiero cambiar de pin también será mucho más sencillo modificar el sketch.

Lo siguientes es la configuración del pin como salida, Eso se hace en la función setup. Recuerda que se ejecuta siempre una vez al inicio de la ejecución y debe contener siempre la configuración que se le va a dar al Arduino:

void setup (){ 
    pinMode (LED, OUTPUT);
}

La instrucción pinMode (LED, OUTPUT) configura el pin 13 como salida. El primer parámetro que le paso a la función es el número del pin que estoy configurando, por eso utilizo la constante LED con valor 13 que declaré antes. El segundo parámetro es el modo, en este caso OUTPUT (constante predefinida en Arduino para indicar modo salida) porque quiero enviar un pulso al LED.

Una vez terminada la configuración inicial se ejecutará la función loop. Recuerda que esta función se comporta como un bucle infinito y su ejecución es repetitiva:

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

Dentro de la función loop se encuentra el código responsable de encender y apagar el LED. Vamos a analizarlo.

La instrucción digitalWrite (LED, HIGH) envía un pulso alto al pin digital 13. Igual que ocurría con la función pinMode, el primer parámetro es el número de pin, por eso utilizo la constante LED con valor 13. El segundo parámetro es el valor que envío al pin. Como quiero encender el LED necesito enviar un pulso alto, es decir, 5V. La constante HIGH (predefinida en Arduino) representa este valor.

La instrucción delay (1000) genera un retardo en la ejecución de la siguiente instrucción. El parámetro que recibe entre paréntesis es el tiempo que durará el retardo en milisegundos (1000 ms = 1s). Con esto consigo que el LED permanezca encendido durante un segundo. La siguiente instrucción (apagar el LED) no se ejecutará hasta que pase ese tiempo.

Transcurrido el segundo de la función delay, se ejecutará digitalWrite (LED, LOW). El funcionamiento es el mismo que el indicado con valor HIGH, con la diferencia de que esta instrucción enviará 0V (LOW) al pin 13 (constante LED). Al enviar 0V el LED se apagará.
Nuevamente escribo la instrucción delay (1000). Recordemos que la función loop se repite, por lo que después de esta instrucción se volverá a ejecutar digitalWrite con valor HIGH. Al usar delay en este punto, consigo retrasar su ejecución de forma que el LED estará apagado un segundo.

Cuando la función loop se repita volveremos a empezar todo el ciclo, consiguiendo de esta forma el parpadeo.

Ya solo falta cargar el sketch en la placa Arduino y comprobar que funciona correctamente.

Si quieres probar el sketch sin conectar el LED, recuerda que Arduino tiene un LED, etiquetado con una L, conectado internamente al pin 13. Puedes usar este LED para comprobar el funcionamiento:

LED interno pin 13 Arduino