Servo\Servo.cpp.o: In function `__vector_11':
C:\Users\Nadiel\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\Servo/Servo.cpp:103: multiple definition of `__vector_11'
VirtualWire\VirtualWire.cpp.o:C:\Users\Nadiel\Desktop\arduino-1.0.3-windows\arduino-1.0.3\libraries\VirtualWire/VirtualWire.cpp:568: first defined here
Sempre que utilizo as libraries VirtualWire e Servo mostra o erro acima, já tentei de tudo para resolver mas não consigo....
Alguém sabe resolver este conflito?
Tags:
As respostas para este tópico estão encerradas.
então, você vai ter q abrir ou o Servo.cpp e mudar o __vector_11 para "__Servo_vector_11"
ambas usam o mesmo #define __vector_11 ou algo assim.
Mudar eu digo mudar o nome para todas as vezes que for usado o __vector_11 na lib inteira....
Obrigado, mas não tem como fazer desse jeito. Creio que o problema tenha haver com a parte abaixo quando modifico TIMER1_COMPA_vect para TIMER1_COMPA_vect1 não dá conflito porém não funciona o RF e o servo.
Este código foi retirado do Servo.cpp
#if defined(_useTimer1)
SIGNAL (TIMER1_COMPA_vect)
{
handle_interrupts(_timer1, &TCNT1, &OCR1A);
}
#endif
Fui em vários fóruns em ingles e espanhol em tudo que é idioma... Mas ninguem apresentou uma solução...
Esse problema parece não ter solução....
Ambas as libs usam o timer1. Você vai ter que substituir uma das bibliotecas por uma que use um timer diferente. Existe bibliotecas tanto para o servo quanto para RF que usam um timer diferente.
Obrigado pela resposta. Você pode me apresentar alguma outra blibioteca? Meu desespero é tanto que tentei fazer um código manual para movimentar os Servos... Mas não estou tendo muito sucesso pois os servos perdem um pouco de sua precisão e parecem consumir mais corrente de que o normal ... a biblioteca Servo.h é a mais perfeita ao meu ver. Dê uma olhada em meu código:
int SERVO_PIN = 9;
int volta = 0;
int control = 0;
void setup()
{
pinMode(SERVO_PIN, OUTPUT);
}
int lenMicroSecondsOfPeriod = 20 * 1000;
int lenMicroSecondsOfPulse = 2.0 * 1000;
void loop()
{
volta = volta +1;
digitalWrite(SERVO_PIN, HIGH);
delayMicroseconds(lenMicroSecondsOfPulse);
digitalWrite(SERVO_PIN, LOW);
delayMicroseconds(lenMicroSecondsOfPeriod - lenMicroSecondsOfPulse);
if(volta >= 250 and control == 0){
SERVO_PIN = 9;
lenMicroSecondsOfPulse = 2.0 * 1000;
control = 1;
}
if(volta == 250 ){
SERVO_PIN = 9;
}
if(volta == 499 ){
SERVO_PIN = 8;
}
if(volta == 500 and control == 1){
lenMicroSecondsOfPulse = 1.0 * 1000;
volta = 0;
control = 0;
SERVO_PIN = 9;
}
}
Você pose usar a biblioteca SoftwareServo para controlar os servos. Para a VirtualWire, dá pra usar a RCSwitch se a velocidade de comunicação não for alta. Se possível, mantenha a biblioteca Servo original.
Curiosidade: Aqui nos meus testes eu consegui um alcance maior com a RCSwitch do que com a VirtualWire e menos comandos foram perdidos.
Muito obrigado, eu não conhecia a biblioteca RCSwitch. Vou tentar aqui, mas creio que já deve ter sido solucionado o problema. Grato!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por