alguien me puede ayudar?

estoy haciendo una avioneta RC pero tengo problemas con el a manejo de los servos a rf (estoy usando potenciometros) he estado usando la librería rcswich ya que la librería virtualwrite tiene bastantes problemas para manejar los servos y no conozco muy bien como usar la librería servotimer2 por eso uso la librería <RCSwitch.h>
lo que pasa es que solo se mueve un servo y los demas no responden este es el código del emisor que estoy usando

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
int potpin = 0;
int comparador;
int comparador2;
int comparador3;
int potpin2 = 1;
int potpin3 = 2;
void setup() {
  Serial.begin(9600);
  mySwitch.enableTransmit(10);
}
int val;
int val2;
int val3;
void loop() {

  
  val = analogRead(potpin);
  val = map(val, 0, 1023, 0, 179);
  val = val;
  mySwitch.send(val, 26);
  Serial.println("valor1");
  Serial.println(val);
  
  
  
 
 
  val2 = analogRead(potpin2);
  val2 = map(val, 0, 1023, 0, 179);
  val2 = val2;
  mySwitch.send(val2, 25);
  Serial.println("valor2");
  Serial.println(val2);
 
 
  val3 = analogRead(potpin3);
  val3 = map(val, 0, 1023, 0, 179);
  val3 = val3;
  mySwitch.send(val3, 24);
  Serial.println("valor3");
  Serial.println(val3);

}

y este es del receptor
#include <Servo.h>
#include <RCSwitch.h>
int comparador=0;
int comparador2=0;
int comparador1=0;
RCSwitch myRF = RCSwitch();
Servo motorbrushless;
Servo servoaleron;
Servo servotimon;
int datorecibido,valor,valor2,valor3; // definimos las variables

void setup()
{
Serial.begin(9600);
myRF.enableReceive(0); /* Habilitamos el receptor en la interrupción 0 => Pin 2 Digital(Para Arduino UNO) */
motorbrushless.attach(4);
servoaleron.attach(8);
servotimon.attach(9);
}

void loop()
{
myRF.resetAvailable();
comparador=0;
comparador2=0;
comparador1=0;

if (myRF.available())
{
datorecibido = myRF.getReceivedBitlength(); // mediante esta función leemos el tamaño del paquete que estamos recibiendo y lo almacenamos en la variable datob, de esta forma hacemos una criba de los paquetes recibidos en función de su tamaño 10 o 12 Bits.
do{
if(datorecibido==26)
{
valor3=myRF.getReceivedValue(); // almacenamos en la variable valor1 el dato recibido
motorbrushless.write(valor3);

delay(15);
}
}while(comparador!=valor3);
// para terminar hacemos un reset
delay(100);
comparador=valor3;

do{
if(datorecibido==25)
{
valor2=myRF.getReceivedValue(); // almacenamos en la variable valor1 el dato recibido
servoaleron.write(valor2);
delay(15);
}
}while(comparador1!=valor2);
// para terminar hacemos un reset
delay(100);
comparador1=valor2;

do{
if(datorecibido==24)
{
valor=myRF.getReceivedValue(); // almacenamos en la variable valor1 el dato recibido
servotimon.write(valor);

delay(15);
}
}while(comparador2!=valor);

delay(100);
comparador2=valor;

}

}

lo que pasa es que solo con este programa cuando uso el primer potenciometro al maximolos otros 2 marcan en 35 pero si muevo otro potenciometro no se mueve el dato solo el primer potenciometro marca altas y bajas en sus, datos los demás están muertos (ya cheque la coneccion y si me funcionan los proteciometros con otros programas pero no con este) posdata estoy usando dos arduino unor3

Saludos Ante todo lee las normas del foro. El título debe ser explícito y no "alguien me puede ayudar?". Usa los tags para colocar los códigos como hiciste con el primero.

Ahora a vuelo de pajaro, creo que tu problema esta en lo while y el uso de delay. Este tipo de aplicacion debe atender muchas varables en un lapso muy pequeño asi que debes evitar los retardos

Hola. no lo tomes a mal, pero antes de ver que ayuda darte te voy a pedir algunas cosas para manejarnos ordenadamente:

1) Cambia tu título a algo indicativo de lo que necesitas pero "alguien me puede ayudar?" no dice nada.

2) Segundo lee las normas del foro.

3) Tercero intenta usar los mismos tags [ code ] que usaste con uno de los códigos con el segundo.

Ahora respondo y te haré preguntas:

Deberías hacer un diagrama de tus potenciometros, no como crees que los tienes cableados sino como ESTAN cableados, porque para que un potenciómetro influya en los demás es porque no estan bien conectados.

Cada potenciómetro debe estar entre 5 y 0 o GND. El cursor al pin Analógico correspondiente.

lo que pasa es que solo con este programa cuando uso el primer potenciometro al maximolos otros 2 marcan en 35 pero si muevo otro potenciometro no se mueve el dato solo el primer potenciometro marca altas y bajas en sus, datos los demás están muertos (ya cheque la coneccion y si me funcionan los proteciometros con otros programas pero no con este) posdata estoy usando dos arduino unor3

Dices haber chequeado las conexiones, pero no chequeaste los potenciómetros. Mira a ver si el cursor no se desconecta en alguno de ellos.

Si trabajas con un avion RC seguramente lo vas a tomar como un insulto pero ten en cuenta que no se debe dejar de lado nada.

Otro tema:

    if(datorecibido==24)  
   {
    valor=myRF.getReceivedValue();  // almacenamos en la variable valor1 el dato recibido
    servotimon.write(valor);
   
    delay(15);
   }
   }while(comparador2!=valor);

Esta parte del código no me parece muy eficiente y te explico porqué. empiezas con datorecibido = 26 luego 25 y por ultimo 24. Ahora resulta que el do while se sigue ejecutando si no se recibe el paquete que se esta consultando lo que genera perdida de paquetes tal vez. intenta cambiar la ubicación del if para que SI la longitud del paquete es de 24 a 26 entonces haga los do while mas eficientemente.

se entiende?