LusoRobótica - Robótica em Português

Software => Software e Programação => Tópico iniciado por: DanBar em 31 de Março de 2009, 13:48

Título: Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: DanBar em 31 de Março de 2009, 13:48
Boas.

Estou a desenvolver um robot e necessito de controla-lo com Receptor de IR e utilizar Servos.

As Melhores librarias encontrei foram o <NECIRrcv.h> para o receptor de IR e <ServoTimer2.h> para controlar os servos.

Mas elas são incompativeis quando juntas. Dá um erro ao compilar o projecto.

Código: [Seleccione]

#include <WProgram.h>
#include <Wire.h> // Gravar, Ler Memória EEPROM
#include <EEPROM.h> // Gravar, Ler Memória EEPROM
#include <avr/io.h> // Para o reset via software
#include <avr/wdt.h> // Para o reset via software
#define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {} // Para o reset via software
#include <RFRecv.h> // Para Radio Wireless
#include <NECIRrcv.h>  // Para o Receptor de IR
#include <ServoTimer2.h> // Para os Servos

#define RadioRcvPin 2      // Radio Wireless Receiver
#define LcdSCLKPin 3       // LCD NOKIA
#define LcdSDINPin 4       // LCD NOKIA
#define LcdDCPin 5         // LCD NOKIA
#define LcdRESETPin 6      // LCD NOKIA
#define LcdSCEPin 7        // LCD NOKIA
#define BuzzerPin 8        // Buzzer
#define SrvShieldPin 9     // Servo Shield
#define SrvLeftPin 10      // Servo Left
#define SrvRightPin 11     // Servo Right
#define LightsLedPin 12    // Front Light Led
#define BlinkLedLeftPin 13     // Blink Left Led
#define BlinkLedRightPin 14    // Blink Right Led
#define IrLedPin 15        // IR Led Sender (Analog 1)
#define IrSensorPin 16     // IR sensor Receiver (Analog 2) é o mesmo receptor para o receptor de commandos ;)
#define LdrPin 3           // LDR Sensor (Light Sensor) (Analog 3)
#define TempPin 4          // LM35 Temperature Sensor (Analog 4)
#define VoltsPin 5         // Voltage Reference Sensor (Analog 5)

void setup()
{

}

void loop()
{

}

Basta isso para dar o seguinte erro no IDE Versão 15

Citar
hardware\libraries\ServoTimer2\ServoTimer2.o: In function `__vector_9':


D:\got\Arduino\Arduino-0012/hardware\libraries\ServoTimer2/ServoTimer2.cpp:24: multiple definition of `__vector_9'


hardware\libraries\NECIRrcv\NECIRrcv.o:C:\arduino-IDE/hardware\libraries\NECIRrcv/NECIRrcv.cpp:81: first defined here


Couldn't determine program size: C:\arduino-IDE\hardware/tools/avr/bin/avr-size: 'C:\Arduino\Projectos\BallDuino\BallDuino_1_0\applet\BallDuino_1_0.hex': No such file


avrdude: can't open input file C:\Arduino\Projectos\BallDuino\BallDuino_1_0\applet\BallDuino_1_0.hex: No such file or directory
avrdude: write to file 'C:\Arduino\Projectos\BallDuino\BallDuino_1_0\applet\BallDuino_1_0.hex' failed

Alguém tem alguma ideia. Estou farto de procurar outro código para substituir a Libraria do Receptor de IR, mas não encontrei nada de jeito até agora...Estou frustado. :-[
Título: Re:Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: amando96 em 31 de Março de 2009, 15:03
não podes só usar o
if()

} else{

tipo quando o receptor está LOW faz o que queres? ou HIGH n sei se são todos iguais... boa sorte com isso!
Título: Re:Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: DanBar em 31 de Março de 2009, 15:10
Não o mesmo receptor de IR serve para detectar objecto e receber comandos dum comando IR "NEC".

Assim comando o robot e ele dectecta objectos ao mesmo tempo. Isso funciona bem. O problema é mesmo o código incompativel com o ServoTimer2  ::)

Aqui fica o meu código
Título: Re:Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: ricardo-reis em 31 de Março de 2009, 15:30
o que eu te sugiro é que abras as duas bibliotecas (habituem-se a chamar-lhes o nome correcto) e procures por esse tal vector_9.. e mudar-lhe o nome em todo o documento.
Título: Re:Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: DanBar em 31 de Março de 2009, 15:36
É mais complexo que isso o vector_9 significa o nome de uma libraria biblioteca do WProgram.h (wire)

// IR receiver state machine (TIMER2 interrupt)
ISR(TIMER2_OVF_vect)...

Essa função que necessitam para o timer2  ::)
Título: Re:Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: metRo_ em 31 de Março de 2009, 19:14
Encontras-te alguma biblioteca que leia comandos da norma RC7?
Título: Re:Ajuda com imcompatibilidade de librarias dos Arduino
Enviado por: Njay em 31 de Março de 2009, 21:48
Pois, o teu problema é mesmo que ambas as bibliotecas estão a usar a mesma interrupção, e provavelmente estão a configurar o hardware de maneira diferente, pelo que será dificil ter as 2 a funcionar sem efectuar algumas alterações de código em pelo menos uma delas.