F003 Primeras Instrucciones de Arduino

                                                                                                                        ADM
Igual que es tradición cuando uno aprende un lenguaje de programación, que el primer programa es el famoso "hola mundo",  en el mundo Arduino,  el primer programa que se suele hace es el blinking LED.



Arduino puede relacionarse con el mundo que le rodea, así que empezaremos por los pines digitales que pueden usarse como Entradas para leer la información que le llega del mundo exterior o como Salidas para activar una señal al mundo exterior.
 
Arduino dispone de 14 pines que pueden ser usados de este modo, numerados del 0 al 13:
A modo de ejemplo vamos a cargar un programa que hace parpadear un microLED que hay en la placa que está asociado al pin 13. Este parpardeo tendrá una cadencia definida por nosotros con ayuda del programa.

Instrucción pinMode(nº del Pin,  I/O);
Con el programa le pediremos a Arduino que active su pin 13 en modo salida digital y después encenderemos y apagaremos esta señal lo que hará que el LED  se encienda o apague al ritmo que marquemos.
Para indicar a Arduino que deseamos usar el pin 13 como salida digital utilizamos la instrucción:
pinMode(13, OUTPUT);
 
La instrucción, significa que el pin cuyo número se indica, se establece en el modo que se indica en el paréntesis. 
El primer parámetro indica el pin a usar en este caso el 13 y el segundo parámetro indica el modo en el que va a trabajar el pin que es “OUTPUT”  que significa salida, también podría usarse el valor “INPUT” para indicar que vamos a el pin en modo de entrada.  Cada instrucción al final acaba en ; que es la forma de decirle al compilador que la instrucción esa ha terminado.
Estas definiciones se hacen solo una vez al principio, en la función setup(). La nuestra quedará, con una única instrucción que declara que vamos a usar el pin 13 como salida digital:
 
void setup() {          
  pinMode(13, OUTPUT);   
}                        
Es importante fijarse en que a pesar de ser una única instrucción, hemos delimitado el  bloque de esta función mediante abrir y cerrar llaves.
Obsérvese que la instrucción finaliza en “ ;” . C++  obliga a acabar las instrucciones con un punto y coma que delimite la orden. Si se omite generará un error.
Importante, a pesar de que solo se ha puesto una instrucción, siempre se tiene poner las llaves de apertura y cierre

Instrucción digitalWrite(nºdePin, H/L);
digitalWrite viene a significa algo así como "escribe el valor digital correspondiente en el pín indicado" El 13 indica el pin a utilizar y HIGH, LOW indican el valor que deseamos poner en esa salida, que en Arduino corresponden a 5 Voltios de tensión para HIGH y 0 Voltios de tensión para LOW.

Para encender el LED usaremos la instrucción:
digitalWrite(13, HIGH); 
 
Para encender el LED usaremos la instrucción:
digitalWrite(13, LOW);
 
Si en la función loop() escribiéramos estas dos instrucciones seguidas, Arduino cambiaría estos valores tan deprisa que no percibiríamos cambios, así que necesitamos frenarle un poco para que podamos percibir el cambio.

Instrucción delay(nºdemilisegundos);
Para hacer este retraso de, digamos, un segundo, utilizaremos la instrucción:
delay(1000);                      
Esto viene a significar retardar o demorar 1000 milisegundos, que es igual a 1 segundo. Digamos que Arduino se queda quieto sin hacer nada como si estuviera congelado durante ese tiempo.

Por tanto para programar una luz que se enciende y se apaga, tendríamos que generar una secuencia de órdenes igual que en una receta de cocina:
1º Informa a Arduino de que vamos a utilizar el pin 13 como una salida
2º Enciende el LED conectado al pin 13
3º Espera un segundo
4º Apaga el LED conectado al pin 13
5º Espera un segundo
 
Con el primer delay decidimos el tiempo que el LED va a permanecer encendido y con el segundo delay decimimos el tiempo que el LED va a permanecer apagado.
 
Si no ponemos los delays, arduino enciende y apaga el LED unas 15.000 veces por segundo y percibiríamos que el LED está permanentemente encendido.

El primer concepto importante, es que los ordenadores procesan las ordenes en secuencia, una instrucción después de otra y en el orden en que se las damos.

Fijaros en el sangrado de las líneas para destacar los bloques de código. Esto es una buena práctica porque facilita la comprensión del programa y ayuda a visualizar el código.

Ya solo falta  comprobar si hay errores y para ello pulsamos el icono en amarillo:



Si todo va bien y no hay errores en rojo podemos volcar el programa en el Arduino con el icono de la flecha


En caso contrario habrá que revisar los posibles errores y corregirlos.
Si modificamos los valores del delay, modificaremos el tiempo que el LED estará encendido y apagado y con ello tendremos varios tipos de cadencia. 

Nota el único pin que tiene asociado un LED de la placa es el 13, si quieres utilizar otro pin tendrás que conectarles un LED y su resistencia de protección de forma externa.