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 seaninputs
(entradas) uoutputs
(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 elloop
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:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
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 escribirdelay(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 losdelays
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 adelay(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:
void setup() { pinMode(5, OUTPUT); } void loop() { digitalWrite(5, HIGH); delay(1000); digitalWrite(5, LOW); delay(1000); }
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:
int ledPin = 5; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }
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í.