Poesía Binaria

Creando bibliotecas o librerías para Arduino

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

Tenemos que mirar dónde tenemos nuestro sketchbook (File / Preferences), dentro de ese directorio, creamos otro llamado libraries (si no lo tenemos ya), y dentro de éste creamos parpadeo (el nombre de nuestra biblioteca). Ya podremos compilar libremente utilizando #include , e incluso si hacemos clic en Sketch / Import Library encontraremos parpadeo, para poder insertarla fácilmente en nuestros proyectos.

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

También podría interesarte....