Probleme

Bonjour, j’essaye de faire tourner 2 servos en décallé (90° vers la droite pour le servo1, 90° vers la droite pour le servo2, 90° vers la gauche pour le servo1, 90° vers la gauche pour le servo2)

Quand je lance le code, le servo1 (port 9) fait 90° normalement puis il bouge à peine (genre 1°/sec dans l autre sens), puis c est au tour du servo2 de faire la même chose…

Voici le code :

#include <Servo.h>
Servo Servo1;
Servo Servo2;
int pos = 0;

void setup()
{
  Servo1.attach(9);
  Servo2.attach(10);
  Serial.begin(9600);
}

void loop()
{
    
    for (pos = 0; pos <= 90; pos += 1)     //Servo 1 Allé
      {
        Servo1.write(pos);
        delay(1000);
      }

    
    for (pos = 0; pos <= 90; pos += 1)    //Servo 2 Allé
      { 
        Servo2.write(pos);
        delay(1000);
      }

    
    for (pos = 90; pos >= 0; pos -= 1)    //Servo 1 Retour
      {
        Servo1.write(pos);
        delay(1000);
      }

    
    for (pos = 90; pos >= 0; pos -= 1)    //Servo 2 Retour
      {
        Servo2.write(pos);
        delay(1000);
      }
    
}

TirfoP:
puis il bouge à peine (genre 1°/sec dans l autre sens), puis c est au tour du servo2 de faire la même chose...

En même temps c'est ce qui est programmé dans tes boucles:
bouger de 1°
attendre 1s
bouger de 1°
attendre 1s
....
jusqu'à 90°

puis tu passes au servo suivant

Si tu veux envoyer un servo à 90° le plus simple c'est d'écrire

Servo.write(90);

Merci pour ta réponse :slight_smile:

Il ne me semble pas lu avoir demandé de bouger au rythme de 1°/sec ...

et si

for (pos = 0; pos <= 90; pos += 1) //Servo 1 Allé
{
Servo1.write(pos);
delay(1000);
}

Il est possible d'essayer de réduire le délai à 10 ms à l'intérieur de la boucle for (delay(10)), et d'en ajouter un à l'extérieur de 1 seconde delay(1000). Ainsi ca prendra environ 900ms pour faire les 90 degrés demandé et il s'écoulera une seconde entre les actions des 2 servos.