Aunque en inglés library, es biblioteca (ese lugar donde hay tantos libros y se requiere silencio), y no librería (ese lugar donde se venden libros), a la RAE le da igual, y no quiero entrar mucho en eso…
Una de las ventajas de los lenguajes modernos es que no tenemos que escribir todo el código junto, incluso muchas partes de código no son nuestras; existen bibliotecas con funcionalidades que podemos llamar desde nuestros programas, y de hecho si queremos programar bien, uno de nuestros deberes es la reutilización de código, para lo cual, nosotros podemos crear nuestras propias bibliotecas y utilizarlas en nuestros programas… o compartirlas con otros desarrolladores.
Contaré todo esto de dos formas: para en el entorno Arduino y para hacerlo sin él.
En principio, vamos a hacer un pequeño programa en el que hagamos parpadear un led, aunque para ello, crearemos una clase llamada Parpadeo que nos permita configurar el led y el retardo. Esta clase estará en los archivos parpadeo.h y parpadeo.cpp ; a continuación pongo el código fuente de parpadeo.h, parpadeo.cpp y blinky.pde (el programa principal).
parpadeo.h:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <WProgram.h> class Parpadeo { public: ~Parpadeo(); Parpadeo(int ledpin, int retardo); void blink(); private: int ledpin; int retardo; }; |
parpadeo.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include "parpadeo.h" Parpadeo::~Parpadeo() { } Parpadeo::Parpadeo(int ledpin, int retardo): ledpin(ledpin), retardo(retardo) { pinMode(ledpin, OUTPUT); } void Parpadeo::blink() { digitalWrite(ledpin, HIGH); delay(retardo); digitalWrite(ledpin, LOW); delay(retardo); } |
blinky.pde:
1 2 3 4 5 6 7 8 9 10 11 12 | #include Parpadeo p(10, 500); void setup() { } void loop() { p.blink(); } |
Aunque, cómo debemos colocar estos archivos?
Con el IDE Arduino
Con el script para scons
Lo bueno es este método es que podemos insertar nuestras bibliotecas donde queramos, por ejemplo para utilizar las incluidas dentro de sketchbook, podemos hacer lo siguiente:
$ scons EXTRA_LIB=/home/gaspy/sketchbook/libraries
La estructura debe ser siempre la misma:
[directorio de libraries] / [nombre de la biblioteca] / [nombre de la biblioteca.h] (y demás archivos)
Por lo tanto para compilar con el script de scons debemos incluir EXTRA_LIB=[directorio de libreries] y este directorio de libraries puede estar en cualquier lado, puede ser una ruta relativa o absoluta, puede llamarse de cualquier forma, por ejemplo, el mío se llama libs.
Si no queremos escribir mucho, y vamos a construir muchas veces desde línea de comandos podemos hacer lo siguiente:
$ LIBS=»EXTRA_LIB=[directorio de libraries]»
$ scons $LIBS