¿Cómo se le dan órdenes a un componente?
Por fin llegamos a la parte más importante del programa. Como se ha dicho antes, en el void loop ( ) hay que escribir las órdenes que van a recibir los componentes electrónicos que se han conectado al Arduino. Además, hay algo importante que debes saber: las órdenes que se escriben dentro del void loop ( ) se repiten una y otra vez indefinidamente (en bucle).
Las dos primera órdenes que debes conocer son las siguientes:
digitalWrite(«nº de pin», HIGH);
y
digitalWrite(«nº de pin», LOW);
La primera es la orden (sustituyendo «nº de pin» por el número correspondiente) es la que deberemos escribir si queremos que salga corriente por un pin del Arduino. La segunda orden hace justo lo contrario, cortar la corriente de un pin determinado.
Por ejemplo, si se quiere encender una bombilla que está conectada al pin número 4, querremos que salga corriente del pin 4 y por tanto habrá que escribir:
digitalWrite(4, HIGH);
Si por el contrario se quiere apagar un motor que está conectado al pin número 9, habrá que escribir:
digitalWrite(9, LOW);
Es fácil de recordar, ya que HIGH significa alto en inglés lo que representa que hay corriente y LOW significa bajo, lo que indica que no hay corriente.
La tercera orden que debes conocer es la que hace que el programa se detenga (permanezca sin cambios) durante un cierto tiempo:
delay(«tiempo»);
Indicando entre los paréntesis el tiempo que se desea detener el programa. Sólo hay un pequeño detalle a tener en cuenta, y es que el tiempo se debe escribir en milisegundos. Por tanto, habrá que escribir:
- delay(1000); para esperar un segundo.
- delay(2000); para esperar dos segundos.
- delay(500); para esperar medio segundo.
- delay(3250); para esperar 3 segundos y cuarto.
- …
Por ejemplo, si quieres hacer que un LED conectado al pin 3 parpadee cada medio segundo (medio segundo encendido y medio segundo apagado), tendrás que escribir las siguiente órdenes:
digitalWrite(3, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
Ahora ya podemos escribir un programa completo.
Ejemplo 1: ¿Qué habría que hacer para conseguir que un LED conectado al pin número 6 parpadee cada segundo y medio?
En primer lugar habría que conectar el LED: la pata larga (doblada) al pin 6 y la corta a uno de los pines GND.

Después escribir el siguiente programa, como se puede ver en la imagen, y hacer click en el botón Iniciar simulación:
void setup()
{
pinMode(6,OUTPUT);
}
void loop()
{
digitalWrite(6,HIGH);
delay(1500);
digitalWrite(6,LOW);
delay(1500);
}
Y este sería el resultado:

Fíjate en el hecho de que con tan sólo cuatro órdenes el LED parpadea de manera indefinida. Eso se debe a que, como se ha dicho antes, las órdenes que se escriben en el void loop ( ) se repiten una y otra vez. Es decir, en este caso, se enciende el led, se mantiene encendido un segundo y medio, se apaga el led, se mantiene apagado un segundo y medio y tras esto vuelve a repetirse la primera orden (encender el LED).
Ahora te hago la siguiente pregunta ¿qué ocurrirá si con el mismo programa del ejemplo anterior se sustituye el LED por un motor conectado al mismo pin?
Pues lo que ocurrirá es que el motor girará durante un segundo y medio y después se parará otro segundo y medio, como puedes ver en el gif:

Ten en cuenta que las órdenes que hemos visto lo que hacen es enviar o no enviar corriente eléctrica por un pin determinado. En realidad no importa que el componente que se conecte a dicho pin sea un LED, un motor, una bombilla o un zumbador. La orden no cambia, lo único que cambia es el efecto que se produce, ya que cada componente reacciona de diferente manera al paso de corriente (unos emiten luz, otros generan movimiento…).
Con tan sólo las tres órdenes que se han explicado se pueden crear un montón de programas diferentes. Sólo hay que combinarlas adecuadamente y tener en cuenta que el orden en que se escriben es muy relevante, ya que las órdenes se ejecutan de arriba hacia abajo y cuando ya se ha ejecutado la última se vuelve al inicio.
Tampoco te olvides de ser cuidadoso con la escritura del programa, es muy frecuente que un programa dé error porque se ha olvidado escribir el «;» al final de una línea o porque una letra que debía escribirse con mayúsculas se ha escrito con minúsculas.
Ejemplo 2: a continuación se muestra un ejemplo en el que se hace que dos LEDs, uno azul conectado al pin 9 y otro amarillo conectado al pin 12 parpadeen a la vez, pero en este caso no se desea que estén el mismo tiempo apagados que encendidos. Por el contrario, se quiere que estén apagados un segundo y que después se enciendan durante dos segundos.
En primer lugar hay que conectar los dos LEDs, cada uno con una resistencia:

Para cambiar el color de un LED hay que seleccionar el componente y cambiar el color en el menú que aparece:

Por último, hay que escribir el siguiente programa en la parte derecha:
void setup()
{
pinMode(9,OUTPUT);
pinMode(12,OUTPUT);
}
void loop()
{
digitalWrite(9,LOW);
digitalWrite(12,LOW);
delay(1000);
digitalWrite(9,HIGH);
digitalWrite(12,HIGH);
delay(2000);
}
Al hacer click en Iniciar simulación los LEDs parpearán así:

Te invito a pensar qué programa habría que escribir para conseguir que dos LEDs parpadeen cada dos segundos, pero de forma alternada, como en el siguiente gif. Es decir, cuando uno está encendido el otro está apagado y viceversa:

¿Y para conseguir lo mismo, pero con 3 LEDs?

¿Y para que la luz se desplace hacia la izquierda en vez de hacia la derecha y mucho más rápido?

Esos son algunos de los ejercicios que te propopongo ahora que ya sabes como controlar uno y varios LEDs a la vez.