collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ajuda com imcompatibilidade de librarias dos Arduino  (Lida 5893 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline DanBar

  • Mini Robot
  • *
  • Mensagens: 685
    • iCAR Lusorobotica Blog
Ajuda com imcompatibilidade de librarias dos Arduino
« 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. :-[
Antigo Nick do Forum: iCAR

Projectos iCAR
icar.lusorobotica.com

DB@G
http://www.facebook.com/daniel.barradas

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.631
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re:Ajuda com imcompatibilidade de librarias dos Arduino
« Responder #1 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!

Offline DanBar

  • Mini Robot
  • *
  • Mensagens: 685
    • iCAR Lusorobotica Blog
Re:Ajuda com imcompatibilidade de librarias dos Arduino
« Responder #2 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
Antigo Nick do Forum: iCAR

Projectos iCAR
icar.lusorobotica.com

DB@G
http://www.facebook.com/daniel.barradas

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re:Ajuda com imcompatibilidade de librarias dos Arduino
« Responder #3 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.

Offline DanBar

  • Mini Robot
  • *
  • Mensagens: 685
    • iCAR Lusorobotica Blog
Re:Ajuda com imcompatibilidade de librarias dos Arduino
« Responder #4 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  ::)
« Última modificação: 27 de Fevereiro de 2010, 13:45 por ricardo-reis »
Antigo Nick do Forum: iCAR

Projectos iCAR
icar.lusorobotica.com

DB@G
http://www.facebook.com/daniel.barradas

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:Ajuda com imcompatibilidade de librarias dos Arduino
« Responder #5 em: 31 de Março de 2009, 19:14 »
Encontras-te alguma biblioteca que leia comandos da norma RC7?

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re:Ajuda com imcompatibilidade de librarias dos Arduino
« Responder #6 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.