Parpadear un LED con Arduino

Parpadear un LED es el “Hola Mundo”de Arduino, es un programa muy básico, también es el programa que deberías cargar para asegurarte que tu Arduino esta trabajando correctamente.

En nuestro post anterior, usamos el programa de Blink para verificar que nuestro Arduino funcionara correctamente. Esta vez haremos lo mismo, excepto que usaremos un LED conectado a un pin digital en lugar de usar el LED que viene embebido en la tarjeta Arduino.

Materiales necesarios

Protoboard

La protoboard es un tablero reusable generalmente usado para hacer prototipos de circuitos electrónicos. La placa consiste de unas series de agujeros en un patrón de malla. En el interior de la protoboard, esos agujeros están conectados mediante metal conductivo.

Protoboard
Protoboard

Las tiras en la parte superior e inferior están diseñadas para conectar la fuente de poder (positivo y negativo). Los componentes del medio pueden usarse para conectar sensores, cables, leds, etc.

Resistor

Un resistor es un dispositivo diseñado para oponer resistencia a una corriente eléctrica y por lo tanto, causará una disminución del voltaje. Pueden imaginar al resistor como un tubo reductor en una tubería de agua, cuando el agua (corriente eléctrica) llega al reductor, la corriente de agua que sale del reductor es menor. Del mismo modo, los resistores se usan para disminuir el voltaje o corriente que pasa a otros dispositivos. La resistencia se mide en una unidad llamada Ohmio (su símbolo es la letra griega omega – Ω).

Resistor
Resistor
¿Cómo calcular la resistencia necesaria?

Para calcular el valor de un resistor ser usa la ley de Ohm que se resume en la siguiente fórmula:

R=(V_S-V_L)/I

Donde V_S es el voltaje de fuente de poder, V_L es el voltaje que necesita el LED para funcionar y I es la corriente que pasa por el LED.
Esos valores los pueden buscar en el datasheet del LED o preguntando en la tienda donde compren su LED. El más común requiere un voltaje de 2V y una corriente de 35mA (0.035A).

En nuestro caso, usaremos un Arduino UNO por lo que el voltaje de la fuente será de 5V y un LED con las características mencionadas anteriormente, sustituimos valores en la formula mostrada arriba

R=(5-2)/0.035

Lo cual nos da un resultado de 85.71. No existen resistores con ese valor de resistencia, por lo que se utiliza un resistor que tenga un valor muy cercano, en este caso podemos usar un resistor de 100Ω o mayor.

Nunca usen un valor de resistencia menor al necesario. Ya que esto permitiría pasar mucha corriente a través del LED y dañarlo permanentemente (quemarlo).

LED

LED son las siglas de Diodo emisor de luz, un diodo es un componente electrónico que sólo permite pasar corriente hacía una dirección. Si la corriente trata de ir en sentido contrario, el diodo la detiene. Un LED, es un diodo que además emite luz, vienen en diferentes colores, brillos, también hay LED que pueden emitir luz ultravioleta o infrarrojo (como el LED de un control remoto).

Si miran el LED podrán notar que sus conectores (patas) son de diferente tamaño, de esa forma podemos saber cual es el conector positivo o ánodo y cual es el negativo o cátodo. El conector más grande (ánodo)  se conecta al voltaje positivo y el cátodo se conecta a tierra (negativo).

LED
LED

También necesitaremos un Arduino y cables para hacer las conexiones.

El circuito

Antes de subir código a nuestro Arduino debemos tener listo el circuito para poder probar el programa. En este caso, el circuito es muy sencillo ya que solo consta de un resistor y un LED.

Usando la protaboard conectaremos el ánodo del LED con un lado de la resistencia, el otro lado de la resistencia lo conectaremos a algún riel vació en la protoboard. El cátodo del LED también lo conectaremos a un riel vacío en la protoboard. Finalmente, usando cables, se  conecta el pin 10 de nuestro Arduino con el extremo del resistor que quedó sin conexión. También se realiza un puente desde uno de los pines GND del Arduino hacía el cátodo del LED.

Diagrama de conexiones
Diagrama de conexiones

El código

Una vez que el circuito está listo podemos empezar a programar nuestro Arduino. Por lo tanto, abrimos nuestro Arduino IDE y creamos un nuevo archivo (Archivo > nuevo) y escribiremos el siguiente código:

//Parpadear
int LED = 10; // LED conectado al pin 10

void setup() {
  pinMode(LED, OUTPUT); // configura el pin como salida
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED, HIGH);   // prender
  delay(1000);              // esperar un segundo
  digitalWrite(LED, LOW);    // apagar
  delay(1000);              // esperar un segundo
}

Ahora explicaremos un poco el código:

//Parpadear

Esta linea es un comentario, esto significa que va a ser ignorada por el programa.

int LED = 10; // LED conectado al pin 10

Esto se conoce como una variable. Una variable es un espacio para almacenar datos. En este caso el nombre de nuestra variable es “LED” y es de tipo int. Un int es un número en el rango de -32768 a 32767 y finalmente, se asigna el valor de 10 a la variable LED.

void setup() {
  pinMode(LED, OUTPUT); // configura el pin como salida
}

Lo siguiente es la función setup(). Un programa de Arduino siempre debe tener una función setup() y una loop(), de lo contrarío no funcionará. La función setup() sólo se ejecuta una vez al inicio del programa, una vez ejecutada no puede volver a ejecutarse. Esta función generalmente se utiliza para preparar el programa (configurar pines, velocidad de comunicación, etc) antes que se ejecute el ciclo principal.

La instrucción pinMode se utiliza para configurar el modo de uso de un pin. A esta función se le debe decir cuál pin se va a configurar y en que modo se va a poner. En este caso, estamos diciendo que el pin LED o el pin 10 (recordar que LED es una variable) se va a configurar como OUTPUT o salida. Es decir, configuramos el pin para poder controlar el LED.

void loop() {
  digitalWrite(LED, HIGH);   // prender
  delay(1000);              // esperar un segundo
  digitalWrite(LED, LOW);    // apagar
  delay(1000);              // esperar un segundo
}

La función loop() es donde se específica el comportamiento principal del programa, dicho comportamiento será repetido una y otra vez hasta que se apague la tarjeta.

Como lo dice el comentario, digitalWrite se usa para prender o apagar cualquier pin que hay sido configurado como OUTPUT. Su primer argumento específica el pin que será prendido o apagado. El segundo argumento específica si el pin se prende (HIGH) o se apaga (LOW).

delay() se usa para decirle al procesador que no haga nada durante la cantidad de mili segundos que se especifiquen. En este caso, queremos que se detenga durante 1 segundo (1000 mili segundos).

Finalmente, apagamos el LED al pasar el valor LOW en digitalWrite y esperamos otro segundo. De esta forma, el LED prende, espera 1 segundo, se apaga, espera 1 segundo, prende, espera 1 segundo … y así indefinidamente.

Led parpadeando
Led parpadeando