[résolu] Programme pour servo

Bonsoir
je peux grace à vos bons conseils faire fonctionner 2 servos en même temps, mon programme continu à avancer, je rencontre un nouveau problème, j’aurai besoin de faire fonctionner 4 servos en même temps et là je bloc.
Pourriez vous SVP m’expliquer comment faire pour que mes servos 4 et 5 puissent fonctionner en même temps que les servos 2 et 3 ?
Je vous remercie d’avance

 for (pos2 = 45; pos2 <= 90; pos2 += 1)
  {
     pos3=map(pos2,45,90,0,90);
    servo2.write(pos2);
    servo3.write(pos3);
    delay(50);

Quel est le problème? Ton code ne parle pas des servo 4 et 5.
À mon avis, tu va aussi avoir besoin d'une alim externe. L'arduino ne pourra peut-être pas faire fonctionner tout le monde en même temps.

bonjour
j’aimerai faire fonctionner les servos 2,3,4,5 en même temps
je n’ai pas réussi à le faire, mes servos 4,5 fonctionnent ensemble ensuite c’est 2,3 comment faire pour que 2,3,4,5 marchent en même temps ?
merci pour votre aide

for (pos4 = 135; pos4 < 180; pos4 +=1)  
{
  pos5=map(pos4,135,180,180,135);
  servo4.write(pos4);
  servo5.write(pos5);
  delay(20);
}
for (pos2 = 45; pos2 <= 90; pos2 += 1)
  {
     pos3=map(pos2,45,90,0,90);
    servo2.write(pos2);
    servo3.write(pos3);
    delay(50);
}

Bonjour,
il faut mettre tous les servos dans la même boucle.

for (pos2 = 45; pos2 <= 90; pos2 += 1)         //servo2 sera le maître en quelque sorte
  {
     pos3=map(pos2,45,90,0,90);           //pour les 3 autres liés au déplacement de servo2
     pos4=map(pos2,45,90,135,180);
     pos5=map(pos2,45,90,180,135);

     servo2.write(pos2);
     servo3.write(pos3);
     servo4.write(pos4);
     servo5.write(pos5);

    delay(50);
}

Simple, mais avec une réserve, les durées des mouvements sont identiques. Ce qui n’est pas le cas dans ton code: 45 cycles de 20ms et 45 cycles de 50ms (environ!)
Si cette différence est importante, c’est possible de faire, en insérant une condition dans la boucle longue pour y insérer la boucle courte.
Dans ce cas, il faut savoir où placer le mouvement des servos 4 et 5, au début, à la fin de la boucle longue, au milieu? Tout (presque!) est possible…

Bonjour Papybricol
Merci beaucoup pour votre réponse
Les durées sont très importantes vous avez très bien expliqué mais je n'ai pas compris c'est possible d'avoir les différents exemples ?
je suis désolé de vous embêter comme ça mais je débute en programmation et tout est nouveau pour moi!
merci encore c'est gentil

Bonjour,
J’ai pris comme exemple, les servos 2 et 3 démarrent seuls, puis 350ms (7 cycles de 50ms) après, les servos 4 et 5 démarrent et doivent faire le mouvement en 45 fois 20ms soit 18 fois 50ms. Ces derniers auront donc besoin de 18 cycles pour leur rotation.
(les mouvements des servos correspondent à tes programmes, j’ai seulement décidé du décalage (350ms) entre les 2 groupes)
pos4=map(pos2,51,68,135,180)
51=position du servo2 quand servo4 démarre
68=position du servo2 quand servo4 finit 68-50=18 cycles
135= position (angle) de départ pour servo4
180=position (angle) d’arrivée pour servo4

J’ai négligé le temps des calculs map, servow.write, for… pour simplifier.

for (pos2 = 45; pos2 <= 90; pos2 += 1)         
  {
     pos3=map(pos2,45,90,0,90);           
     servo2.write(pos2);
     servo3.write(pos3);
     
     if (pos2>50  &&  pos2<69)          // début mouvement de servo4 et 5, lorsque servo2 fait son 7° cycle (pos2=51)
     {
         pos4=map(pos2,51,68,135,180);     // duree totale voulue pour servo 4 et 5 ---> 45 fois 20ms
         pos5=map(pos2,51,68,180,135);     // egale à  18 fois 50ms (car delay de la boucle imposé pour servo2 et 3)
         servo4.write(pos4);               //
         servo5.write(pos5);
     }
     delay(50);
}

A toi de choisir le départ des plus rapides qui aussi devront finir (au plus tard) avec les plus lents. Sinon il faudra une structure différente.

Bonjour Papybricol
Merci beaucoup c'est vraiment très gentil pour votre réponse.
Hier j'ai fais des essais toute la soirée et je n'avais pas réussi, jamais je n'aurai pensai faire comme ça
je vais vite essayer!
MERCI ENCORE !!!!