Aller au contenu


Photo
- - - - -

Arduibo : sortir d'une boucle pendant un delay


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

#1 alexso

alexso

    Membre

  • Membres
  • 33 messages

Posté 04 septembre 2013 - 09:13

Bonsoir,

sur Arduino j'ai une boucle avec des delay et j'aurais aimé savoir si il existait un moyen de sortir de cette boucle (par exemple changement de position d'un bouton) pendant un delay ?

en vous remerciant,

Alex

#2 olivthill

olivthill

    Membre occasionnel

  • Membres
  • Pip
  • 143 messages
  • Gender:Male
  • Location:Normandie

Posté 04 septembre 2013 - 10:58

La documentation sur la fonction delay() précise que :

"the delay function does not disable interrupts."

(Source : http://arduino.cc/en/Reference/Delay)

Donc, on peut mettre en place une interruption avant la boucle par un AttachInterrupt() (voir http://arduino.cc/en/Reference/AttachInterrupt ).
Puis, quand un bouton (relié uniquement à certains ports, selon le modèle de la carte) sera pressé, alors la routine de l'interruption sera exécutée. Ensuite quand cette routine sera terminée, la boucle reprendra. Si une variable globale a été changée dans la routine de l'interruption, alors s'il y a un test de cette variable dans la boucle, le programme pourra sortir éventuellement de la boucle.

#3 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)

Posté 05 septembre 2013 - 10:28

Dans la mesure du possible, éviter de programmer des delay()
Ce sont des fonctions bloquantes, Arduino attend et ne fait rien pendant ce temps.

Le temps peut être géré plus efficacement par millis()
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ExempleBlinkWithoutDelay
Ca permet de disposer des interruptions en permanence
Christian

#4 alexso

alexso

    Membre

  • Membres
  • 33 messages

Posté 05 septembre 2013 - 01:55

merci pour ta réponse j'y jette un oeil

#5 alexso

alexso

    Membre

  • Membres
  • 33 messages

Posté 05 septembre 2013 - 02:05

c'est parfait
dernière chose y a t il un moyen de sortir d'une boucle suite à l'action sur un bouton, sans tester la condition de l'état du bouton en permanence ?

#6 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)

Posté 05 septembre 2013 - 04:32

La surveillance "invisible" en arrière plan du bouton est réalisée par les interruptions
http://arduino.cc/fr/Main/AttachInterrupt

Par contre pendant un delay il ne se passe strictement rien, on fait la pause café
Christian

#7 alexso

alexso

    Membre

  • Membres
  • 33 messages

Posté 05 septembre 2013 - 04:45

écoute c'est juste parfait,
merci infiniment

Alex




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

0 members, 0 guests, 0 anonymous users