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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mick (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
Moin,

das nennt sich programmieren und Bedarf eines komplett anderen Ansatzes.

Siehe:

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

von Eric B. (beric)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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 Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Mick (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.