Faire une pause

Bonjour a tous

Débutant dans le domaine Arduino, j'ai commencé un tout petit projet. Comme plusieurs débutant, j'ai utilisé un servomoteur avec le programme Sweep dans la bibliothèque.
Le moteur fait bel et bien 180 degrés d'un coté comme de l'autre. Je sais que c'est une loop et que le programme s'exécute sans fin. Je peut modifier le temps/vitesse du moteur pour chaque cycle en jouant avec (delay) mais ce que je n’arrive pas a faire, c'est de lui faire faire une pause; de le faire stopper "disons 30 secondes" a chaque fin de cycle avant qu'il n'en recommence un autre. J'espère être claire dans mes explications.

Merci a ceux ou celles qui veulent bien m'aider avec ce projet.

Piper1955:
Je peut modifier le temps/vitesse du moteur pour chaque cycle en jouant avec (delay)

Donc, tu connais delay(). Et delay(), ça sert à quoi selon toi?

Si je modifie Delay, le temps que prend le moteur a faire son 180 degré change et je peut le modifier sans problèmes, mais c'est lorsqu'il a fait son 180 degré qu'il repart en sens inverse tout de suite. C'est a cet instant que je voudrais qu'il prenne une pause quelques secondes avant de repartir.

A lire...
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Delay

Merci de ta réponse et ton lien al1fch

Si je saisie, je devrais insérer la fonction digitalWrite dans mon programme?

Piper1955:
Merci de ta réponse et ton lien al1fch

Si je saisie, je devrais insérer la fonction digitalWrite dans mon programme?

Non, regarde la dernière instruction avant le } ... ca ne te rappelle rien?

Piper1955:
Si je modifie Delay, le temps que prend le moteur a faire son 180 degré change et je peut le modifier sans problèmes, mais c'est lorsqu'il a fait son 180 degré qu'il repart en sens inverse tout de suite. C'est a cet instant que je voudrais qu'il prenne une pause quelques secondes avant de repartir.

Donc delay() permet d'introduire un retard dans l'exécution. Si tu mettais un delay AVANT que le moteur reparte dans l'autre sens......

Pas vraiment, Delay ne fait que changer la durée diu trajet entre le 0-180 degré et du 180 degré a zéro

Si tu as 5 minutes et un servomoteur, essaie ceci et tu va comprendre mon problème. En changeant la valeur du delay, tu ne change que le temps que le moteur fait entre 0 et 180 degré

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

void setup() {
  monservo.attach(9);
  monservo.write(pos);
}

void loop() {
  
  for (pos = 0; pos < 180; pos ++) {

    monservo.write(pos);
    delay(20);
  }

for (pos = 180; pos >= 0; pos --) {
     monservo.write(pos);
     delay(20);
  }    
  
}

Bonjour,

Tu ajoutes un delay(30000); après chaque boucle for.

Piper1955:
Si tu as 5 minutes et un servomoteur, essaie ceci et tu va comprendre mon problème.

Si tu as 1 minute, relis ce que j'ai écrit et comprends-le.

Excellent, tu as raison, ca fonctionne parfaitement. Je croyais que si j'intégrais plusieurs fonction (delay) que le circuit serais confus et donnerais des erreurs.

Merci encore :slight_smile: