Aller au contenu


Photo
- - - - -

Gestion du temps avec Arduino

Arduino millis

  • Veuillez vous connecter pour répondre
9 réponses à ce sujet

#1 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 606 messages
  • Gender:Male
  • Interests:Glenn

Posté 26 février 2018 - 07:08

Plop, nouveau post pour nouvelle question ^^

 

Bon j'ai suivi les conseils de Mike sur la gestion du temps avec millis(), ça fonctionne, mais, lorsque je veux mettre des pauses un peu partout dans le programme, ben, là c'est la cata (hhhiiiiiiiiiii).

 

Genre j'essaye le truc comme un noob en remplaçant mes delay(2000), pour l'instant c'est pour tester, car plus tard il faudra que je gère le temps d'après de nombreux calculs ^^ , mais je n'y suis pas encore.

 

J'ai fais une fonction que j'appel dans le loop.

void testServo (){
 
  unsigned int waitingTimeMaestro = 2000;  // 2 secondes
  unsigned long refTime = millis();

  maestro.setSpeed(7, 0);
  maestro.setAcceleration(7, 0);
  maestro.setTarget(7, 3500);
 
  while((millis()-refTime)<waitingTimeMaestro){
    Serial.println("Gestion de temps 2000 ms : 01 ");
  }
  //delay(2000);

  maestro.setSpeed(7, 0);
  maestro.setAcceleration(7,0);
  maestro.setTarget(7, 8000);
 
  while((millis()-refTime)<waitingTimeMaestro){
    Serial.println("Gestion de temps 2000 ms : 02 ");
  }
  //delay(2000);
}

Avec les delay ça fonctionne, mais comme ça, non, j'ai testé de plusieurs façons, mais sans grand succès.

 

Pouvez vous me dire ou je me plante.

 

Ps : je suis tombé sur certains liens qui pourraient vous intéressez, le truc c'est que je n'ai pas réussi à faire ce que je veux.

 

https://www.carnetdu...s-avec-arduino/

https://www.carnetdu...net/snippets/8/

https://www.carnetdu...-carte-arduino/

 

Merci ^^

 

 


signature_01.png -->

 

Mon Tipeee
 


#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 26 février 2018 - 07:43

tu prends le même refTime pour les deux =) réinitialise le à chaque fois avec millis avant de rentrer dans une nouvelle phase d'attente =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#3 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 391 messages
  • Gender:Male
  • Location:Paris

Posté 26 février 2018 - 07:50

Je comprends pas ce qu'il se passe dans ce sujet.
Vous essayez de refaire le delay avec un while ?

Podcast Made By Humans

Je cherche des volontaires de tous niveaux pour nos petites conversations entre hobbyistes.

Accès aux salles secrètes

 


#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 26 février 2018 - 08:12

en fait delay est une fonction blocante, tu ne peux rien faire pendant cette attente. 

Alors que tu peux exécuter pas mal de chose " while " ...

Il faut éviter les codes bloquants en micro controleur ... Surtout quand tu veux faire des interruptions etc...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#5 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 391 messages
  • Gender:Male
  • Location:Paris

Posté 26 février 2018 - 08:27

Je sais ^^ mais ce n'est pas ce qu'on voit ici. Il n'y a rien d'autre qu'un print dans le while :)

Podcast Made By Humans

Je cherche des volontaires de tous niveaux pour nos petites conversations entre hobbyistes.

Accès aux salles secrètes

 


#6 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 606 messages
  • Gender:Male
  • Interests:Glenn

Posté 26 février 2018 - 09:19

Hop hop hop, on se calme hein lol, suis un noob, j'apprend :D

Sinon pour le delay j'avais bien compris que c'était une fonction bloquante ^^

 

Là j'essaye de bien comprendre (ok c'est pas le cas pour l'instant) et essayer de maîtriser cette chose, car par la suite ça ne restera pas comme ça, je me posais la question de mettre plusieurs pause à la suite. 

 

Et j'ai essayé plusieurs choses, dont mettre le code dans le while (ça fonctionnait pas), essayer avec un if, la aussi pas terrible, mais je me doute bien que j'ai foiré quelque part :P

Merci ^^


signature_01.png -->

 

Mon Tipeee
 


#7 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 26 février 2018 - 09:24

Bon correction : 

void testServo (){
 
  unsigned int waitingTimeMaestro = 2000;  // 2 secondes
  unsigned long refTime = 0;

  maestro.setSpeed(7, 0);
  maestro.setAcceleration(7, 0);
  maestro.setTarget(7, 3500);
  refTime = millis();
  while((millis()-refTime)<waitingTimeMaestro){
    Serial.println("Gestion de temps 2000 ms : 01 ");
  }
  //delay(2000);

  maestro.setSpeed(7, 0);
  maestro.setAcceleration(7,0);
  maestro.setTarget(7, 8000);
 
  refTime = millis();
  while((millis()-refTime)<waitingTimeMaestro){
    Serial.println("Gestion de temps 2000 ms : 02 ");
  }
  //delay(2000);
}

test et dis moi si ça fait bien ce que tu voulais =) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#8 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 606 messages
  • Gender:Male
  • Interests:Glenn

Posté 26 février 2018 - 09:28

Je test demain ;)

 

C'est frustrant...

 

Merci


signature_01.png -->

 

Mon Tipeee
 


#9 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 606 messages
  • Gender:Male
  • Interests:Glenn

Posté 27 février 2018 - 06:23

Effectivement, tout de suite ça fonctionne mieux ^^

 

Bon pas tout en même temps, la comm et le test avec les servos, ça déconne, mais en même temps je test à l'arrache si je puis dire :P

 

Merci ^^


signature_01.png -->

 

Mon Tipeee
 


#10 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 27 février 2018 - 06:42

Je sais pas ce que tu tests ... mais bon au moins comme tu peux le constater la façon de gérer le temps avec millis() comme je te le propose fonctionne ;) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users