Академический Документы
Профессиональный Документы
Культура Документы
Pgina 1 de 8
Al final.
Por ltimo vamos a nuestro programa principal, si reiniciamos Arduino IDE ya nos abrir los
archivos que hemos creado en diferentes pestaas. Ahora los incluimos en nuestro programa
principal usando:
#include "datos.h"
Pgina 2 de 8
Si ejecuta este programa, se representar el cdigo de SOS (llamada de auxilio) en el pin 13.
El programa tiene unas pocas partes que tendremos que poner en nuestra librera. En primer
lugar, tenemos las funciones punto() y raya() que hacen el parpadeo. En segundo lugar,
tenemos la variable ledPin que indica el pin a utilizar. Por ltimo, est la llamada a pinMod ()
que inicializa el pin como salida.
Pgina 3 de 8
Pgina 4 de 8
Bsicamente, esto evita problemas si alguien accidentalmente usa dos veces el #include con la
librera que estamos construyendo, evitando que se declaren las variables y funciones ms de
una vez.
Por ltimo, se suele poner un comentario en la parte superior de la librera con su nombre, una
breve descripcin de lo que hace, quin lo escribi, la fecha y el tipo de licencia.
Echemos un vistazo a la cabecera completa:
/*
Morse.h - Library for flashing Morse code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
/
ifndef Morse_h
define Morse_h
include "WProgram.h"
class Morse {
public:
Morse(int pin);
void punto();
void raya();
private:
int _pin;
};
endif
A continuacin viene el constructor. Una vez ms, en el constructor se establece lo que debe
ocurrir cuando alguien crea una instancia de la clase. En este caso, el usuario especifica el pin
que le gustara utilizar. Configuramos el pin como salida en una variable privada para su uso en
las otras funciones:
MORSE:: Morse (pin int) (
_pin = pin; )
Pgina 5 de 8
Hay un par de cosas extraas en este cdigo. La primera es el Morse:: antes del nombre de la
funcin. Esto indica que la funcin es parte de la clase Morse. Vers esto en otras funciones de
la clase. Lo segundo es el subrayado en el nombre de nuestra variable privada, _pin. Esta
variable puede tener cualquier nombre, siempre y cuando coincida con la definicin que figura
en el archivo de encabezado. Agregar un subrayado al inicio del nombre es una convencin
comn para dejar claro que las variables son privadas, y tambin para diferenciarlas del
argumento de la funcin (el pin en este caso).
Despus viene el cdigo del programa que estamos convirtiendo en una librera (por fin!). Se
ve ms o menos lo mismo, salvo Morse:: delante de los nombres de las funciones, y en lugar
de _pin pin:
void Morse::punto() {
digitalWrite(_pin, HIGH);
delay(250);
digitalWrite(_pin, LOW);
delay(250);
}
void Morse::raya() {
digitalWrite(_pin, HIGH);
delay(1000);
digitalWrite(_pin, LOW);
delay(250);
}
Por ltimo, es tpico incluir un comentario en la parte superior del cdigo fuente. Vamos a ver
el cdigo:
/*
Morse.cpp - Library for flashing Morse code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
/
include "WProgram.h"
include "Morse.h"
Morse::Morse(int pin) {
pinMode(pin, OUTPUT);
_pin = pin;
}
void Morse::punto() {
digitalWrite(_pin, HIGH);
delay(250);
digitalWrite(_pin, LOW);
delay(250);
}
void Morse::raya() {
digitalWrite(_pin, HIGH);
delay(1000);
digitalWrite(_pin, LOW);
delay(250);
}
Y eso es todo lo que necesita (hay algunas otras cosas opcionales, pero hablaremos de eso ms
adelante). Vamos a ver cmo usar la librera.
Pgina 6 de 8
En primer lugar, hay que crear el directorio Morse dentro del subdirectorio de libreras . Copia
o mueve los archivos Morse.h y Morse.cpp a ese directorio. Ahora ejecuta el IDE de Arduino. Si
vas al men Sketch > Import Library deberas ver el una opcin Morse. La librera ser
compilada con los programas que la utilizan. Si no aparece la librera, asegrate de que los
nombres de los archivos terminan realmente ten .cpp y .h (y no en .pde o .txt, por ejemplo).
Vamos a ver cmo podemos modificar nuestro programa de SOS para hacer uso de la nueva
librera:
include <Morse.h>
Morse morse(13);
void setup() { }
void loop() {
morse.punto(); morse.punto(); morse.punto();
morse.raya(); morse.raya(); morse.raya();
morse.punto(); morse.punto(); morse.punto();
delay(3000);
}
Hay algunas diferencias con el programa original (aparte del hecho de que parte del cdigo se
ha trasladado a la librera).
En primer lugar, hemos aadido una declaracin # include al principio del programa. Esto hace
que la librera Morse est disponible para el programa y que se enve a la placa de Arduino.
Cuando ya no necesite una librera en un programa, debe eliminar la sentencia # include para
ahorrar espacio.
En segundo lugar, creamos una instancia de la clase Morse llamada morse:
Morse morse(13);
Cuando esta lnea se ejecute ( esto sucede incluso antes de que se ejecute la funcin setup () ),
se llamar al constructor de la clase Morse, y se le pasar un parmetro (en este caso, el valor
13).
Tenga en cuenta que nuestro setup() est vaco, esto se debe a que la llamada a pinMode () se
produce dentro de la librera (cuando se construye la instancia).
Pgina 7 de 8
Por ltimo, para llamar a las funciones punto() y raya(), tenemos que precederlas del prefijo
morse (que es el nombre de la instancia que hemos creado). Podramos tener varias instancias
de la clase Morse, cada una con su propio PIN almacenado en la variable privada _pin de esa
instancia. Al llamar a una funcin se indica que instancia de la clase se debe utilizar. Es decir, si
tuviramos:
Morse morse (13); Morse morse2 (12);
la llamada a morse2.punto (), hace que la salida sea por el pin 12.
Si pruebas el nuevo programa, probablemente te dars cuenta de que el IDE de Arduino no
reconoce las funciones de la librera y no resalta el cdigo. Por desgracia, por ahora el software
de Arduino no puede averiguar lo que hay definido en la librera (aunque sera una buena
caracterstica a tener en cuenta), as que tienes que ayudarle un poco. Para ello, crea un
archivo llamado keywords.txt en el directorio de Morse.. Que debe tener este aspecto:
Morse KEYWORD1 raya KEYWORD2 punto KEYWORD2
Cada lnea tiene el nombre de la palabra clave, seguido de un tabulador (no espacios), seguido
por el tipo de palabra clave. Las clases deben ser del tipo KEYWORD1 y se muestran de color
naranja; las funciones deben ser del tipoKEYWORD2 y sern de color marrn. Tendr que
reiniciar el entorno Arduino para conseguir que reconozca las nuevas palabras clave.
Es conveniente acompaar las libreras con algn programa de ejemplo que haga uso las
mismas. Para ello, cree un directorio examples dentro del directorio Morse. A continuacin,
copie el directorio que contiene el programa de ejemplo que escribimos arriba (lo llamaremos
SOS) en el directorio de ejemplos. (Puedes encontrar el programa de ejemplo con la opcin
Sketch > Show Sketch Folder) Si reinicias el entorno Arduino (esta es la ltima vez, lo prometo)
vers la opcin Library-Morse dentro de File > Sketchbook > Examples que contiene su
ejemplo. Es posible que quieras agregar algunos comentarios para explicar mejor cmo usar la
librera.
Pgina 8 de 8