Forum: Mikrocontroller und Digitale Elektronik Non blocking Delay für Arduino gesucht


von Mick (Gast)


Lesenswert?

Hallo zusammen

Ich bin auf der Suche nach einer - im besten Fall - Bibliothek, die ein 
Delay zur Verfügung stellt, das ein laufendes Programm während des 
Wartens nicht blockiert. Ich weiss, es gibt da schon einige Lösungen. 
Meine Anforderung geht aber noch weiter. Es sollen mehrere Delays 
chronologisch verkettet werden können.

Bsp:
1
loop(){
2
  nach 1000ms mache
3
    ...Code...
4
  danach warte 500ms und dann mache
5
    ...Code...
6
  danach warte 250ms und dann mache
7
    ...Code...
8
9
  ...restlicher Programmcode...
10
}

Ich habe diese Bibliothek von Albert gefunden: 
http://www.avdweb.nl/arduino/libraries/virtualdelay.html Leider 
funktioniert diese bei mir nicht und der Autor lässt mit Antwort auf 
sich warten.

Kennt jemand weitere Lösungen/Ansätze. Vielen Dank für euren Input!

von Karl M. (Gast)


Lesenswert?

Moin,

das nennt sich programmieren und Bedarf eines komplett anderen Ansatzes.

Siehe:

*Wartezeiten effektiv (Scheduler)*
Beitrag "Wartezeiten effektiv (Scheduler)"

von Eric B. (beric)


Lesenswert?

Mick schrieb:
> nach 1000ms mache
>     ...Code...
>   danach warte 500ms und dann mache
>     ...Code...
>   danach warte 250ms und dann mache
>     ...Code...

Die Lösung dafür heisst Statemachine

von Philipp N. (philoepp)


Lesenswert?

Hallo,

der Arduino IDE liegt direkt ein Beispiel für das gewünschte Prinzip 
bei:

https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

Mit dem Wissen sollte es ohne Probleme möglich sein, das von dir 
gewünschte Verhalten zu erreichen.

Gruß
Philipp

von Einer K. (Gast)


Lesenswert?

Mick schrieb:
> Es sollen mehrere Delays
> chronologisch verkettet werden können.

Beitrag "Wer benutzt Protothreads?"


Selbst im Arduino delay() ist schon die Möglichkeit zur Nebenläufigkeit 
eingebaut.

von Mick (Gast)


Lesenswert?

Vielen Dank

Proto Threads war das Stichwort. Diese Bibliothek hat mir nun geholfen: 
https://github.com/psby233/ProtoThreadsForArduino

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.