Blink

Durante la introducción a la programación vimos como hacer pequeños programas y animaciones usando el ordenador. Encendíamos y apagábamos los píxels en la pantalla del ordenador. Como sabes, la placa Arduino no tiene pantalla, pero tiene un LED – una pequeña lámpara que puede encenderse y apagarse fácilmente usando un programa. Se puede decir que Arduino viene con una pantalla de un solo pixel. Ese LED en placa, está conectado al Pin digital 13. Como puedes ver en la placa, todos los pins están numerados y agrupados por funcionalidad. Hay un grupo de 14 pins (numerados del 0 al 13) que son pins digitales y luego otro grupo de 6 pins (etiquetados de A0 a A5) que son los analógicos. Más adelante explicaremos los pins analógicos, ahora nos centraremos en los digitales. Veamos cómo controlar el LED en tu Arduino utilizando un comando sencillo. El primer ejemplo es el que llamamos Blink, que significa encender y apagar el LED repetidamente. Al igual que los programas de Processing que siempre necesitan tener una función setup() y una función draw(), los programas Arduino necesitan las funciones setup() y loop():

  • setup(): Esta parte del programa sólo se ejecuta al principio. Aquí podrás configurar las funcionalidades de los pins, ya sean inputs (entradas) u outputs (salidas), o si van a realizar una función más compleja como enviar señales a través del cable USB.
  • loop(): Esta parte funcionará infinitamente (o hasta que desconectes la fuente de alimentación). Los comandos en el loop serán ejecutadas en orden, una tras otra. Cuando llegamos al último comando, comenzará de nuevo desde el principio.

El programa Blink más básico funciona de la siguiente manera:

  • pinMode(pinNumber, INPUT | OUTPUT | INPUT_PULLUP): Se utiliza para determinar si el Pin digital en tu Arduino está escribiendo (OUTPUT) o leyendo (INPUT | INPUT_PULLUP) las señales desde/hacia el entorno.
  • digitalWrite(pinNumber, HIGH | LOW): Se utiliza para hacer que un Pin digital concreto escriba 5 voltios(HIGH) ó 0 voltios (LOW) a una salida.
  • delay(time): Detiene el programa durante cierta cantidad de tiempo. El tiempo se expresa en milisegundos. Si quieres detener el programa durante 2 segundos, deberías escribir delay(2000).

Recordemos también lo que vimos durante la semana de Processing:

  • Cada línea termina con punto y coma ‘;’.
  • Los bloques de código están contenidos entre llaves ‘{ }’.
  • Las funciones comienzan con una definición como void.
  • Las funciones tienen parámetros que figuran entre paréntesis ‘( )’, y pueden tener tantos parámetros como necesites.

Pero volviendo a lo que hace el programa, éste enciende el LED marcado con la ‘L’ en tu Arduino, espera 1 segundo, lo apaga y espera otro segundo. Luego esto lo repite una y otra vez hasta el infinito. Cárgalo en la placa utilizando la flecha derecha (el segundo botón de la barra de herramientas) y comprueba cómo funciona.

¡Sigue experimentando!

  • Ahora puedes probar a ver qué sucede cuando cambias los tiempos dentro de la función delay. ¿Qué ocurre si haces los delays más pequeños?, ¿la luz parpadea más rápido o más lento?
  • También puedes utilizar la luz para simular los latidos del corazón. Comprueba tus latidos midiendo tu pulso, notarás que siempre obtienes dos pulsaciones, algo así como tock tock… pausa… tock tock… pausa… ¿Puedes simularlo con un LED? (SUGERENCIA: puedes copiar y pegar el código).
  • Por último, ¿qué sucede cuando el delay se convierte a un intervalo verdaderamente pequeño? Digamos que lo cambias a delay(10), ¿todavía puedes ver el parpadeo de la luz?

Añádele tus propios LEDs

¿Quieres añadirle al circuito tus propios LED? Cuando trabajas con un LED, es importante que recuerdes que tienen polaridad. Los LED están construidos para mostrarla. El Pin largo, se denomina ánodo, y es el positivo, cuando lo conectamos al circuito, éste debe estar conectado al extremo positivo del alimentador. El Pin corto, o cátodo, debe estar conectado a tierra (0 voltios).

Los LED no se romperán si los conectas con la polaridad opuesta, simplemente no funcionarán. Sin embargo, por los LED no puede circular mucha corriente, para asegurarte de que no se quemen, debes poner una resistencia delante de ellos. El valor de la resistencia suele variar, en nuestro caso, utilizaremos 220 ohm para los LED. Para hacer más fácil la construcción de circuitos, usaremos la Shield Básica Educativa. Una vez montada en tu Arduino, la shield amplia las capacidades de la placa, además de añadirle características extra. Para hacer el circuito con un LED, haremos uso de la breadboard. Lee más acerca de breadboard aquí, y acerca de Basic Education Shield aquí.

Si haces un circuito como el que hemos mostrado anteriormente, tendrás que cambiar el programa Blink para direccionarlo al Pin número 5 en vez de al Pin número 13. El programa puede parecerse al siguiente:

Puede que recuerdes las variables de la primera semana del curso. Sólo recordarte que las variables son lugares dentro de la memoria del ordenador donde podemos almacenar números, caracteres o incluso cadenas de texto (strings) completas. La variables tienen un tipo (como int para número y strings para cadenas de texto) y un nombre al que le puedes asignar lo que quieras. En este caso, queremos que una variable almacene el número que representa el Pin que estamos cambiado con nuestro programa. Escribiendo el programa de esta forma, sólo tienes que reemplazar el número del Pin en un único lugar del código, en lugar de en tres si decidiéramos conectar el LED en otro pin de nuevo. Veamos cómo sería:


Por supuesto, es posible conectar y controlar más de un solo LED a tu Arduino. En los proyectos de esta semana verás que al usar varios LEDs obtenemos lo que llamamos VU-Metro. Un VU-Metro es una linea de LEDs agrupados. Existen varias funciones que hemos preparado para que puedas controlar muchos LEDs más fácilmente. Lee más acerca del VU-Metro aquí.

Nota: Te recomendamos que no utilices los pines 0 ni 1 a no ser que realmente los necesites. Estos pines se utilizan para que Arduino envíe información al ordenador, si les conectas cualquier cosa, Arduino no será capaz de comunicarse y por lo tanto, no será posible reprogramarlo.