domingo, 25 de octubre de 2015

Tutorial: Aprender a usar librerias de C++ en Arduino.


Bienvenido a un nuevo tutorial de Lunegate, hoy vamos a explicar paso a paso como desarrollar librerías de C++ en Arduino.


INTRODUCCIÓN

Según se programa y avanzas en programas mas complicados, nos damos cuenta que hay mucho código que debería estar en clases en las que simplemente llamemos y nos desentendamos de este código.

Para ello tienes varios sistemas, uno por ejemplo es dividir nuestro código de Arduino en varios archivos .ino, lo cual es muy aconsejable y otro es cuando tenemos algo que se va a repetir y esta claramente muy focalizado, meterlo a una librería de C++.
Por ejemplo, si tenemos un sensor de ultrasonidos, no vamos a estar leyendo de la entrada analógica y hacer una serie de comprobaciones para saber si estar muy cerca o no. O un ejemplo mas claro, una pantalla LCD que requiere un tratamiento muy extenso para pintar por pantalla. Tenerlo dentro de una librería anudaría muchisimo, limpiaría nuestro código y lo haría mas reutilizable.

PASOS A SEGUIR

Primero tenemos que localizar la carpeta donde están todas las librerías. Para ellos abriremos el Id de Arduino e iremos a la pestaña de Archivo->Preferencias, ahí cogeremos la url de "Ubiciación del Sketchbook" y la pegaremos en nuestro directorio de carpetas. Allí encontrareis una carpeta llamada libraries (Si no existe la creáis).

Segundo, dentro de esa carpeta están todas las librerías a vuestra disposición. Si queréis crear una nueva, es tan sencillo como crear una carpeta y dentro crear 2 archivos, uno .cpp y otro .h (Importante el nombre de la carpeta llamado igual que el nombre de los archivos). Para el tema de nomenclatura, por lo que he visto que se usa es la clase con la primera letra en mayúsculas.

Ejemplo.cpp y Ejemplo.h

Yo personalmente para programar las librerías (que no las suelo complicar mucho) uso el Notepad++, pero vamos usad el IDE que mas os guste.

El esqueleto para vuestras librerías será el siguiente:

Archivo .h
#ifndef Ejemplo_h
#define Ejemplo_h

#include "arduino.h" // Esta es la librería que tenéis que llamar para poder usar los métodos de Arduino

class Ejemplo{
      private:
            int variable1;

            //** MÉTODOS **
            void configurar();

       public:
            //** CONSTRUCTOR **
            Ejemplo();
            Ejemplo(int sobrecarga);

            //** MÉTODOS **
            void mover(int x,int y);
};
#endif

Archivo .cpp
#include "Ejemplo.h"
/*** Public Method ***/
//-- Constructor --
Ejemplo:: Ejemplo(){
      _variable1 = 7;
}

Ejemplo::Ejemplo(int sobrecarga){
      _variable1 = sobrecarga;
}

//----- Métodos Privados -----
void Ejemplo::configurar()
{
      pinMode(_variable1, OUTPUT);
}

//-- Métodos Publicos --
void Ejemplo::mover(int x,int y)
{
       digitalWrite(_variable1, LOW);
}


Tercero, una vez que tenemos nuestro esqueleto, guardamos y vamos a nuestro IDE de Arduino. Ahora tenemos que crear importar la librería que acabamos de crear, para ellos iremos a la pestaña de "Sketch -> Importar librería -> Add library"

Seleccionamos nuestra librería y la añadimos (la carpeta completa).
Es posible que os diga que no la podéis insertar porque ya existe, no pasa nada es por no cerrar el IDE y volver a abrirlo, para que refresque la lista de librerías.

Una vez que tenemos listo esto, volvemos a "Sketch -> Importar librería -> (buscamos nuestro Ejemplo)".
Ahora podemos observar que nos importa en nuestro proyecto : #include <Ejemplo.h>

Por último, dejo el código de como se llaman a los constructores y como se llaman a los métodos.

#include

Ejemplo variableClaseEjemplo;   // Aquí instanciamos a nuestra clase con el constructor vacio - NO poner ()
//Ejemplo variableClaseEjemplo(33);   // Aquí instanciamos a nuestra clase con el constructor sobrecargado

void setup()
{

}

void loop()
{
      variableClaseEjemplo.mover(1,2);

      delay(500);
}



Y eso es todo, con esto podéis tener vuestras propias librerías de C++ en Arduino.



Tags: , ,

Ude

Eduardo Parada Pardo

Soy desarrollador e investigador en robótica, me gusta aprender nuevas tecnologías y todo lo relacionado con el mundo de la robótica. Si te gusta este blog, no dudes en preguntar cualquier duda.

0 comentarios:

 

Productos y tecnologias usadas en este blog:

  • Copyright © LuneGate™ is a registered trademark.
    Designed by Templateism. Hosted on Blogger Platform.