Programación en Arduino

Una vez que tengamos instalado y configurado el IDE de Arduino en nuestro ordenador, es hora de empezar a escribir el código. La codificación de la plataforma Arduino no requiere ningún esfuerzo. Hay un montón de bibliotecas para hacer las cosas más fáciles. La sintaxis también es bastante simple.

En este artículo cubriremos casi todos los elementos esenciales del lenguaje de un sketch (programa) de Arduino. Después de esto, deberíais ser capaces de leer, escribir y emprender cualquier proyecto de codificación de Arduino.

¿Qué es un programa de Arduino?

El código de Arduino debe contener como mínimo dos funciones básicas: void setup() y void loop(). Estos dos bloques de código son los principales elementos de cualquier código de Arduino. Se conocen como funciones. Pronto les echaremos un vistazo más de cerca.

Todas las declaraciones se hacen en void setup(). El nombre contiene la palabra ‘setup’ que debería revelar su propósito. Los comandos reales a realizar y el proceso de cálculo están codificados dentro de la función void loop(). El ‘loop’ significa que el sketch se ejecutará infinitamente.

¿Qué lenguaje se utiliza para escribir un programa de Arduino?

El lenguaje de programación Arduino se basa en un lenguaje de programación de hardware muy simple llamado Processing, que es muy similar al C y al C++. Pero tiene algunas funciones incorporadas además de las funciones normales utilizadas en el C común. Después de compilar el sketch en el IDE, debe ser cargado en la placa Arduino para su ejecución.

¿Qué es un Sketch?

El programa escrito en código fuente de Arduino se llama sketch. Contiene todas las instrucciones que debe realizar la placa Arduino, las configuraciones iniciales de pines, y la inclusión de librerías entre otras cosas.

Sintaxis de código Arduino

La sintaxis general para escribir el programa Arduino es casi similar a la del C y C++ ordinario. Aquellos que estén familiarizados con el C y C++ básico pueden hacerlo fácilmente. Si quieres profundizar un poco más sobre los lenguajes de programación te recomiendo entrar en ComoProgramar.net.

La sintaxis general de la programación de código fuente para Arduino incluye los siguientes elementos:

#define

#define se utiliza para asignar una variable a la constante que tiene que ser utilizada en el programa. No necesita ningún espacio de memoria. Durante el tiempo de compilación el compilador puede reemplazar las variables por la constante. Generalmente, las constantes se definen usando la palabra clave ‘const’ en lugar de #define. No se debe usar un punto y coma después de #define o un igual para el signo después de #define; de lo contrario, mostrará un error crítico de compilación.

Sintaxis: #define variable constante

Parámetros: la variable es el nombre, que tiene que ser asignado al valor. Constante es el valor que le asignamos a la variable y utilizaremos en el programa.
Ejemplo

#define a 3  // Sintaxis Correcta
#define a 3; // Error
#define a=3 // Error

En este caso, el compilador sustituirá la variable a por 3.

#include<>

Esta sentencia le dice al programa que incluya algo. Se suele usar este comando para incluir archivos de biblioteca adicionales en tu sketch para añadir algunas funcionalidades adicionales.

Es una de las mejores características del IDE de Arduino. Hay cientos de bibliotecas disponibles en línea. Están escritas especialmente para trabajar con Arduino, dando acceso y contros a sensores, actuadores y módulos.

Al igual que el comando #define, no se necesita un punto y coma al final de la instrucción #include. De lo contrario, mostrará un error al compilar.

Sintaxis: #include<fichero de la biblioteca>

Parámetros: El archivo de la biblioteca es el encabezado adicional a ser agregado. A continuación te explicamos cómo puedes incluir un archivo de biblioteca en tu IDE de Arduino.

Ejemplo

Este ejemplo incluye la biblioteca SoftwareSerial para que sus funciones puedan ser utilizadas para controlar un GPS.

#include &lt;SoftwareSerial.h&gt; // incluye el archivo de la librería
static const int RX = 4, TX = 3;
static const uint32_t GPSBaud = 9600;
SoftwareSerial ss(RX, TX); // Conexión al dispositivo GPS

void setup() {
   Serial.begin(115200);
   ss.begin(GPSBaud);
}

void loop(){
   while (ss.available() &gt; 0){
      Serial.write(ss.read());
   }
}

Todos los comandos como ss.read en el sketch anterior son posibles por la biblioteca que incluimos al principio. Sin ese archivo de biblioteca, sería muy complicado implementar la funcionalidad del GPS.

Bloques de comentarios /* */

Puedes usarlos para escribir comentarios en el sketch. Los comentarios son las líneas que se usan para documentar el código y notificar a otros programadores sobre el funcionamiento de ese fragmento de código en particular. No se exporta al procesador, por lo que no ocupa espacio en la memoria del microcontrolador. Es sólo para ayudar a entender el código. Escribir buenos comentarios es una parte clave para escribir un código limpio, legible, reutilizable y escalable.

Sintaxis: /* Comntarios */
El comienzo del bloque de comentarios está marcado con /*, y el final con */.

Ejemplo

/* Blink enciende un LED por un segundo, 
y luego apagado por un segundo, repetidamente */

Comentarios //

Los bloques de comentarios pueden tener múltiples líneas. Cuando lo que queremos es poner un comentario de una sola línea se puede usar // y luego escribir el comentario. De manera similar a /**/, estas líneas de comentario también son ignoradas por el compilador. No ocupan ningún espacio en la memoria del microcontrolador. Además, te ayuda a entender cómo funciona el programa.

Sintaxis: //

Ejemplo

#define a 3
digitalWrite(a,1); //Enciende el LED

Corchetes {}

Los corchetes o llaves son una parte importante de los lenguajes de programación C y C++. Cada corchete abierto { debe tener un corchete cerrado }. Si algún corchete no tiene su pareja tendremos un error de compilación. El IDE de Arduino nos facilita la tarea ya que las llaves se equilibran automáticamente, al crear una llave abierta se crea tambien una cerrada, y se resalta cuando el código no está equilibrado.

Por lo general el código dentro de los corchetes es un bloque que puede ser una función.

Ejemplo

Void getdata(datatype argument) {
   //codigo de la función getdata
}

Bucles

while(condition) {
   // código a ejecutarse mientras se cumpla la condición
}

Declaraciones condicionales

if(condition){
   // código a ejecutarse si se cumple la condición
}

Punto y coma ;

Usados al final de una declaración. Si olvidas poner un punto y coma en cualquier declaración que no sea #define e #include, tendrás un error de compilación (por cierto, uno de los más típicos, tendrás miles de estos, no te preocupes).

Ejemplo

int a=3;
Serial.begin(115200);

¿Cuál es la estructura general de Sketch Arduino?

Un sketch en el IDE de Arduino tiene dos partes principales en su estructura: estas son setup() y loop().

void setup()

La función setup() debería ser la primera que se llama cuando un sketch empieza a ejecutarse o a compilarse. Este bloque de funciones se utiliza para inicializar los modos de pin, las variables y también la tasa de baudios para la salida del puerto serie. Sólo se ejecuta una vez cuando el Arduino se encienda o se reinicie.

void loop()

Es el bloque que contiene el código que tiene todas las instrucciones que tienen que ser realizadas infinitamente por el microcontrolador desde que se enciende la placa Arduino hasta que se apaga.

Analizamos en detalle las funciones void setup() y void loop en la siguiente clase del curso de Arduino.

Otros artículos relacionados de nuestro Curso Arduino que pueden interesarte: