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 758 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
  • 9 934 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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 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 ?

#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#5 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 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 :)

#6 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 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
  • 9 934 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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#8 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 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 758 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
  • 9 934 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 ;) 


  • Oliver17 aime ceci

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 !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 






Aussi étiqueté avec au moins un de ces mots-clés : Arduino, millis

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

0 members, 0 guests, 0 anonymous users