Cómo Crear una Librería para Arduino en CodeBlocks

A medida que avanzamos o incursionamos cada vez más en el mundo de la programación, independientemente de la plataforma o el lenguaje, resulta de gran utilidad mantener un compendio de funciones claves, es decir, funciones que usamos de forma usual o que representan una parte importante o recurrente en el desarrollo de otras aplicaciones con fines más específicos, a esto que hemos denominado de forma arbitraria “compendio” se le conoce profesionalmente como librerías (o llamadas más correctamente bibliotecas) de funciones.

Existen dos tipos de librerías, las librerías dinámicas y las librerías estáticas, cada una con ventajas y desventajas al compararlas, sin embargo, ambas completamente útiles y funcionales. En esta oportunidad aprovecharemos este espacio (cómo el titulo lo indica) para ver paso a paso con un ejemplo sencillo, el desarrollo de una librería para Arduino (evidentemente una librería estática), esto por tres razones particulares, en primer lugar, dada la gran utilidad que representa tener la capacidad de desarrollar nuestras propias librerías de funciones dependiendo el medio en el cual nos desempeñamos, comprender los pasos que componen el proceso de creación de una de ellas para entender y adaptar librerías escritas por terceros y finalmente porque en el grupo de investigación del que hago parte (GAMA) en mi universidad, hemos iniciado un proyecto que tiene que ver todo con librerías en Arduino, así que espero que este artículo pueda dar algo de claridad sobre la creación de una librería para dicha plataforma.

Ahora quiero aclarar que en este caso no haré uso del entorno propio de Arduino, sino de una distribución de CodeBlocks que ha creado un usuario de internet para programar en Arduino y demás dispositivos AVR, y que para un desarrollo más profesional me parece el más adecuado, sin embargo, el desarrollo de una librería se puede hacer hasta con un block de notas en Windows (solo se trata de un .h y un .cpp que contienen el código).

En primer lugar, si quieres seguir el tutorial con la distribución de CodeBlocks para Arduino te recomiendo revisar este tutorial para que puedas descargar CodeBlocks y ver cómo crear los proyectos para Arduino (es un portable, no necesita instalación).

Nota: A lo largo de este tutorial, vamos a ir viendo el desarrollo de una librería típica cuando se aprende a hacer librerías dada su sencillez, esta librería se llamará Morse y tendrá dos métodos ( punto(), raya() ) que iluminarán un Led por un determinado tiempo, el objetivo es al final del artículo generar el código para mostrar un S.O.S. en clave Morse.

Creación del Archivo de Cabecera.

No necesitamos tener un proyecto activo en el sistema para comenzar la creación de la librería (este lo vamos a crear al final para probar el funcionamiento de la librería). Lo que debemos hacer es generar un nuevo archivo de cabecera, y podemos ir al menú “File” o hacerlo como en la imagen a continuación.

libreria arduino codeblocks tutorial

Damos click en File y seleccionamos el tipo de archivo .h (header file) para almacenar los prototipos de las funciones.

libreria arduino codeblocks tutorial 2

Luego de que damos click en Go nos aparecerá una ventana de dialogo donde se nos indica que escribamos la ubicación (carpeta) donde vamos a almacenar el archivo y qué nombre le vamos a dar a la librería.

libreria arduino codeblocks tutorial 3

Una vez le hemos dado click en FinalizarCodeBlocks nos genera un código automático en la plantilla del archivo de cabecera (.h), se considera una buena práctica y a su vez importante tener en cuenta incluir esas líneas que en este caso el IDE nos genera automáticamente, ya que le indican al preprocesador que no incluya varias veces las mismas funciones en el archivo final en caso de que ya se haya incluido previamente las cabeceras respectivas, el archivo para nuestro ejemplo se puede ver a continuación.

libreria arduino codeblocks tutorial 4

Entonces entre el #define#endif, vamos a incluir a Arduino.h y la clase con los prototipos de nuestras funciones y variables ya sean privadas o públicas, esto se muestra a continuación.

libreria arduino codeblocks tutorial 5

Teniendo ya escrita la cabecera de nuestra librería, con los prototipos de las funciones, vamos a volver a incluir un nuevo archivo (como vimos arriba), pero esta vez de código fuente de tipo C/C++, como se observa a continuación.

libreria arduino codeblocks tutorial 6

Damos click en Go, en la siguiente ventana donde nos pide que seleccionamos el tipo de lenguaje para el archivo, damos click en C++ y luego en siguiente.

libreria arduino codeblocks tutorial 7

Entonces el IDE nos genera un archivo en blanco con extensión .cpp en el cual escribiremos el código objetivo de nuestra librería (los métodos), lo primero que debemos hacer es incluir el archivo de cabecera de la propia librería y luego desarrollamos el código respectivo, sin olvidar que si estamos trabajando con clases, no podemos pasar por alto el operador de resolución de ámbito, el código fuente de nuestro ejemplo Morse.cpp/Morse.h se puede ver a continuación.

libreria arduino codeblocks tutorial 9

Uso de la Librería.

Como es evidente, si implementamos una librería, es porque posteriormente vamos a hacer uso de ella, en el caso de trabajar en el entorno de Arduino, para hacer uso de ella solo hay que copiar los archivos .h/.cpp en la carpeta respectiva (include) desde donde Arduino ejecuta sus cabeceras o en su defecto, copiar ambos archivos en la carpeta del proyecto donde van a ser usados y solo basta con realizar el #include “nombre_libreria.h” y ya podremos instanciar la clase para hacer uso de de sus métodos.

En el caso de nuestro ejemplo (Código Morse), vamos a hacer uso de las funciones punto()raya() para mostrar un mensaje de S.O.S. que consiste en código Morse en la secuencia … — … entonces en CodeBlocks vamos a generar un nuevo proyecto de Arduino (como mostramos en tutoriales anteriores). Lo que hacemos a continuación es dar click derecho sobre el nombre del proyecto y luego dar click en la opción Add Files para agregar los archivos .h/.cpp.

prueba libreria codeblocks 2

Cuando hemos indicado cuales son los archivos que queremos agregar, aparecerá la siguiente ventana, (puedes dejar seleccionadas las dos primeras opciones y la tarjeta a la cual está dirigida, o simplemente dejar seleccionado para todas las tarjetas)

prueba libreria codeblocks 1

Una vez damos click en OK, realizamos el #include de nuestra librería al inicio del código y podemos desarrollar nuestra aplicación de prueba como se haría normalmente, por ejemplo, el código de prueba para nuestra librería Morse, será el siguiente, listo para compilación y carga.

prueba libreria codeblocks 3

Al costado izquierdo se puede observar como los archivos Morse.cpp Morse.h quedaron ligados al proyecto de CodeBlocks.

Hasta aquí este artículo, espero que te haya resultado útil, y si crees que la información le puede ser útil a alguien más, ayúdanos a compartirla. Saludos.


Autor: Julio C. Echeverri.

3 comentarios en “Cómo Crear una Librería para Arduino en CodeBlocks

    • Hola Eva!, por supuesto que te ayudaremos, sin embargo me gustaría saber si visitaste el tutorial anterior donde dejamos el link de descarga de la distribución específica de CodeBlocks para Arduino ya que nativamente el reconoce todas las configuraciones de librerías para Arduino, yo acabo de re-compilar este ejemplo y todo ha ido sin problemas, incluso acabo de cargarlo a mi tarjeta Arduino.

      Los archivos .h y .cpp de la librería están en la misma carpeta del proyecto? es un requisito indispensable.

      Me gusta

      • Buenos días, Julio Cesar:
        Estoy utilizando el IDE específico de Codeblocks para Arduino. Los archivos .h y .cpp estén en mi árbol de proyecto aunque aparecen con la ruta de archivos para llegar hasta ellos.
        En mi proyecto tengo que construir una serie de librerías accesibles desde cualquier programa para Arduino que se cree en Codeblocks sin la necesidad de incluir los archivos dentro de la carpeta del proyecto porque está pensado para ayudar a los estudiantes en la programación, así que intentaré hacerlo copiando los archivos en la carpeta include a ver que pasa.
        Llevo sólo 1 mes trabajando en esta plataforma y 7 años sin programar así que estoy algo perdida.
        Me encanta la sencillez con que explicas las cosas, un gran trabajo.
        Muchas gracias por la ayuda, seguiré investigando donde estoy cometiendo el error.

        Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s