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
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
Pingback: Bitacoras.com /
Pingback: Poesía binaria » Memoria dinámica con Arduino en C++ /
Hola, estoy aprendiendo sobre las librerias en arduino, tu ejemplo me salio al dedillo, el problema es, que quiero pasarle el parametro solo del led que voy a utilizar, y despues en on y off el tiempo que estara encendido o apagado, el problema es que puse un segundo, y no se apaga, te agradeceria mucho que me ayudaras un poquito con el codigo que te paso a continuacion. Gracias.
#include
class LED1
{
public:
~LED1();
LED1(int ledpin);
void on(int tiempo);
void off(int tiempo);
private:
int ledpin;
int tiempo;
};
#include «led1.h»
LED1::~LED1()
{
}
LED1::LED1(int ledpin): ledpin(ledpin)
{
pinMode(ledpin, OUTPUT);
}
void LED1::on(int tiempo)
{
digitalWrite(ledpin, HIGH);
delay(tiempo);
digitalWrite(ledpin, LOW);
}
void LED1::off(int tiempo)
{
digitalWrite(ledpin, LOW);
delay(tiempo);
digitalWrite(ledpin, HIGH);
}
#include «led1.h»
LED1 led1(13);
void setup()
{
}
void loop()
{
led1.on(1000);
}
Ok ya lo he solucionado. 🙂
Hola David!!
Gracias por tu comentario y perdona la tardanza, podías contar cómo lo has solucionado, por favor ¿? 🙂 Estaría muy bien para los futuros visitantes que lean tu comentario.
Hola amigos desde hace tiempo eh querido realizar una libreria para un sensor de humedad, pero no me es funcional alguna idea? tengo un problema en una funcion que retorna un valor de tipo float, quien puede ayudar. y subo el codigo de mi libreria.
Prueba subirlo a pastebin o alguno parecido a ver si alguien se anima 🙂
Hello! I want to say that this article is amazing, nice written and include almost all important infos. sell my house fast dallas