Contactar con TUTO2002

1.59 Lib

Mi Librería  (TutoLib)

 

Creo que ha llegado el momento de construir mi propia librería

 

 

 
No os asustéis no pienso ir a IKEA, ni llenar la casa de libros….

 

¿Para que necesitamos una Librería?

 

Según vamos avanzando en el desarrollo de un proyecto/ programa,
poco a poco vamos añadiendo nuevos controles / alternativas a la idea original.

 

Esta estrategia es buena pues no permite ir comprobando y eliminando errores.

 

Pero al final tenemos un montón de líneas de código, mal estructuradas (por el proceso de creación)
que resultan bastante difíciles de entender y más para una persona distinta al programador.

 

Las Subrutinas son un primer paso en la simplificación

 y mucho más cuando se repiten las mismas acciones en varias partes del programa con distintas variables
(Ejemplo “calibrar un pin analógico”)

 

En una subrutina podemos agrupar una acción concreta e incluso depurarla en un programa elemental de prueba.

 

Pero son líneas de código en nuestro programa que dificultan la lectura

 

Si la misma subrutina la queremos utilizar en otro programa tenemos que  recurrir al “copiar y pegar”

 Si posteriormente la mejoramos  /modificamos debemos modificarla en todos los programas en la que la hemos utilizado.

 

Por otra parte, puede ser que al lector del programa no le interese como se hace una cosa,
sino simplemente le basta conocer que datos tiene que facilitarle a la función y que va a obtener como resultado.

 

¿Acaso nos preocupa que hace Arduino cuando le decimos?

Serial.println( “Hola”);

Salvo a los eruditos, el resto nos conformamos con utilizarla.

 

De todas formas  en las librerías se incluye el “fuente”  Podemos ver como  hace las “cosas”.

 

 

La utilización de librerías  nos facilita que en el sketch principal solo necesitemos llamar a las funciones de nuestra librería,
en lugar de escribir / copiar la totalidad del código.

 

Aquí tenéis unas buenas explicaciones de cómo construir vuestra propia librería

http://www.arduino.cc/playground/Code/Library

 http://arduino.cc/en/Hacking/LibraryTutorial

 Mi resumen:

Tenemos que crear una carpeta con el nombre de la librería

Esta carpeta hay que añadirla al  directorio “libraries”

En la carpeta tenemos que incluir 3 ficheros:

 

El de  “cabecera”  (header) , extensión .h

El “fuente” (source) , extensión .cpp

El de “palabras clave” (keywords) , extensió .txt

 

El fichero de “cabecera”, contiene,  “ agrupadas / envueltas ”:dentro de una “clase”
 Una línea para cada “función” de  la librería 
Todas las variables que se van a utilizar  

Una clase es una simple colección de funciones y variables que se “almacenan” todas juntas en un “sitio”.

 

Las funciones y las variables pueden ser

  • Públicas (public)
  • Privadas (private)

A la clase y a las funciones podemos pasarle parámetros  o no

 

Dentro de una clase las funciones pueden

Devolvernos datos

            Mantener y modificar sus propias variables

            Pasarse valores de una función a otra  (Si los hemos definido public)

 

En nuestro programa Arduino (.pde) después de haber cargado la librería

#include <TutoLib.h>

Podemos crear un solo elemento/miembro (instance) de la “clase “

TutoLib misfunciones; 

 

O como hacemos cuando utilizamos la Librería Servo que creamos un elemento para cada motor

Servo motorDetras; 
Servo motorDerecha;

En este caso cada elemento creado (motor) tiene sus propios valores (pin al que esta conectado, PWM , etc.)

 

A partir de que hayamos creado el miembro podemos utilizar todas las funciones incluidas en su librería.

Ejemplos:

int valor = misfunciones.calibrarAnalogico(Pin9);
motorDelante.write(pulsoMotorDelante); 

Me parece que me estoy liando demasiado y que lo mejor es que experimentemos.

Solo tropezando se aprende donde están las piedras

En la ficha de Código incluyo una primera versión de prueba de TutoLib y un pequeño programa para experimentar.

 

Os agradeceré cualquier sugerencia y/o corrección

Ya sabéis que considero el Kuadricóptero es un proyecto de todos

Notas Posteriores:

 

Os recomiendo ver la ficha de

 

 

Enlaces:

Comments