Sunteți pe pagina 1din 15

Pocket: Programacin Arduino https://getpocket.

com/a/read/1701986159

Programacin Arduino
By Jecrespom, aprendiendoarduino.wordpress.com
noviembre 24, 2015

La programacin de Arduino es la programacin de un


microcontrolador. Esto era algo ms de los ingenieros electrnicos, pero
Arduino lo ha extendido a todo el pblico. Arduino ha socializado la
tecnologa.

Programar Arduino consiste en traducir a lneas de cdigo las tareas


automatizadas que queremos hacer leyendo de los sensores y en funcin
de las condiciones del entorno programar la interaccin con el mundo
exterior mediante unos actuadores.

Arduino proporciona un entorno de programacin sencillo y potente para


programar, pero adems incluye las herramientas necesarias para
compilar el programa y quemar el programa ya compilado en la
memoria +ash del microcontrolador. Adems el IDE nos ofrece un
sistema de gestin de libreras y placas muy prctico. Como IDE es un
software sencillo que carece de funciones avanzadas tpicas de otros IDEs,
pero su0ciente para programar.

Estructura de un Sketch
Un programa de Arduino se denomina sketch o proyecto y tiene la
extensin .ino. Importante: para que funcione el sketch, el nombre del
0chero debe estar en un directorio con el mismo nombre que el sketch.

No es necesario que un sketch est en un nico 0chero, pero si es


imprescindible que todos los 0cheros estn dentro del mismo directorio
que el 0chero principal.

1 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

void setup() {
// put your setup code here, to run once:
}

void loop() {
// put your main code here, to run repeatedly:
}

La estructura bsica de un sketch de Arduino es bastante simple y se


compone de al menos dos partes. Estas dos partes son obligatorios y
encierran bloques que contienen declaraciones, estamentos o
instrucciones.

Adicionalmente se puede incluir una introduccin con los comentarios


que describen el programa y la declaracin de las variables y llamadas a
libreras.

2 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

setup() es la parte encargada de recoger la con0guracin y loop() es la que


contiene el programa que se ejecuta cclicamente (de ah el trmino loop
bucle-). Ambas funciones son necesarias para que el programa trabaje.

La estructura del sketch est de nida en el siguiente enlace:


http://arduino.cc/en/Tutorial/Sketch

Se puede resumir un sketch de Arduino en los siguientes diagramas de


+ujo:

3 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Un ejemplo puede ser el diagrama de +ujo de un sistema de arranque y


parada de un motor DC:

4 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Esquema de conexiones:

5 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

El cdigo asociado a este diagrama se puede encontrar en

Lenguaje de Programacin Arduino


El lenguaje de programacin de Arduino es C++. No es un C++ puro sino
que es una adaptacin que proveniente de avr-libc que provee de una
librera de C de alta calidad para usar con GCC (compilador de C y C++)
en los microcontroladores AVR de Atmel y muchas utilidades espec0cas
para las MCU AVR de Atmel como avrdude: https://learn.sparkfun.com
/tutorials/pocket-avr-programmer-hookup-guide/using-avrdude

Las herramientas necesarias para programar los microcontroladores AVR

6 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

de Atmel son avr-binutils, avr-gcc y avr-libc y ya estn incluidas en el IDE


de Arduino, pero cuando compilamos y cargamos un sketch estamos
usando estas herramientas.

Aunque se hable de que hay un lenguaje propio de programacin de


Arduino, no es cierto, la programacin se hace en C++ pero Arduino
ofrece una api o core que facilitan la programacin de los pines de entrada
y salida y de los puertos de comunicacin, as como otras libreras para
operaciones espec0cas. El propio IDE ya incluye estas libreras de forma
automtica y no es necesario declararlas expresamente. Otra diferencia
frente a C++ standard es la estructuctura del programa que ya hemos visto
anteriormente.

Toda la informacin para programar Arduino se encuentra en el


reference de la web de Arduino: https://www.arduino.cc/en/Reference
/HomePage y es la capa superior que ofrece Arduino para programar los
microcontroladores de una forma sencilla y con un lenguaje de
programacin entendible fcilmente.

Un manual sencillo de entender para la programacin es el arduino


programming notebook de brian w. Evans. Puedes consultarlo o
descargarlo desde:

En contraposicin al core de Arduino, es posible usar comandos estndar


de C++ en la programacin de Arduino siempre que estn incluidos en el
avr libc:

Cuando compilamos y cargamos el programa en Arduino esto es lo que


ocurre:

Adems todo esto no solo es vlido para las placas Arduino, sino para
muchas otras placas y microcontroladores que usando el mismo lenguaje
de programacin tenemos soporte para compilarlo y transferir el cdigo
binario a la memoria +ash del microcontrolador.

7 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Un ejemplo de uso de funciones AVR que no dispone el entorno de


Arduino es cuando queremos hacer delays muy pequeos. La funcin
delayMircoseconds() puede hacer el delay ms pequeo con el lenguaje de
Arduino que es de 2 microsegundos.

Para delays menores es necesario usar ensamblador y en concreto la


funcin nop (no operation. Cada llamada a nop ejecuta un ciclo de reloj
que para 16 MHz es un retraso de 62,5 ns.

__asm__("nop\n\t");
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t");

Otra caracterstica propia de la programacin de microcontroladores en


C++ son el acceso a los elementos de HW mediante la lectura y escritura
en los registros del microcontrolador.

Los registros son unas zonas concretas de la memoria RAM accesibles


directamente desde la CPU o desde otros elementos del microcontrolador
que permite hacer operaciones directas.

8 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Clculos de la velocidad de las operaciones en Arduino:


http://forum.arduino.cc/index.php?topic=200585.0

Libreras

9 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Las libreras son trozos de cdigo hechos por terceros que usamos en
nuestro sketch. Esto nos facilita mucho la programacin y hace que
nuestro programa sea ms sencillo de hacer y de entender. En este curso
no veremos como hacer o modi0car una librera pero en este curso
debemos ser capaces de buscar una librera, instalarla, aprender a usar
cualquier librera y usarla en un sketch.

Las libreras normalmente incluyen los siguientes archivos comprimidos


en un archivo ZIP o dentro de un directorio. Estas siempre contienen:

Un archivo .cpp (cdigo de C++)


Un archivo .h o encabezado de C, que contiene las propiedades y
mtodos o funciones de la librera.
Un archivo Keywords.txt, que contiene las palabras clave que se
resaltan en el IDE (opcional).
Muy posiblemente la librera incluye un archivo readme con
informacin adicional de lo que hace y con instrucciones de como
usarla.
Directorio denominado examples con varios sketchs de ejemplo que
nos ayudar a entender cmo usar la librera (opcional).

La instalacin de libreras se puede hacer directamente desde el gestor de


libreras o manualmente.

En el Arduino Playground tambin tenemos un listado mucho ms amplio


de libreras, ordenadas por categoras: http://playground.arduino.cc
/Main/LibraryList

Tambin tenemos informacin de como interactuar con diferente HW en


http://playground.arduino.cc/Main/InterfacingWithHardware

Adems de estas libreras o0ciales que podemos obtener desde el gestor

10 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

de libreras y las publicadas en el playground de Arduino, existen muchos


desarrollos disponibles en Internet y los propios fabricantes de
componentes HW publican las libreras para poder usarlo o incluso la
propia comunidad de usuarios.

Ejemplo de librera: https://github.com/jecrespo/simpleNTP

Ejemplo de Programacin
Como ejemplo del proceso de programacin con Arduino es el contador
de minutos para charlas hecho con una matriz 88 de leds tricolor:
https://www.adafruit.com/product/1487

Este contador marca los minutos que llevas durante la charla y marca en
bloque de 10 colores para indicar la 0nalizacin de cada captulo de 10
minutos

11 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Pasos:

Computacin Fsica
La computacin fsica (physical computing) se re0ere al diseo y
construccin de sistemas fsicos que usan una mezcla de software y
hardware para medir e interactuar con el medio que le rodea.

La computacin fsica signi0ca la construccin de sistemas fsicos


interactivos mediante el uso de software y hardware que pueden detectar
y responder al mundo analgico. En un sentido amplio, la computacin
fsica es un marco creativo para entender la relacin de los seres humanos
con el mundo digital. En el uso prctico, el trmino describe con mayor
frecuencia proyectos artesanales, de diseo o de hobby que utilizan
sensores y microcontroladores para traducir entradas analgicas a un
sistema de software y controlar dispositivos electromecnicos tales como
motores, servos, iluminacin u otro hardware.

La computacin fsica es un enfoque para aprender cmo los seres


humanos se comunican a travs de computadoras que comienza por
considerar cmo los seres humanos se expresan fsicamente. La
interaccin clsica con los ordenadores es a travs de teclados, ratones,
pantalla, altavoces, etc y toda la programacin se hace con esos lmites.
En el caso de la computacin fsica, no existen esos lmites sino los del ser
humano que interacta.

12 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

Programacin en Tiempo Real (RTC)


En informtica, la programacin en tiempo real (RTC) o reactive
computing describe sistemas de hardware y software sujetos a una
restriccin en tiempo real, por ejemplo, un evento a una respuesta del
sistema. Los programas en tiempo real deben garantizar la respuesta
dentro de las limitaciones de tiempo especi0cadas. A menudo se entiende
que las respuestas en tiempo real estn en el orden de milisegundos, ya
veces microsegundos. Un sistema no especi0cado como en tiempo real
normalmente no puede garantizar una respuesta dentro de un periodo de
tiempo, aunque pueden darse tiempos de respuesta reales o esperados.

Un sistema en tiempo real ha sido descrito como aquel que controla un


entorno recibiendo datos, procesndolos y devolviendo los resultados lo
su0cientemente rpido para afectar el entorno en ese momento. El
trmino tiempo real se utiliza en el control de procesos y sistemas
empresariales signi0ca sin demora signi0cativa.

13 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

El software en tiempo real puede usar:

lenguajes de programacin sncronos (p.e. ADA


https://es.wikipedia.org/wiki/Ada_(lenguaje_de_programaci
%C3%B3n))
sistemas operativos en tiempo real (RTOS)

Con Arduino hacemos una programacin en tiempo real recibiendo


continuamente datos de los sensores o de los puertos de comunicacin,
analizandolos y respondiendo al entorno mediante los actuadores o las
comunicaciones en un tiempo muy rpido.

Los sistemas operativos en tiempo real (RTOS) son sistemas que


responden a la entrada inmediatamente. Se utilizan para tareas tales como
la navegacin, en las que el ordenador debe reaccionar a un +ujo
constante de nueva informacin sin interrupcin. La mayora de los
sistemas operativos de uso general no son en tiempo real porque pueden

14 de 15 18/09/2017 23:56
Pocket: Programacin Arduino https://getpocket.com/a/read/1701986159

tardar unos segundos, o incluso minutos, en reaccionar.

Implementacin de multitarea:

Existen sistemas operativos en tiempo real (RTOS) para Arduino como


freeRTOS: http://www.freertos.org/

freeRTOS en Arduino:

15 de 15 18/09/2017 23:56

S-ar putea să vă placă și