Go Down

Topic: [SOLUCIONADO] ¿Como adaptar una libreria? (Read 1 time) previous topic - next topic

LuisAntonio

Aug 25, 2011, 10:17 am Last Edit: Aug 29, 2011, 11:58 am by LuisAntonio Reason: 1
Hola a todos, soy recientemente nuevo en Arduino, y tras tocar un poco los tutoriales y ejemplos básicos de Arduino, me he encontrado ante un problema....las librerías. Abro este post por si alguien podría aportar información o ayuda de como crear una librería nueva, que puntos se deben tratar en ella, o simplemente como adaptar una librería que hayas visto, para usarla tu y poder modificarla.

Lo mas que yo he encontrado es:

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

Gracias al que pueda ayudarme a mi o a todos los que sean novatos como yo.
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

ionhs

Como el tema de las librerías se suele preguntar mucho se puso ese tema en el playground http://arduino.cc/playground/Es/FAQ

LuisAntonio

oh!! muchas gracias, pero en el tema de adaptar una libreria no hay nada? 

gracias por la ayuda.
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Heke

¿ Adaptar a que... ?

No pillo la pregunta
CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

LuisAntonio

Si tengo una libreria de arduino (la cual no entiendo demasiado xD) como podria adaptarla para que funcionara en alguna placa que no sea de arduino pero sea compatible/semejante ( como por ejemplo un Waspmote tecnología de Libelium)

Yo supuse que al trabajar con el mismo micro, aceptaria la libreria, pero los #includes que se llaman en la libreria parece que no se encuentran o como si fueran distintos en el API de Waspmote al de Arduino. No se si me he explicado bien.... La cuestión esque estoy con un proyecto de transmisión entre arduinos pero como puente intermedio uso 2 Wasp para que se comuniquen inalambricamente, y el que no me funcione la libreria que uso para los Arduinos en los Wasp me retrasando un poco....
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Heke

Ufff... era eso...

No es tan facil, aunque lleven micros iguales no son compatibles sin mas.

Yo pasé una liberia de PIC a arduino para usarla pero tuve que traducir comandos y adaptar ciertas funciones a arduino, porque esta no  era muy dificil, pero aun asi, a veces no sera ni posible.

Un saludo.
CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

LuisAntonio

Bueno esta semana voy a mirarme un poco como van y la que viene intentare "adaptarla" xD si consigo algo os lo cuento!!!
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Igor R

Si no me equivoco el Waspmote usa un atmega 1281, asi que no deberias tener problema con la libreria...;)

LuisAntonio

Ya pero el problema que yo creo que es lo que tengo que modificar, es que en la libreria se llama al include WProgram, y en el API de Waspmote el WProgram es distinto al de Arduino...
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Igor R

#9
Aug 29, 2011, 11:02 am Last Edit: Aug 29, 2011, 11:06 am by Igor R Reason: 1
y cual es el problema? No se como funciona el Waspmote, es la misma filosofia que Arduino? Es decir, con un setup() y un loop() ? Tiene un core con funciones de alto nivel? usa lenguaje de Arduino?
La libreria que quieres adaptar, que es la mia  ;) , esta escrita en C, asi que deberia funcionar sin problemas, ya que no usa ninguna funcion de Arduino. Mientras uses gcc + avrlibc, vas bien con ella.

Por otro lado, yo la he usado con un ATmega1280, que es el micro que usaba antes la version Mega de Arduino.... No me he mirado los datasheet, pero no creo que sea muy diferente el atmega1281 del atmega1280.

;)


LuisAntonio

#10
Aug 29, 2011, 11:12 am Last Edit: Aug 29, 2011, 11:14 am by LuisAntonio Reason: 1
Es identico a Arduino, lo único que el API se ha cambiado un poco, los programas son cuasi-identicos a los de Arduino.

La verdad es que no entiendo mucho de librerias, pero lo que yo creo que es el problema es lo que he comentado, el #include WProgram de la libreria que llama a ese archivo para usar algo que contenga (lo cual desconozco), y claro al meter la libreria en el API de Waspmote, si existe ese archivo pero es distinto al de Arduino, y al probar un programa de envio de mensajes por bus CAN no compila bien dando un error.
EL PROGRAMA
Code: [Select]
#include <CAN.h>

#include <pinout.h>

void setup()
{
USB.begin();
USB.println("Empezamos...");
CAN.begin(1);

//Pin 6 INPUT and R pull up ON (Sensor)
pinMode(DIGITAL4,OUTPUT);



}

void loop()
{


CAN_TxMsg.id=0x200;    //Device with speaker sends ID=200, Device with sensor sends=ID=100
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=digitalRead(6);
CAN_TxMsg.data[1]=0x00;
CAN_TxMsg.data[2]=0x00;
CAN_TxMsg.data[3]=0x00;
CAN_TxMsg.data[4]=0x00;
CAN_TxMsg.data[5]=0x00;
CAN_TxMsg.data[6]=0x00;
CAN_TxMsg.data[7]=0x00;

CAN.send(&CAN_TxMsg);

if (CAN.CheckNew())
{

CAN.ReadFromDevice(&CAN_RxMsg);

//Print message via Serial Port
USB.print(CAN_RxMsg.id,HEX);
USB.print(" => ");
USB.print(CAN_RxMsg.data[0],HEX);
USB.print(" - ");
USB.print(CAN_RxMsg.data[1],HEX);
USB.print(" - ");
USB.print(CAN_RxMsg.data[2],HEX);
USB.print(" - ");
USB.print(CAN_RxMsg.data[3],HEX);
USB.print(" - ");
USB.print(CAN_RxMsg.data[4],HEX);
USB.print(" - ");
USB.print(CAN_RxMsg.data[5],HEX);
USB.print(" - ");
USB.print(CAN_RxMsg.data[6],HEX);
USB.print(" - ");
USB.println(CAN_RxMsg.data[7],HEX);

//Byte 0 => Info from the other board with the sensor status
if (CAN_RxMsg.id=0x100 && CAN_RxMsg.data[0])
{
analogWrite(DIGITAL4,HIGH);
}else
{
analogWrite(DIGITAL4,LOW);
}
}

delay(400);
}




EL ERROR

Code: [Select]

/tmp/build2367687346645494278.tmp/core.a(CAN.cpp.o): In function `CANClass::read(CANClass::msgCAN*)':

/home/luis/Escritorio/Waspmote/IDE-API-OTA/waspmote-ide-v.01-linux/hardware/cores/wasp_v019/CAN.cpp:791: multiple definition of `intFlag'

o:/tmp/build2367687346645494278.tmp/alarmacanbusWASP.cpp:85: first defined here
/tmp/build2367687346645494278.tmp/core.a(CAN.cpp.o): In function `CANClass::read(CANClass::msgCAN*)':

/home/luis/Escritorio/Waspmote/IDE-API-OTA/waspmote-ide-v.01-linux/hardware/cores/wasp_v019/CAN.cpp:791: multiple definition of `intConf'

o:/tmp/build2367687346645494278.tmp/alarmacanbusWASP.cpp:85: first defined here
/tmp/build2367687346645494278.tmp/core.a(CAN.cpp.o): In function `CANClass::read(CANClass::msgCAN*)':

/home/luis/Escritorio/Waspmote/IDE-API-OTA/waspmote-ide-v.01-linux/hardware/cores/wasp_v019/CAN.cpp:791: multiple definition of `intCounter'

o:/tmp/build2367687346645494278.tmp/alarmacanbusWASP.cpp:85: first defined here
/tmp/build2367687346645494278.tmp/core.a(CAN.cpp.o): In function `CANClass::read(CANClass::msgCAN*)':

/home/luis/Escritorio/Waspmote/IDE-API-OTA/waspmote-ide-v.01-linux/hardware/cores/wasp_v019/CAN.cpp:791: multiple definition of `intArray'

o:/tmp/build2367687346645494278.tmp/alarmacanbusWASP.cpp:85: first defined here



He probado a comentar en la libreria el include de WProgram,  y el API me deja compilar sin problemas el codigo (aceptando la librerias) pero claro pierde el programa su funcionalidad.

No se si me explico bien....xDDD Voy a probar a compilar la libreria con  G++ para intentar depurar los errores, aunque como no soy demasiado diestro en programación ire algo lento, pero a cualquier avance os informo!

Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Igor R

#11
Aug 29, 2011, 11:30 am Last Edit: Aug 29, 2011, 11:33 am by Igor R Reason: 1
Lo unico que uso de Arduino, que a lo mejor te da problemas, es que veo que el Serial no esta implementado en Waspmote (usas funcion USB), y es lo unico que uso en mi libreria para cuando tienes el modo depuracion a ON, que te puede estar dando problemas.
Es decir, todo lo que esta entre #if (DEBUGMODE==1) y #endif. Puedes borrarlo, es solo para depuracion.    
Mejor escribeme por mail, que andar por aqui en el foro, ya que es dificil que te ayuden, ya que la gente no sabe de que libreria estas hablando, cual es el codigo, como va el core de Waspmote si no se dispone de el, .....




Nota.- ni acentos ni enyes (ordenador ingles)

LuisAntonio

Bueno que tampoco quiero daros problemas, simplemente era por saber si habia alguna forma sencilla, voy a intentar hacer yo una libreria sencilla para configurar el SPI especifica para Wasp asi voy entendiendo como van las librerias, y a ver si consigo entender que puede fallar, si consigo algo xDDD
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Igor R

#13
Aug 29, 2011, 11:38 am Last Edit: Aug 29, 2011, 11:42 am by Igor R Reason: 1
Pues entonces vete paso a paso... intenta hacerte una libreria sencilla para el Waspmote, y cuando entiendas como se hace y los requerimientos del core, seguro que no tienes ningun problema..... como dicen por ahi.... " las prisas matan! "
Pero mi libreria es en C, y como te digo solamente los Serial que hay para depurar, te pueden dar problemas. Pero puedes eliminarlos.
Por otro lado, mirarse el "core"  es un buen ejercicio didactico, ya que aprendes como gente con experiencia ha creado las funciones.

;)

LuisAntonio

Si la verdad es que lo he pensado! y voy a intentar hacer mi propia librería, así seguro que lo llego a comprender bien, aunque seguramente me "duela" bastante mas xDD pero bueno el que algo quiere algo le cuesta, también me he bajado algunas librerías del SPI para ver su funcionamiento básico, y las voy a analizar para intentar comprenderlas!  De todas formas gracias por la ayuda,aparte de eso pongo tema solucionado, pero una duda, he visto referencias en tu pagina a kreative chaos, ¿me serviría con mis pocos conocimientos intentar leer y entender el tutorial de su libreria, o es demasiado complejo?  Gracias a todos por la ayuda.
Algunas personas sueñan con grandes logros, mientras que otros no duermen cumpliéndolos.

http://diagnostican.blogspot.com

Go Up