Professional Documents
Culture Documents
Programacin III
Libreras de Arduino
LAS LIBRERAS: QU SON Y PARA QU SIRVEN
En el mundo del software, una librera es una coleccin de programas que facilita la
ejecucin de una serie de funciones relacionadas entre s. Por ejemplo, las funciones que
facilitan la escritura en una pantalla LCD o las que nos permiten calcular la posicin de
un sistema de navegacin GPS.
Las libreras de software funcionan de la misma manera que una biblioteca tradicional.
En el mundo de Arduino, una librera es una coleccin de funciones que se incluyen de
una manera muy sencilla y explcita en tu sketch y que proporciona una cierta
funcionalidad especfica. Una misma librera puede usarse en varios proyectos
diferentes.
Algunas libreras se pueden utilizar sin necesidad de extender el Arduino con otros
dispositivos, mientras que otras necesitan ser utilizadas con componentes electrnicos
adicionales, a menudo bajo la forma de shields (escudos = componentes adicionales
de mayor o menor complejidad, pero que cubren una funcin especfica).
Hay tres diversos tipos de libreras de Arduino: base, estndar, y contribuciones
(contributed librairies). [1]
La biblioteca de la base forma parte del entorno de desarrollo del Arduino (IDE). El
propsito de esta librera es ocultar mucha de la complejidad que tradicionalmente
implica el trabajar con el microprocesador.
En efecto, esta es una de las razones aducidas ms frecuentemente por principiantes y
usuarios experimentados sobre la dificultad de trabajar con microprocesadores
tradicionales. Esta librera de base (core) es una de las grandes ventajas del Arduino al
hacerlo fcilmente accesible a todos los usuarios.
Los diseadores del Arduino desarrollaron esta librera a partir de las peticiones de los
estudiantes e incluye aquellas acciones que son ms comunes.
La mayora de los proyectos leen datos de una de las entradas o escriben datos en una de
las salidas. La librera core hace que estas tareas comunes sean simples ejecutar. Por
ejemplo, para leer el valor de un pin digital basta con usar la funcin digitalRead (por
otra parte, el nombre es fcil de recordar).
En el captulo precedente (funciones) hemos visto todas las funciones de base (core) que
constituyen el ncleo del Arduino. A continuacin vamos a pasar revista a las
libreras estndar que forman parte del IDE del Arduino.
LIBRERAS ESTNDAR
La manera en que los programas y aplicaciones para Arduino se escriben est sujeta a
una continua evolucin y mejora. La innovacin ms reciente consiste en un entorno de
programacin llamado test-driven-development (TDD, desarrollo bajo test).
En TDD, un proyecto de software se divide en pequeos mdulos, y antes de escribir un
mdulo dado, estableces las pruebas (tests) que verifican el funcionamiento de cada
funcin del mdulo.
Cuando finalmente escribes el mdulo, se ejecuta bajo un entorno de test que
comprueba que los resultados obtenidos por el mdulo son los descritos en el entorno de
test que definiste previamente. Si no es as corriges los errores y vuelves a ejecutar el
mdulo en el entorno de test.
Cuando un mdulo ha pasado los tests, desarrollas el siguiente mdulo de la misma
manera y as hasta que el proyecto haya sido completado. Si ms tarde tienes que
modificar uno de los mdulos lo ejecutas bajo el entorno de test hasta que funcione de
acuerdo con las especificaciones.
La biblioteca ArduinoTestSuite es el primer paso para implantar esta metodologa TDD
en el Arduino. Se trata de una librera relativamente nueva, pero se considera como
esencial para el futuro del desarrollo en Arduino. [1]
La librera ArduinoTestSuite proporciona mtodos estndar y funciones que se pueden
utilizar para probar sus sketches antes de cargarlos en el Arduino. De esta manera nos
aseguramos de que el sketch funcione segn lo previsto antes de usarlo en el mundo real
con costosos dispositivos que pueden ser daados si se utilizan incorrectamente.
La librera est todava en fase de desarrollo, pero tiene actualmente tests para los
procesos listados en la tabla siguiente:
TEST
DESCRIPTION
ATS_begin
ATS_end
ATS_Test_DigitalPin
ATS_Test_PWM
TEST
DESCRIPTION
ATS_Test_AnalogInput
La memoria EEPROM es un tipo de memoria de slo lectura que puede ser borrada y
reescrita mediante la aplicacin de una tensin elctrica y al mismo tiempo conserva los
datos almacenados incluso tras desconectar la alimentacin de la placa del
microprocesador. [2]
La cantidad de EEPROM en un Arduino depende del microprocesador de base que
lleve.El cuadro siguiente muestra la cantidad (en octetos o bytes) de memoria EEPROM
disponible en diversos Arduinos.
MICROPROCESADOR
512
ATMega328
1,024
4,096
Los sketches en Arduino utilizan C++ como lenguaje de programacin, la mayor parte
de la complejidad interna del Arduino queda enmascarada por las funciones disponibles
en las diferentes libreras escritas en C++.
Una librera est constituida por al menos una clase C++. Una clase consiste en dos
ficheros: un fichero cabecera (header con una extensin .h) y un fichero con una
extension .cpp.
El fichero de cabecera (extensin .h o header) es una especie de mapa de la
librera: declara las funciones de la librera y la descripcin de la clase. El
fichero .cpp contiene el detalle de la librera: el cdigo de las funciones y las
variables declaradas en el fichero header. [1]
CONTRIBUCIONES
Ejemplos de uso
DESCRIPCIN
Begin
LiquidCrystal
Clear
setCursor
Muchos de los proyectos que podemos realizar con el Arduino requieren al menos una
puerta serie. Los dispositivos GPS, las pantallas LCD y otros dispositivos necesitan
conectarse a una puerta serie. Esta puerta consiste en dos conexiones: una RX para
recibir mensajes y una TX para enviarlos.
La utilidad de esta puerta radica en su simplicidad. En el pasado todos los ordenadores
tenan una o varias puertas serie. De hecho, el Arduino original usaba una puerta serie
para conectarse al ordenador y, aunque actualmente la conexin se realiza a travs de un
USB, lo hace a travs de una emulacin de puerta serie (que vista desde el ordenador es
una conexin serie). [4]
Los Arduino Uno y Duemilanove tienen una puerta serie conectado a los pines digitales
0 y 1, pero si tu proyecto necesita conectarse a ms dispositivos serie (por ejemplo un
GPS y un display LCD) puedes hacer dos cosas: comprarte el Arduino Mega (o
compatible) que tiene 4 puertas serie o usar la librera SoftwareSerial que se distribuye
con el entorno de desarrollo del Arduino (IDE).
La librera original solo proporcionaba una puerta software adicional adems de la
puerta hardware de serie y su velocidad estaba limitada a 9600 baudios. Estas
limitaciones fueron superadas por la nueva librera NewSoftSerial escrita por Mikal
Hart que fue incorporada por el equipo de desarrollo del Arduino a medidos de 2011
como la nueva SoftwareSerial. La siguiente tabla muestra las funciones incluidas en esta
librera:
FUNCIN
DESCRIPCIN
Begin
Available
isListening
listen
end
read
write
Esta nueva librera puede crear varias puertas serie software que pueden comunicar a
velocidades de hasta 115,000 baudios. Pero toda esta funcionalidad adicional tiene un
precio: el Arduino slo puede escuchar o recibir datos de una puerta serie software a la
vez (sin embargo, s que puede transmitir por varias simultneamente).
Cuando uses la librera con ms de una puerta serie software tienes que planificar
cuidadosamente tu sketch y el orden en el que recibirs los datos.
Consideremos un ejemplo: quieres conectar un GPS y un termmetro usando puertas
serie software. Los dispositivos GPS suelen enviar sus datos en paquetes espaciados un
segundo entre s, de manera que tu sketch puede comenzar escuchando la puerta serie
software y una vez ha recibido el primer paquete de datos pasar a escuchar la otra puerta
software, procesar sus datos y devolver la escucha al GPS.
El siguiente sketch muestra como la librera DetMet sera usada desde un sketch, con el
Arduino conectado al detector de metales equipado de un sensor MetDet:
#include "MetDet.h"
MetDet myMetDet
void setup()
{
// Inicializa el sensor MetDet
myMetDet.begin();
}
void loop()
{
// Actualiza lectura del sensor
myMetDet.update()
}
Bibliografa
[1 Prometec, Gua de Programacin de Arduino III, [En lnea]. Available:
] http://www.prometec.net/funciones-iii/. [ltimo acceso: 21 Julio 2016].
[2 Annimo, Gestionando las libreras, [En lnea]. Available:
] http://www.prometec.net/librerias/. [ltimo acceso: 21 Julio 2016].
[3 Arduino, Writing a Library for Arduino, [En lnea]. Available:
] https://www.arduino.cc/en/Hacking/LibraryTutorial. [ltimo acceso: 21
Julio 2016].
[4 J. V. . Martn, Explicando tecnologa, 13 Junio 2012. [En lnea].
] Available: http://explicandotecnologia.blogspot.com/2012/06/anadir-yusar-librerias-con-arduino.html. [ltimo acceso: 21 Julio 2016].