miércoles, 30 de abril de 2014

Crear nueva libreria(I)

En este post intentaré explicar como crear una librería sencilla, para usar un módulo de led RGB con 7 colores.

Lo primero hay que mencionar los archivos básicos de la librería, que son dos, uno con extensión .h y otro con extensión .cpp.

A la librería le llamaremos Rgb, por lo tanto serán los archivos Rgb.h y Rgb.cpp

Empezamos con el .h

  •  Rgb.h
/*
Rgb.h
Created by millan2525 http://arduinofacill.blogspot.com.es/
*/
#ifndef Rgb_h
#define Rgb_h
#include "Arduino.h"

class Rgb
{
   public: Rgb(int red, int green, int blue); void color(int rojo, int verde, int azul);
   private:
   int _red;
   int _green;
   int _blue;
};

#endif

Si vamos por partes, el ifndef y el define Rgb_h lo quita errores de incompatibilidad al llamar varias veces a la clase.

El #include "Arduino.h" incluye las funciones principales de arduino, que un scketch carga por defecto.

Despues simplemente nombramos los metodos y procesos, y los asignamos según sean públicos o privados(Solo pueden ser editados y ejecutados desde dentro de la clase).

#endif finaliza la clase.


Si pasamos al segundo archivo, el cpp.

Rgb.cpp
/*
Rgb.cpp
Created by millan2525 http://arduinofacill.blogspot.com.es/
*/

#include "Arduino.h"
#include "Rgb.h"

Rgb::Rgb(int red, int green, int blue)
{
   pinMode(red, OUTPUT);
   pinMode(green, OUTPUT);
   pinMode(blue, OUTPUT);
   _red = red;
   _green = green;
   _blue = blue;
}

void Rgb::color(int rojo, int verde, int azul)
{
 if(rojo == 1){
   digitalWrite(_red, HIGH);
   } else {
   digitalWrite(_red, LOW); }
 if(verde == 1){
   digitalWrite(_green, HIGH);
   } else {
   digitalWrite(_green, LOW); }
 if(azul == 1){
   digitalWrite(_blue, HIGH);
   } else {
   digitalWrite(_blue, LOW); }
}


#include "Arduino.h"
#include "Rgb.h"

Incluye los archivos Arduino.h y Rgb.h(el que hemos creado y el de arduino básico)

Rgb::Rgb(int red, int green, int blue)
{
   pinMode(red, OUTPUT);
   pinMode(green, OUTPUT);
   pinMode(blue, OUTPUT);
   _red = red;
   _green = green;
   _blue = blue;
}

Inicia los valores al iniciar la clase, Rgb:Rgb hace referencia a la clase.

void Rgb::color(int rojo, int verde, int azul)
{
 if(rojo == 1){
   digitalWrite(_red, HIGH);
   } else {
   digitalWrite(_red, LOW); }
 if(verde == 1){
   digitalWrite(_green, HIGH);
   } else {
   digitalWrite(_green, LOW); }
 if(azul == 1){
   digitalWrite(_blue, HIGH);
   } else {
   digitalWrite(_blue, LOW); }
}

crea la función color, con los parametros de los tres leds independientes.

Mañana explicaré como se usa y algunas otras cosas
Un saludo ;)

No hay comentarios:

Publicar un comentario