movimiento lento y simultaneo de dos servos a la vez

Buenos días.

En clase estamos intentando mover dos servos -en el exe x e y- a la vez a baja velocidad en sentido contrario.

Para mover uno, usamos el procedimiento:

void ejex()

{
  for(int angulo = 0; angulo < 180; angulo += 1) {     
	      servo1.write(angulo);               
	      delay(10);  }                      
	   }

y funciona perfectamente.

Lo mismo hacemos para moverlo en eje Y, o en el eje x en el sentido contrario

El problema nos surge cuando queremos que ambos servos hagan este movimiento lento a la vez. Estamos intentando algo así, pero no acertamos con la sintaxis

void simultaneo()     //PERDÓN POR LA BARBARIDAD, SABEMOS QUE NO FUNCIONA--

{
  for(int angulo1 = 0; angulo1 < 180; angulo1 += 1)
  for(int angulo2 = 90; angulo2 > 0; angulo2 -= 1) {     
	      servo1.write(angulo1);
              servo2.write(angulo2);
               
	      delay(10);  }                      
	   }

¿Es posible hacer esto? Muchas gracias de antemano

Inicialmente angulo1 es 0 y angulo2 es 180 (lo contrario) ,fijate que para cada vez que angulo1 se incrementa ,el valor de angulo2 en ese caso es la resta de angulo2 - angulo1 :

int angulo1,angulo2 = 180;
void setup(){
  Serial.begin(9600);
  for(angulo1 = 0;angulo1 < 180;angulo1 ++){
    Serial.print(angulo1);
    Serial.print(" ");
    Serial.println(angulo2 - angulo1);
    delay(400);
  }  
}
void loop(){
}

Muchas gracias Jose!

Vamos a ver si conseguimos traducir tu sugerencia a ángulos no opuestos (p.e a de 180 a 140 y b de 45 a 85) y te contamos .

Un saludo!!!

tecnoamoros:
Muchas gracias Jose!

Vamos a ver si conseguimos traducir tu sugerencia a ángulos no opuestos (p.e a de 180 a 140 y b de 45 a 85) y te contamos .

Un saludo!!!

Si la cantidad de movimiento es la misma ,siempre puedes aprovechar un solo bucle para incrementar una y decrementar la otra:

 int angulo2 = 180;
 void setup(){
   Serial.begin(9600);
   for(int angulo1 = 45;angulo1 <= 85;angulo1 ++){
    Serial.print(angulo1);
    Serial.print(" ");
    Serial.println(angulo2);
    angulo2 -- ;
    delay(400);
   }
 }  
  void loop(){}

Creo que con un solo for de x pasos podrías adaptar el recorrido para varios motores con map. Así de forma rápida:

for (int x=0; x<180; x++) {
    angulo1 = map (x, 0, 180, 45, 85);
    angulo2 = map (x, 0, 180, 180, 0);
}

Creo que se entiende, ¿no?

Muchas gracias, probamos las dos y os comentamos!