Aprende a programar Arduino

VIE, 19 / FEB / 2021

Conceptos preliminares

Arduino no es más que una placa basada en un microcontrolador, específicamente, uno llamado Atmel. Es una plataforma de hardware libre que cuenta con un circuito integrado mediante el cual es posible grabar o programar instrucciones. Estas instrucciones se escriben con un lenguaje de programación que permite crear programas para interactuar con circuitos electrónicos.

Características generales

Arduino es una plataforma de hardware libre creada por David Cuartielles y Massimo Banzi, basada en una placa con un microcontrolador y un entorno de desarrollo, que persigue facilitar el uso de la electrónica en diversos proyectos. Su importancia radica en que está destinada no solo a expertos, sino que cualquier entusiasta de la electrónica y el mundo maker puede obtener enormes beneficios con su uso.

Software, hardware y comunidad

Arduino es un sistema de procesamiento, un microcontrolador y una placa, y también es una plataforma de hardware open source. Pero lo más importante es que integra un entorno de desarrollo para que puedas escribir tu propio código. De esta forma, los componentes esenciales que permiten configurar una definición práctica para Arduino son el hardware, el software y la comunidad que lo mantiene. Este último aspecto es lo que ha logrado darle la importancia que posee en todo el movimiento maker.

La poderosa comunidad que sostiene Arduino ha sido muy relevante en el éxito de esta plataforma. Se trata del grupo de usuarios, desarrolladores y entusiastas que comparten contenido, publican proyectos y resuelven dudas, todo esto, en pos de la divulgación de Arduino en el círculo de desarrolladores y amantes de la electrónica.

En términos más técnicos, el hardware de Arduino se compone de una placa de circuito impreso con un microcontrolador (Atmel AVR), y un conjunto de puertos digitales y analógicos de entrada/ salida. Además, posee un puerto USB mediante el que se alimenta y se comunica con la PC.

El microcontrolador permite la programación con un lenguaje de alto nivel. Se trata del elemento encargado de efectuar los procesos matemáticos y lógicos, así como también de gestionar los recursos para cada componente externo que se conecte a la placa principal. En cuanto a las entradas analógicas y digitales, gracias a ellas es posible conectar distintos sensores y otras placas o shields, lo que permite agregar nuevas funcionalidades sin necesidad de alterar el diseño original de la placa. Existen muchos modelos de placas Arduino, cada uno con especificaciones distintivas que es necesario conocer para saber cuál conviene utilizar en un proyecto concreto.

Entorno de desarrollo

Un entorno de desarrollo integrado o IDE se compone de un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI); en el caso de Arduino IDE, también ofrece las herramientas necesarias para cargar los programas en la memoria flash de la tarjeta Arduino con la que se esté trabajando.

Para escribir código para una placa Arduino, es necesario utilizar un IDE especializado, denominado Arduino IDE. Este se distribuye en forma gratuita, por lo que solo necesitas acceder al sitio web oficial de la aplicación para descargar una copia instalable, pero también puedes registrarte y hacer uso de la versión online.

Arduino IDE es un software que se distribuye con una licencia libre, de modo que es posible acceder a su código fuente y construir el instalador desde él o realizar las modificaciones que consideres pertinentes. Para los usuarios principiantes, bastará con descargar el instalador adecuado para el sistema operativo y proceder con la instalación. El código fuente de Arduino IDE se encuentra disponible en la dirección https://github.com/arduino/Arduino.

Entre las ventajas de Arduino IDE es posible mencionar su capacidad multiplataforma, es decir, que puede ser instalado y utilizado en diferentes sistemas operativos, por ejemplo, Microsoft Windows, GNU/Linux o Mac OSX, entre otros. También es destacable la sencillez de su interfaz; aunque parezca una debilidad por las reducidas opciones que verás al acceder por primera vez, a medida que la conozcas más a fondo, verás que te proporciona todo lo que precisas.

Pero sin duda, la importancia que marca la diferencia de este IDE es que ofrece las herramientas necesarias para cargar los programas que escribas directamente en la memoria flash de Arduino, en unos pocos pasos y sin tener que ejecutar complejos procedimientos. De esta forma, tendrás la placa ejecutando un programa en un tiempo muy corto. Solo queda escribirlo.

Lenguaje de programación

Para programar Arduino se utiliza C++, aunque no debe entenderse como un C++ puro, dado que más bien se trata de una adaptación en la que la librería avr-libc juega un papel fundamental. Esto proporciona una librería de C para que sea posible usar un compilador de C y C++ en los microcontroladores AVR de Atmel, además de otras utilidades específicas.

Para programar los controladores AVR de Atmel es necesario contar con avr-binutils, avr-gcc y avr-libc, las que, por suerte, se encuentran incluidas en Arduino IDE. Es importante señalar que no existe un lenguaje propio para programar Arduino, pues si bien la programación se realiza en C++, tienes a tu disposición librerías o core que facilitarán el trabajo de los pines de entrada y salida y de los puertos de comunicación de la placa, así como también es posible cargar otras librerías para efectuar tareas específicas.

Arduino IDE incluye de forma automática las librerías necesarias, por lo que no tendrás que declararlas en forma expresa.

Elementos básicos

Antes de comenzar a escribir el código, es necesario considerar que existen ciertos elementos básicos que no debes perder de vista. A continuación se presenta el código completo de uno de los ejemplos que podrás encontrar luego de instalar Arduino IDE, en particular, del proyecto Blink:

El primer elemento que debes tener presente son las llaves {}, que sirven para definir el principio y el final de un bloque de instrucciones. Su importancia inicial radica en que las utilizarás para definir los bloques de programación setup(), loop() e if, entre otros. Más adelante verás la estructura de un programa Arduino para conocer en detalle estos bloques.

En el código del proyecto Blink puedes ver su uso, por ejemplo, para definir el bloque setup():

Y también para delimitar el bloque loop:

La llave de apertura siempre debe estar acompañada de la llave de cierre; no puede existir una sin la otra, si olvidas escribir alguna de ellas, el compilador indicará un error. Un punto importante al programar en Arduino IDE es que, si haces clic sobre una llave de apertura, se  marcará de inmediato la llave de cierre del bloque.

Otro elemento sencillo pero fundamental que se debe considerar antes de escribir código es el punto y coma (;). Se utiliza para separar las instrucciones escritas y para delimitar cada elemento que integra una instrucción de tipo bucle. Si miras atentamente el bloque loop() del proyecto Blink sin los comentarios, verás que cada una de las cuatro instrucciones finaliza con un punto y coma:

Si olvidas escribir un punto y coma al final de una instrucción, el compilador entregará un mensaje de error. Los comentarios, aunque no son parte de las instrucciones ejecutables, son muy importantes para dar indicaciones a quienes, eventualmente, analizarán o utilizarán el código en otro momento.

Existen dos formas de indicar comentarios en Arduino IDE. En primer lugar, es posible generar un bloque completo de comentarios; esto es relevante cuando se trata de comentarios extensos que ocuparán varias líneas. Estos comentarios se escriben delimitados con los símbolos /* y */. En el proyecto Blink puedes ver un bloque de comentarios al inicio, en el se encuentra toda la información crítica del proyecto:

Un bloque de comentarios es ignorado por el compilador, pues solo se trata de áreas destinadas a descripciones del código o, también, a aclaraciones que ayudan a comprender el funcionamiento del programa.

Otro tipo de comentarios son las líneas, cuyo inicio se indica con // y su fin, con la siguiente línea de código. Son importantes para dar información acerca de lo que hace una línea o como indicador para recordarla después. A continuación, puedes ver las líneas de comentario en torno al bloque setup():

Como puedes apreciar, existe una línea de comentario antes y una después del bloque setup(), además de una dentro del bloque.

Estructura de un programa

Un programa para Arduino se conoce como sketch y posee la extensión .ino. Un proyecto puede estar compuesto por varios archivos, pero todos deben estar alojados en la misma carpeta donde está el archivo principal.

La estructura básica de un sketch de Arduino es bastante sencilla y, generalmente, encontrarás dos partes obligatorias, las que se encargarán de encerrar las declaraciones, estamentos y también instrucciones: setup() y loop(). Por un lado, en setup() se recoge la configuración adecuada; por otro lado, en loop() se encuentran las instrucciones que se ejecutan de modo cíclico.

Las instrucciones que escribes en la sección setup() se ejecutarán una sola vez, cuando se encienda la placa Arduino. Aquellas que escribas en  la sección loop() se ejecutarán después de las instrucciones contenidas en setup(), pero lo harán infinitas veces, hasta que la placa se apague o se resetee.

El uso de setup() y loop() en Arduino es de carácter obligatorio, por lo que no será posible escribir un programa en esta plataforma sin contar con dichas funciones. Si inicias un nuevo proyecto en Arduino IDE, verás que estos bloques se agregan en forma automática:

La función setup() es la primera en ejecutarse dentro de un programa Arduino. Se trata del lugar donde deberás setear o informar de las funciones que llevará a cabo el microcontrolador.

Es importante pues en este bloque establecerás los criterios que requieren una ejecución única. Por ejemplo, si realizarás comunicación serial, aquí debes establecer el comando Serial.begin para indicarle al programa que iniciarás esta comunicación.

Por otra parte, si deseas usar un pin determinado como salida de voltaje, deberás emplear pinMode para indicarle a Arduino que cierto pin funcionará como salida, mediante el parámetro OUTPUT. A continuación se presenta un ejemplo completo:

En este ejemplo se maneja un LED conectado directamente a la placa, utilizando el pin 13 y GND. La placa se conecta a la computadora mediante el cable USB y se sube el sketch anterior.

Debes desplegar el monitor serie y escribir 2, luego presionar ENTER, y verás que el LED se encenderá. Si realizas el mismo procedimiento, pero presionando otra tecla, el LED se apagará. Como puedes notar, las instrucciones que deben ejecutarse en un ciclo sin fin van en loop():

Mientras que en setup() van aquellas instrucciones relacionadas con la designación del pin 13 y el uso del monitor serie, las que solo es  necesario que se indiquen una vez:

Aprende más sobre Programación para Arduino, leyendo la edición completa de este ebook en RedUSERS PREMIUM


Cada mes, lanzamos 2 ebooks USERS, en ellos tratamos en profundidad el tema abordado. En cada ebook, nuestros EXPERTOS vuelcan todos sus conocimientos con el objetivo de brindar una experiencia de capacitación satisfactoria para nuestros lectores.


Lee lo que quieras, donde vayas, por una mínima cuota mensual: SUSCRIBETE!


¡Comparte esta noticia!