¿Por qué no compila?

Radiofrecuencia y servomotores mezclados.He trabajado con los dos por separado y funciona perfecto, pero cuando los uno, no funciona.
La función es mediante radiofrecuencia, mover servos a determinadas posiciones.Por problemas de compatibilidad entre librerias.¿Qué hago?
GRACIAS!

#include <VirtualWire.h>

#include <Servo.h> 

Servo myservo;  

int pos = 0;    



int pinRx = 4;

void setup(){
   myservo.attach(9);  


  Serial.begin(9600);

  vw_set_rx_pin(pinRx);
  vw_setup(2000);
  vw_rx_start();
//setup


}

void loop(){

  uint8_t mensaje[VW_MAX_MESSAGE_LEN];
  uint8_t longitud = VW_MAX_MESSAGE_LEN;

  if (vw_get_message( mensaje , &longitud ) ){    
    Serial.print("Recibido -> ");
    Serial.println( mensaje[0] ); 
    
    if( mensaje[0] == 'A' ){
      myservo.write(pos);             
    delay(15);  
  
       
              
    }else if( mensaje[0] == 'R' ){
                
    }else if( mensaje[0] == 'V' ){
       
}else if( mensaje[0] == 'N' ){
         
  
  }
}
}

Hola,
si no compila, te dará algún error. ¿Podrías indicarnos?

VirtualWire\VirtualWire.cpp.o: In function __vector_11': C:\Users\Santi\Desktop\arduino-1.0\libraries\VirtualWire/VirtualWire.cpp:416: multiple definition of __vector_11'
Servo\Servo.cpp.o:C:\Users\Santi\Desktop\arduino-1.0\libraries\Servo/Servo.cpp:103: first defined here

Gracias!

Hola,
en Google hay bastantes menciones a ese conflicto de esas dos librerías. Busca en Google trozos del mensaje de error como multiple definition of __vector_11
Parece que el problema está en que las dos usan el mismo timer.
En algún sitio he visto que presentan como alternativa usar "SoftwareServo.zip"
http://www.arduino.cc/playground/ComponentLib/Servo
Mi conocimiento de los timer es escaso, seguro que hay gente que conoce más profundamente el problema.

Si he estado mirando. La solución esta en usar la librería timerServo2. Pero no encuentro su sintaxis ni información acerca de ésta en Arduino.

¿Alguien sabe ésto?

Un saludo y gracias por su atención!

Hola,
Mira en la página http://letsmakerobots.com/node/12803
Ahí tienes un link para bajar la librería ServoTimer2

Instalada ya la tenía, pero gracias de todas formas.
Es que en ningún sitio pone nada acerca de la libreria.

Hola,

ahí va un ejemplo sacado de aquí http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?action=print;num=1285514626

// this sketch cycles three servos at different rates

#include <ServoTimer2.h>  // the servo library

// define the pins for the servos
#define rollPin  2
#define pitchPin 3
#define yawPin   4

ServoTimer2 servoRoll;    // declare variables for up to eight servos
ServoTimer2 servoPitch;
ServoTimer2 servoYaw;

void setup() {
 servoRoll.attach(rollPin);     // attach a pin to the servos and they will start pulsing
 servoPitch.attach(pitchPin);
 servoYaw.attach(yawPin);
}


// this function just increments a value until it reaches a maximum
int incPulse(int val, int inc){
  if( val + inc  > 2000 )
   return 1000 ;
  else
    return val + inc;
}

void loop()
{
int val;

  val = incPulse( servoRoll.read(), 1);
  servoRoll.write(val);

  val =  incPulse( servoPitch.read(), 2);
  servoPitch.write(val);

  val = incPulse(servoYaw.read(), 4);
  servoYaw.write(val);

  delay(10);
}

Muchas gracias! Lo pruebo y te digo algo. Un saludo

Teniendo en cuenta que es una librería del 2009, es imposible que funcione sin retoques en la versión 1.0 del IDE

Ya he conseguido que vaya. Desde un teclado inalámbrico pulso el 1 y se mueve a un lado, y debería de ser que pulse el 2 y para el otro lado. Pero se queda bloqueado. Es cosa de que hay que meterle un refresco al servo o algo, no se si me explico.
Gracias a todos!

#include <ServoTimer2.h>
#include <VirtualWire.h>
int rollPin=9;
ServoTimer2 servoRoll;




int pinRx = 4;

void setup(){
   pinMode(13,OUTPUT);
servoRoll.attach(rollPin);      

  Serial.begin(9600);

  vw_set_rx_pin(pinRx);
  vw_setup(2000);
  vw_rx_start();
//setup


}


void loop(){
 
  
    
  uint8_t mensaje[VW_MAX_MESSAGE_LEN];
  uint8_t longitud = VW_MAX_MESSAGE_LEN;

  if (vw_get_message( mensaje , &longitud ) ){    
    Serial.print("Recibido -> ");
    Serial.println( mensaje[0] ); 
    
    if( mensaje[0] == 'A' ){
       servoRoll.write(100);        // Lo mueve hasta aquí, pero hay que meterle algo para que...
   
              
    }else if( mensaje[0] == 'B' ){
     servoRoll.write(50);            //...aquí te deje moverlo de nuevo
       

                
    }else if( mensaje[0] == 'V' ){
      
       
}else if( mensaje[0] == 'G' ){
    
  }
}
}

Hace como un ruido, como si se estuviera forzando. Ayudadme cuanto podais necesito tener ésto para esta semana.
Gracias un saludo

He estado realizando pruebas un buen rato. He retirado del código las acciones de mover el servo y para mi sorpresa, descubro que sigue con el 'forceo' que anteriormente, creia que era del código.

Ya lo he conseguido. Pero sigo con el problema de que el servo se queda 'pillado'. El motor interno se mueve quedándose bloqueado.

Hola yo he probado a modificar los Timer de la librería Virtual Wire, concretamente el Timer1 lo he renombrado como TimerX en todas la líneas del código (creo recordar que eran 2) de la librería VirtualWire.cpp y los errores de compilación desaparecen al trabajar con las dos librerías VirtualWire y Servo.
He intentado trabajar también con las librerías SoftwareServo y ServoTimer2 pero mi sorpresa es que arduino parece no reconocerlas, pues al importarlas no quedan marcadas de color como ocurre con otras librerías y las instrucciones del código, además de dar varios errores al compilar.