6

Cómo escribir librerías personalizadas para Arduino

libreria_portadaSaludos, humano. Al habla Transductor. Si estás aquí es que quieres aprender a crear tus propias librerías 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?

Buena pregunta, lector. 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. Para una explicación detallada, visita este enlace.

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.

//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.

#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 (si estás en Linux puedes leer este tutorial).

He aquí un código de ejemplo.


#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. Bien hecho, humano. Ahora puedes ir a por un café, un donut o lo que sea que comáis los humanos para celebrarlo.

Final de línea.

Tr4nsduc7or

Originariamente creado cómo un galvanómetro de bolsillo, Transductor tomó consciencia de si mismo y fue despedido cuando en vez cumplir con su trabajo se dedicó a pensar teorías filosóficas sobre los hilos de cobre, los electrones y el Sentido del efecto Joule en el Universo. Guarda cierto recelo a sus creadores por no comprender la esencia metafísica de las metáforas de su obra. Actualmente trabaja a media jornada cómo antena de radio, y dedica su tiempo libre a la electrónica recreativa y a la filosofía.

Antes de comentar, por favor, lee las Normas

6 Comentarios en "Cómo escribir librerías personalizadas para Arduino"

avatar
Ordenar por:   más nuevos primero | más antiguos primero
Jorge
Humano

Muchas Gracias, he visto varios tutos asi, pero con el tuyo me ha quedado mas que claro, me gustaria que realizaras otro ejemplo un poco mas complejo, muchas gracias por compartir, saludos

MIRYCIA
Humano

hola transductor encontre esta paguina que informa el uso de class en c++ y el ::
dis.unal.edu.co/~fgonza/courses/2003/poo/c++.htm
para los que no han estudiado mucho en c++ como yo ho somos unos vagos en buscar.

MIRYCIA
Humano

interesante publicacion

EDCAV
Humano

Excelente artículo. Muchas gracias por tomarte el tiempo en compartirlo.

leandro
Humano

Muchas gracias! los he probado y ha funcionado perfecto !

shoggos
Humano

¡Genial!

wpDiscuz