jueves, 1 de mayo de 2014

Introducción a la estructura de los programas usados en el Arduino: Sketchs








Introducción a la estructura de los programas usados en el Arduino: Sketchs

Se denomina Sketch al código que necesitamos escribir para que sea interpretado por nuestro Arduino. Normalmente lo escriberemos dentro del la aplicación que nos permite traducir instrucciones simples que los humanos podamos entender al lenguaje que entiende nuestro Arduino. Esta aplicación se llama IDE (Entorno de Desarrollo, o en inglés Integrated Development Environment) y genera ficheros con extensión ino.
Un sketch se compone al menos de dos partes. Mejor dicho, un sketch necesita de dos bloques para poder ser compilado correctamente (que es la palabra técnica que se utiliza para el proceso de traducir las instrucciones que estamos escribiendo a un lenguaje que pueda entender el microprocesador).
Estructura de un Sketch 

void setup()
{
  y aquí escribimos las instrucciones en líneas separadas por ;
}

void loop()
{
  y aquí escribimos las instrucciones en líneas separadas por ;
}

El bloque setup()

La parte de código representada como void setup()   se ejecuta una sola vez cuando comienza el programa

Nos sirve para decirle al Arduino, qué partes de la placa vamos a usar para el proyecto que estamos desarrollando. Si Arduino fuera un cuerpo humano, sería algo así como decirle para el Sketch CogerLaPelota, solo necesitas usar los ojos y los brazos. Y de ese modo el robot concentra todos sus recursos en esas dos cosas, y se olvida de estar pendiente del olfato, del gusto, de la temperatura...  

En nuestro caso sería como que alguien te avise que vas a salir por la tele, y que tengamos que estar pendiente de 19 canales de televisión toda la tarde  a que nos digan “sintoniza TVE1”. Lo mismo le sucede a nuestro pequeño robot.

Es la forma de que sepa por donde y cómo queremos que interaccione con el mundo, es donde le decimos al Arduino, que pines de su placa vamos a usar y con qué objeto.  

En esta parte del sketch, es donde configuramos, qué pines y que finalidad va a tener, por ejemplo para enceder un LED, o bien para recibir algún dato, etc.

Aun cuando no escribamos nada en él, es necesario escribirlo y añadir las llaves de apertura y cierre { }.

En nuestro primer ejemplo, en el que enseñamos a guiñar un “ojo” que situamos en el pin 13, le decimos

void setup() {                  
 // aquí le decimos a nuestro Arduino que el LED, es para que hable, o lo que es lo mismo para mandar un mensaje de salida, un OUTPUT (salida en inglés)   
pinMode(led, OUTPUT);    
 }


El bloque loop()

Es la parte principal de nuestro programa pues en el tendremos que poner el código para que el microcontrolador lo ejecute de manera recursiva, es decir, esta parte del Sketch se repetirá una y otra vez mientras la placa Arduino tenga energía. Por ejemplo:

void loop() {
  digitalWrite(led, HIGH);   // enciende el LED (on)
  delay(1000);               // espera por un 1000 milisegundos   
  digitalWrite(led, LOW);    // apaga el LED (off)  
  delay(1000);               // espera por un 1000 milisegundos
}


Nota: Toda llave de apertura { ha de tener una llave de cierre al final del bloque de instrucciones, a modo de bocadillo }. Mientras editamos el código en el IDE de Arduino, si situamos el cursor justo después de una llave de apertura {, veremos resaltada la llave de cierre } asignada a la misma, permitiéndonos comprobar si lo que hemos escrito es realmente lo que hemos querido escribir.
Por su parte, el punto y coma ; se emplea para poner fin a una declaración (que es el nombre técnico que se le da a una instrucción concreta que hayamos escrito). El olvido del punto y coma es uno de los errores que más se repiten cuando se está empezando a programar.
Pero mirando nuestro Sketch más simple vemos que hay  además existe una instrucción solitaria al principio de todo
int led = 13;

que no va ni entre llaves, ni está dentro de las dos estructuras que hemos comentado 
void setup(), void loop()

Muy bien, veo que estáis en todo. Esto es lo que se conoce técnicamente como zona de declaración de variables.  Es algo parecido a un listín telefónico.  A todo el mundo le resulta más cómodo llamar a alguien por su nombre que por su DNI. Pues con ese propósito, el Sketch te permite apuntar en un sitio, cosas que vas a usar de forma repetitiva pero que no quieres memorizar. Por ejemplo la ubicación del LED de parpadeo. Decidimos que va a ser en el PIN número 13, pues a partir de ahí, con tal de referirnos a él como “led” basta. El IDE traducirá esa “variable” por el número 13.
Puede que ahora no le veas mucho sentido porque solo tenemos un LED y sabemos donde está.  Pero si tu Sketch tuviera 5000 líneas de código, y a mitad del proceso de programación decidiera cambiar la ubicación del LED al pin 8, tendrías que cambiarlo en cada instrucción que hayas dado al Arduino a lo largo de todo el programa, o bien, si has usado la zona de declaración de variable, cambiar int led= 13, por int led =8, y todo estaría funcionando en un solo segundo. ¿A que parece un buen truco?. Pues no se te olvide, eso se hace usando la declaración de variables.

¿Recordáis todo lo que hemos visto?: zona de declaración de variables, uso de llaves { }, bloque setup() y bloque loop().

¡Pues seguro que se os olvida algo! Y para eso están los comentarios. Si nuestro sketch, verás partes del código que están escritas en lenguaje  demasiado humano. Efectivamente hay frases que están escritas con objeto de autoexplicar lo que estamos haciendo y lógicamente no son entendible para el IDE de Arduino. Son como si fueran un “post-it” en el código para no olvidarnos de lo que hemos hecho, o por qué lo estamos haciendo. Un buen sketch va siempre acompañado de unos buenos comentarios, es decir, líneas de código que el programa ignorará y que nos servirán a la hora de entender mejor el código.
Existen dos tipos de comentarios, los de una línea y los de varias líneas:
- Los comentarios de una sola línea han de comenzar por //, y duran hasta que se encuentra un retorno de carro.

- Los comentarios de varias líneas o bloques de comentarios han de estar delimintados por /* al comienzo y por */ al final.
es → en
because
conjunción: since, then
adverbio: then, well

No hay comentarios:

Publicar un comentario