Es un conjunto de instrucciones para el ordenador, es básicamente como una receta de cocina…pero para un ordenador.
Cuando programamos quien debe entendernos es un ordenador que espera instrucciones precisas respecto a lo que debe hacer y que además carece por completo de la imaginación o capacidad de improvisación de los humanos.
El ser humano y los ordenadores no hablan el mismo idioma, por ello se han desarrollado los lenguajes programación, para dar instrucciones a una máquina de forma precisa, sin ambigüedades, Univoca que solo se pueda interpretar de una manera. y concisa, es decir con ódenes los más cortas posible.
El programa es una serie de instrucciones que se ejecutan en secuencia, excepto que indiquemos expresamente condiciones precisas para altera esta secuencia.
El IDE tiene un programa interno comprueba que la sintaxis de nuestro programa es acorde a la norma de C++, y si hay cualquier cosa que no le convence dará un error y finalizará la comprobación obligándonos a revisar lo que hemos escrito.
Cuando el comprobador acepta nuestro programa, invoca a otro programa que traduce lo que hemos escrito a instrucciones que entienda el procesador de nuestro Arduino.
A este nuevo programa se le llama compilador.
El compilador convierte nuestras instrucciones que se llama código fuente, en instrucciones del procesador al que llamarémos código ejecutable.
Estructura de un programa Arduino.
Un programa o sketch de Arduino consiste en dos secciones o funciones básicas:
- Setup: Sus instrucciones se ejecutan solo una vez, cuando se arranca el programa al encender Arduino o cuando pulsamos el botón de reset. Generalmente incluye definiciones e inicializaciones, establece los parámetros de inicio de ahí su nombre.
- Loop: Sus instrucciones se van ejecutando en secuencia hasta el final…. Y cuando acaba, vuelve a empezar desde el principio haciendo un ciclo sin fin.
Cuando abrimos el IDE de Arduino o hacemos MENÚ / ARCHIVO / NUEVO, el propio IDE nos escribe ya estas dos funciones (en color cobre):
Sin nos fijamos, al principio de cada función se ve la apertura de llave “ { “ y el cierre llaves “ } “. Estas llaves delimintan la función, es decir todo el código que pertenece a la función se va a escribir entre estas dos llaves. De hecho el conjunto de instrucciones contenidas entre una apertura y cierre de llaves se llama bloque y es de capital importancia a la hora de que nuestro Arduino interprete de una u otra manera las instrucciones que le damos.
Es obligatorio que a cada apertura de una llave corresponda un cierre de llave.
Luego vemos que aparecen dentro de los bloques principales las líneas:
// put your setup code here, to run once
// put your main code here, to run repeatedly
Estas líneas son comentario, cualquier cosa que escribamos precedido por “ // “ son comentarios, y serán ignorados. Sirven para poder escribir mensajes dentro del código, sin que afecte al funcionamiento del código, que de otro modo darían errores. El compilador ignorará cualquier cosa entre // y el fin de línea.
Primeras instrucciones en Arduino C++.
Igual que es tradición cuando uno aprende un lenguaje de programación, el primer programa es el famoso "hola mundo" en el mundo Arduino, que el primer programa que se suele hace es el blinking LED, porque ilustra algunas ideas interesantes en cuanto a las posibilidades que brinda arduino, como son la capacidad para interactuar con el mundo externo y la sencille del entorno de trabajo.
Entradas para leer la información que le llega del mundo exterior o como Salidas para activar una señal al mundo exterior
pines 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.
Con el programa le pediremos a Arduino que active su pin 13 como de salida digital y después encenderemos y apagaremos esta señal lo que hará que el LED que tiene conectado de serie se encienda o apague al ritmo que marquemos.
Para indicar al sistema que deseamos usar el pin 13 como salida digital utilizamos la instrucción:
pinMode ( 13, OUTPUT ) ;
La
instrucción pinMode, significa que el pin cuyo número se indica, se
establece en modo que 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()
{
// initialize the digital pin as an output
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.
Para encender el LED usaremos la instrucción:
digitalWrite( 13 , HIGH) ;
Para encender el LED usaremos la instrucción:digitalWrite( 13 , LOW) ;
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.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.
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 que hicieran:
- Informar a Arduino de que vamos a utilizar el pin 13 como una salida.
- Enciende el LED conectado al pin 13
- Esperar un segundo.
- Apagar el LED conectado al pin 13
- Espera un segundo
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.
La forma de escribir un programa en Arduino C++ que haga lo anteriormente descrito es algo parecido a esto
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.
Si todo va bien y no hay errores en rojo podemos compilar y 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.

