Estoy escribiendo una libreria para Arduino YNO R3.
Para ello estoy siguiendo el libro "Arduino: Manual de programacion", en concreto el capitulo:
"Como escribir una libreria para Arduino". Donde dice que son necesarios dos archivos para crear
una libreria "Morse.h" y "Morse.cpp" (por ejemplo)
Pero me surgen varias dudas:
¿Donde se escribe el texo de estos archivos? ¿en el bloc de notas, en la IDE de Arduino? ¿en algun programa especial?. Cuando tengo tecleados ya los dos archivos h y cpp ¿como doy la extension .h y .cpp a esos dos archivos?.
En el manual tambien se habla de crear una carpeta con el nombre de la libreria ("Morse" por ajemplo)dentro del subdirectorio "libraries" de Arduino y copiar o mover los archivos "Morse.h" y "Morse.cpp".
Pero desde donde copio o pego esos dos archivos que tengo tecleados.
Puede que sean preguntas muy simples, pero en lo que llevo leido de manual no menciona nada de eso.
Hola.
Tanto el fichero .h como el .cpp los puedes crear pinchando en la flecha (triangulito) que hay en la parte superior derecha del editor. Ahí seleccionas "Nueva pestaña", y te pedirá nombre (y extensión del nuevo código).
Todos los archivos que crees en pestañas, se guardarán en la misma carpeta del proyecto con sus respectivas extensiones.
Por ejemplo, crea un sketch que se llame morse.ino, luego agregas las pestañas morse.cpp y morse.h con sus códigos. En el morse.ino puedes hacer un ejemplo para de paso comprobar que tu librería funciona. De momento el include lo haces con "comillas", pues está todo en la misma carpeta (morse). Después, puedes quitar tu morse.ino y la carpeta ya sería la librería. Sólo te queda ponerla junto a tus otras librerías y ya la puedes llamar con #include <morse.h>. En cuanto al morse.ino, lo puedes renombrar, y meterlo en una subcarpeta con su mismo nombre, y quedaría como un ejemplo de tu librería.
Lo probaré mañana, hoy estoy liado.
Todas estas cosas ni las he visto en ningún sitio.
A ver si soy capaz de por lo menos montar la estructura de la librería.
.
Ya te cuento
He seguido tus instrucciones, pero no se si lo entiendo bien.
Para crear el sketch Morse.ino he abierto el IDE y le he dado a salvar con el nombre Morse.ino despues he creado las pestañas Morse.h y Morse.cpp con sus codigos.
Despues en el sketch Morse.ino he tecleado un programa para comprobar que funciona la libreria.
El include lo he tecleado así: "#include" <Morse.h> no se te refieres a eso.
Luego he abierto la carpeta Morse.ino y he sacado el archivo Morse.ino. Y la carpeta Morse.ino con Morse.h y Morse.cpp en su interior la he movido a la carpeta Libraries.
Lo que dices de renombrar el archivo Morse.ino no lo entiendo, ¿lo dejo como Morse a secas?
¿Tengo que meterlo en una carpeta que se llame igual que el archivo?
Disculpa si esta questiones son muy basicas pero muchas simples de estas impiden que funcionen estas cosas.
Para testar, pobló así: #include "morse.h"
Si te funciona con las librerías, es decir, ya están listas, puedes renombrar morse.ino a ejemplo.ino y moverlo a una subcarpeta llamada igual (ejemplo) entonces puedes mover la carpeta morse con su subcarpeta ejemplo al directorio de librerías, y debería aparecerte en el menú de archivo la librería morse con tu sketch ejemplo.
Ortoedro ¿no te importaria enviarme el morse.h .ino .ccp para hecharle un vistazo? es por si me sirviese para un proyecto de radiobaliza a demanda o silenciosa. mi correo ea1get@gmail.com
Te envio los archivos Morse.ino Morse.h y Morse.cpp para que los eches un vistazo, si no te importa;
Ya que al dar a verificar me da el siguiente error:
Arduino:1.6.3 (Windows XP), Placa:"Arduino Uno"
C:\Archivos de programa\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Archivos de programa\Arduino\hardware\arduino\avr\cores\arduino -IC:\Archivos de programa\Arduino\hardware\arduino\avr\variants\standard C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build2000901975079652715.tmp\Morse.cpp -o C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build2000901975079652715.tmp\Morse.cpp.o
C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build2000901975079652715.tmp\Morse.cpp:5:22: fatal error: WProgram.h: No such file or directory
Hola.
Por favor, cuando pegues un código, antes de pegar pincha en el primer icono de los que tienes sobre el editor </> y así lo pegarás entre etiquetas code, que lo hacen más vistoso y utilizable directamente, tal que así:
Como verás lo único que he cambiado es Wprogram.h por Arduino.h, que es el que se suele utilizar en las versiones más modernas del IDE, y simplifica las cosas. Si te compila, puedes cambiar el nombre de Morse.ino a (por ejemplo) basico.ino y meterlo dentro de una subcarpeta llamada basico. Entonces, mueve toda la carpeta a la de librerías, y al abrir de nuevo el IDE, en el menú archivo->ejemplos te aparecerá tu librería y dentro de ella basico.
Saludos.
De esta manera el codigo se compilará y le hará compatible con Arduino 0023 y las versiones 1.0.
Segun decia en la pagina que he mirado.
Y ya ha compilado.
Pero ahora no entiendo esto que mencionas :
" Si te compila, puedes cambiar el nombre de Morse.ino a (por ejemplo) basico.ino y meterlo dentro de una subcarpeta llamada basico. Entonces, mueve toda la carpeta a la de librerías, y al abrir de nuevo el IDE, en el menú archivo->ejemplos te aparecerá tu librería y dentro de ella basico."
Lo que yo he hecho y no se si estara bien es (tus instrucciones las he entendio de esta manera):
Dentro que la carpeta Morse.ino tenía el archivo Morse.ino que he renombrado a Basico.ino.
Dentro de esa Morse.ino he creado una subcarpeta Basico donde he metido Basico.ino.
y despues toda la carpeta Morse.ino (con la carpeta Basico y los archivos Morse.h y Morse.cpp)
la he movido a las capeta Libraries.
Pero despues de abrir la IDE en el menu archivo->ejemplos no está la libreria.
No se si estoy haciendo bien lo de las carpetas y subcarpetas.
Y una pregunta más ¿por que la extension .ino? Me imagino que viene de Arduino.
Y en el menú Archivo, me aparece en ejemplos una línea llamada Morse, que al desplegar tiene como ejemplo Basico. Mi versión de IDE es la 1.6.0.
Hay dos ubicaciones de librerías. Una en la propia carpeta donde está instalado el ide (en mi caso /arduino-1.6.0/libraries) y otra en la carpeta de sketch por defecto (en mi caso /Arduino_Projects/libraries). En ambas aparece el menú perfectamente.
En cuanto a WProgram.h o Wconstants.h, sencillamente las considero obsoletas y no las uso. En su lugar sólo hago referencia a Arduino.h; pero la opción de precompilador que mencionas es perfectamente válida (#if ARDUINO >= 100).
Y esta guardada en la ubicacion por defecto. Aun asi no aparece Morse en Archiv/Ejemplos, despues de reiniciar el IDE.
Pero si abro Basico.ino y lo cargo en el Arduino, funciona perfectamente.
He probado a copiar la carpeta Morse en la otra ubicuacion de las librerias de Arduino (Archivos de programa/arduino/Libraries) y despues de reiniciar el IDE tampoco aparece Morse en Archivo/ejemplos.
Y al cargarlo de nuevo enle Arduino, funciona bien, pero enla zona de mensajes del IDE, me dice que
el Morse de Archivos de programa/arduino/Libraries no lo usa.