Go Down

Topic: programmer une pause (Read 1 time) previous topic - next topic

amigaêl

Bonjour
Je rencontre encore un petit problème
je ne sais pas comment faire une pause entre deux mouvements de servo
je m'explique, ici j'ai 2 mouvements de servo
Code: [Select]
 
       }
       for (position2 = 180; position2 > 75; position2 -=1)
       {
         myservo2.write(position2);
         delay(20);
         }
       for(position1 = 55; position1 < 90; position1 +=1)
       {
         myservo1.write(position1);
       
       delay(20);
       }

comment faire un pause de "delay(200);" entre
Code: [Select]
}
       for (position2 = 180; position2 > 75; position2 -=1)
       {
         myservo2.write(position2);
         delay(20);


et
Code: [Select]
for(position1 = 55; position1 < 90; position1 +=1)
       {
         myservo1.write(position1);
       
       delay(20);

merci pour votre aide

infobarquee

bonjour,
je dirais que ta réponse est dans ta question ;)
tu as séparé tes deux codes, ton delay(200); tu le mettrais ou?

amigaêl

j'ai essayé de fare ceci
Code: [Select]
}
       for (position2 = 180; position2 > 75; position2 -=1)
       {
         myservo2.write(position2);
         delay(20);
         }
       for(position1 = 55; position1 < 90; position1 +=1)
       {
         myservo1.write(position1);
       
       delay(20);
   
       delay(200);

     }
       for (position2 = 180; position2 > 75; position2 -=1)
       {
         myservo2.write(position2);
         delay(20);



   }


mais ça ne fonctionne pas
si je remplace
delay(20);
par
delay(200);
mon servo met trop de temps à passer de la position
for(position1 = 55; position1 < 90; position1 +=1)

infobarquee

c'est sur que si tu mets ton delay dans la boucle for ca va pas le faire  :smiley-mr-green:
Quote

for.......{
delay(20);
}

delay(200);

for....{
delay(20);
}

amigaêl

ça ne marche pas , il n'y a pas de pause, tu n'as pas une autre solution ?
merci de m'aider c'est très gentil de me donner un peu de ton temps !

infobarquee

delay(200) ca se voit pas beaucoup, mets 2000 pour tester.
mets ton code en entier, ca sera plus simple

amigaêl

avec 2000 ça ne marche pas non plus
Code: [Select]



else if (buttonState1 == LOW && buttonState2 == LOW && buttonState3 == HIGH)
{
 
   for(position1 = 90; position1 < 130; position1 +=1)

    {
       myservo1.write(position1);
      delay(30);
    }
   for (position1 = 130; position1 > 0; position1 -=1)
    {
       myservo1.write(position1);
      delay(100);
    }
   for(position2 = 75; position2 < 180; position2 +=1)
{
myservo2.write(position2);
delay(10);
}
delay(2000);
for(position1 = 1; position1 < 90; position1 +=1)
{
   myservo1.write(position1);
   delay(100);
   
}

   
for (position2 = 180; position2 > 75; position2 -=1)
{
   myservo2.write(position2);
   delay(50);



}
}


}



infobarquee

tu es certain que ton else if se déclenche?
Quote
else if (buttonState1 == LOW && buttonState2 == LOW && buttonState3 == HIGH)

mets un Serial.println("debut operation 1");
etc...
dans chaque boucle for afin de bien voir si elles se lancent.
et un Serial.println("attente 2000");delay(2000);

ca permet de debugger ton code.

amigaêl

j'ai essayé avec delay(10000); et ça marche mais il ne reste quand même pas trop longtemps en arrêt, 10 secondes environ

amigaêl

j'ai pas bien compris ce que tu m'a dis, je débute, je comprend mieux avec des exemples.
merci pour tes réponses c'est gentil !

infobarquee


j'ai essayé avec delay(10000); et ça marche mais il ne reste quand même pas trop longtemps en arrêt, 10 secondes environ

donc tu n'as pas la notion des 2 secondes ;)
si tu veux qu'il s'arrete pendant plus de temps, augmente ton delay()

amigaêl

super pour le dépannage merci beaucoup !

j'ai encore une question, les servo fonctionnent l'un après l'autre si je veux qu'ils soit en mouvement en même temps il faut les programmer comment ?
tu peux me mettre un exemple STP ?
excuse moi de t'embêter encore

infobarquee


super pour le dépannage merci beaucoup !

j'ai encore une question, les servo fonctionnent l'un après l'autre si je veux qu'ils soit en mouvement en même temps il faut les programmer comment ?
tu peux me mettre un exemple STP ?
excuse moi de t'embêter encore

de rien ;)

je suis pas spécialiste des servos, mais si je me trompe pas, certains pourront le confirmer, le nono ne fait pas de multi tache, donc une tache après l'autre.
mais en faisant un test de la position du servo, je pense que l'on peut le faire.
a voir les codes sur les drivers.

amigaêl

donc le servo2 ne pourra pas bouger en même temps que le servo1, c'est soit l'un ou l'autre ?

B@tto

Je suis pas spécialiste des servo non mais comme la lib se sert d'un timer, elle ne doit pas être bloquante. Donc :

Code: [Select]

myservo1.write(position1)
myservo2.write(position2)


devrait faire tout tourner
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Go Up