Como crear librería, para Arduino.

En esté tutorial explicaré cómo escribir una librería simple con una función para encender y apagar un LED.

Para este tutorial es aconsejable entender cómo funcionan las clases en C++.

¿Qué es una librería y por qué la necesito?

Una librería es un conjunto de funciones prefabricadas que pueden importarse en el código en que estás trabajando. Imagina que necesitas controlar motores: en vez de escribir tu código desde cero, puedes incluir una librería que contiene funciones para mover un motor.

Las librerías ahorran trabajo (especialmente si están escritas por

terceros, aunque te recomiendo que escribas tu propio código siempre que sea posible), pero también simplifican el programa. ¿Por qué? Las definiciones de cada función ocupan espacio en el código principal, y lo hacen díficil de leer. Por tanto es una buena práctica separar el código en varios archivos.

Estructura de una librería para Arduino

Las librerías para Arduino se escriben en C++, y de hecho son clases. ¿No tienes muy claro lo que son las clases? Una clase es como un struct, solo que además de contener variables, puede tener también funciones.

Habrá que crear dos archivos: “mi_clase.h”, que contendrá las cabeceras de la clase, y “mi_clase.cpp”, que contendrá todas las definiciones y el código completo de las funciones.

Crea un nuevo directorio con el nombre de la librería (ej. robologs_lib) y dentro crea dos ficheros: robologs.h y robologs.cpp

El fichero robologs.h creará una clase llamada ‘robologs’ que contendrá dos funciones: el constructor de la clase y una función blinking que apagará y encenderá un led en intervalos regulares de tiempo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//Tutorial de librerias personalizadas con Arduino
//
//Escrita por Transductor
//www.robologs.net
 
//Primero los include guards
#ifndef ROBOLOGS_H
#define ROBOLOGS_H
 
//Cambia Arduino.h por Wprogram.h si usas una version antigua de la IDE.
#include <Arduino.h> //Permite utilizar los comandos de Arduino
 
class robologs //Definicion de la clase
{
 
    public:
 
    //Constructor de la clase
    robologs();
 
    //Funcion blinking: enciende el led 'pin', espera 'time' segundos y lo apaga
    void blinking(int pin, int time);
 
    private:
 
    //Nada que declarar
};
 
#endif

El fichero robologs.cpp contiene el código de las funciones. El constructor está vacío (no tiene que hacer nada en especial a parte de crear objetos). Por contra, la función blinking encenderá y apagará un pin digital en intervalos de tiempo que recibirá como parámetro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "robologs.h"
 
robologs::robologs(){} //Constructor: no tiene que hacer nada en especial
 
void robologs::blinking(int pin, int time)
{
    //Recibe un pin y un tiempo como parametros
    //Enciende y apaga el pin según el tiempo
 
    //Establecer pin como salida
    pinMode(pin, OUTPUT);
 
    //Encenderlo y apagarlo
    digitalWrite(pin,HIGH);
    delay(time);
    digitalWrite(pin, LOW);
    delay(time);
}

 Testeando…

Por último queda probar la librería, y para ello debes importarla. Si tienes una versión nueva de la IDE abre Arduino -> Sketch -> Import Libraries -> Add Library y selecciona el directorio que has creado. Si tienes una versión antigua tendrás que instalar la librería a mano.

He aquí un código de ejemplo.

1
2
3
4
5
6
7
8
9
10
11
#include <robologs.h>
 
robologs robby;
 
void setup()
{}
 
void loop()
{
   robby.blinking(13, 1500);
}

Si lo compilas y lo cargas, verás que el LED D13 se enciende y se apaga.

Related Articles

Este espacio lo he creado pensando en los entusiastas como tú, para compartir y centralizar documentación sobre temas que me apasionan: Arduino, impresoras 3D, Raspberry Pi, y mucho más.

Además, he querido fusionarlo con mi canal de YouTube, donde exploramos retro-informática, Raspberry Pi, consolas retro, electrónica y otras maravillas del mundo tecnológico. Este es tu sitio si disfrutas aprendiendo, creando y reviviendo lo mejor de la tecnología de ayer y hoy.

¡Bienvenido!