German Tojeiro Calaza

Taller de Arduino. Experimentando con Arduino MKR 1010


Скачать книгу

kBEEPROMnoVelocidad de reloj32.768 kHz (RTC), 48 MHzLED_BUILTIN32Dispositivo USB de velocidad completa y host integrado

      CAPÍTULO 2

       El lenguaje de programación de Arduino

      En este segundo capítulo se abordará la tarea de comprender los aspectos básicos del lenguaje de programación de Arduino y se entrará detalladamente en el funcionamiento de las instrucciones básicas para programarlo. En esta sección aprenderá a elaborar secuencias de órdenes para enviar a Arduino MKR y que actúe como usted le ordene. A este tipo de acción se le llama “programar”.

      Buscando una similitud o parecido entre Arduino y el ordenador; programar es el proceso de diseñar, escribir, probar, depurar y mantener el código fuente de programas. El código fuente se escribe en un lenguaje de programación. El propósito de la programación es crear programas que presenten un comportamiento deseado. Para crear un programa que el ordenador o Arduino interpreten y ejecuten las instrucciones escritas para ellos debe usarse un lenguaje de programación. En sus inicios, los ordenadores interpretaban solo instrucciones en un lenguaje específico del más bajo nivel, conocido como código máquina, siendo excesivamente complicado para programar. De hecho, consiste en cadenas de números 1 y 0 (sistema binario). Para facilitar el trabajo de programación, los primeros técnicos que trabajaban en esa área decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras o letras provenientes del inglés, codificándolas y creando un lenguaje de mayor nivel que se conoce como Assembly o lenguaje ensamblador. Por ejemplo: para sumar se usa la letra A de la palabra inglesa add (sumar). En realidad, escribir en lenguaje ensamblador es básicamente lo mismo que hacerlo en lenguaje máquina, pero las letras y palabras son bastante más fáciles de recordar y entender que secuencias de números binarios.

      A medida que creció la complejidad de las tareas que realizaban los ordenadores, se hizo necesario disponer de un método sencillo para programar. Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos números puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará con solo una.

      Un lenguaje de programación es un idioma artificial diseñado para expresar operaciones que pueden ser llevadas a cabo por máquinas como los ordenadores o, como en este caso, Arduino MKR. Puede usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le denomina programación.

      El lenguaje de máquina es el sistema de códigos directamente interpretable por un circuito microprogramable, como el microprocesador de un ordenador o el microcontrolador que lleva dentro Arduino MKR. Este lenguaje está compuesto por un conjunto de instrucciones que determinan acciones que serán tomadas por la máquina. Estas instrucciones normalmente se ejecutan en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje máquina trabaja con dos niveles de voltaje. Dichos niveles se simbolizan con el cero (0) y el uno (1), por eso el lenguaje de máquina solo utiliza dichos signos. En cambio, el lenguaje ensamblador es un lenguaje de programación de bajo nivel para los ordenadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina. Esta representación es usualmente definida por el fabricante de hardware. Está basada en códigos mnemotécnicos que simbolizan los pasos de procesamiento (las instrucciones). Un lenguaje ensamblador es, por lo tanto, específico a cierta arquitectura de ordenador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel que idealmente son portables. En la cúspide de esta pirámide reina los lenguajes de programación de alto nivel que se caracterizan por expresar los algoritmos de una manera muy cercana al lenguaje humano. Para los lenguajes de alto nivel se requiere de ciertos conocimientos de programación necesarios para escribir las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida.

      Cuando se disponga a realizar un programa en lenguaje de alto nivel como C, lo primero que tendrá que hacer es diseñar un algoritmo gráfico de la tarea que vaya a emprender. Por ejemplo, si retoma el primer programa o práctica de parpadeo de un led que se explicó en el capítulo anterior, podría dibujar un algoritmo parecido al que se muestra en la figura 2.1. Está representando una secuencia de pasos que deberá ejecutar más tarde MKR. En primer lugar, aparece un bloque llamado Cabecera que contendrá todos los comentarios relativos al propósito del programa, autor, fecha, lugar donde se ideó, etc. Después dispone de un bloque que hace referencia a la configuración de Arduino, es decir, en este caso definir que la patilla 6 de la placa se comporte como salida, ya que a esta va conectada el led. Después ha de entrar en varios bloques que realizan las tareas de encender un led, esperar un tiempo, apagarlo, esperar otro tiempo y volver al principio, es decir, encenderlo de nuevo.

      De una forma visual se representa lo que desea hacer. De esta manera sencilla es posible corregir o depurar cómodamente los pasos de su proyecto.

      Además, cualquiera que le eche un vistazo al gráfico se dará cuenta rápidamente de lo que intenta hacer.

      Más adelante se traducirán estas acciones escritas dentro de los bloques en instrucciones o sentencias del lenguaje de programación de Arduino MKR. Al principio, lo importante es tener claros los pasos que debe seguir. No es cuestión de escribir código de programación sin tener un objetivo en mente. Se trata de programar, pero con un lenguaje muy cercano a su forma natural de entender las cosas.

      En todo caso, programará en un lenguaje de ultra alto nivel. Es de vital importancia construir este tipo de bocetos, esquemas, gráficos, organigramas o como desee llamarlo, siempre que aborde un proyecto nuevo con Arduino.

      A continuación, se describe cómo traducir todo esto al lenguaje propio de Arduino. Pero antes, hay que examinar la estructura básica de que consta un programa en Arduino y los elementos con los que jugar.

      Un programa diseñado para ejecutarse en Arduino se conoce como sketch, que podríamos traducir como “boceto” o “borrador”. Un sketch siempre tiene la misma estructura general y consta de dos estructuras: setup() y loop(). Estas constituyen el cuerpo general e imprescindible de un programa. Esto quiere decir, ni más ni menos que cuando cree un programa o sketch nuevo desde el IDE de Arduino, nos van a aparecer siempre, y por defecto, estas dos estructuras en nuestra plantilla vacía.

      En primer lugar, tenemos la estructura setup(). Lo que se escriba entre las llaves que acompañan a su nombre se ejecuta una única vez siempre que se encienda o resetee la placa. El bloque o estructura setup() contendrá toda la configuración hardware de Arduino, es decir, cómo quiere que funcionen determinados pines de MKR como entrada o como salida. A medida que conozca sus posibilidades aumentará el tamaño de la configuración de este bloque.

      En segundo lugar, todo programa en Arduino tiene que poseer también