ich habe mir (wie ich zugeben muss, ohne zu schauen ob es sowas schon gibt) eine tinzig-winzig-kleine Lib geschrieben, mit der man Delays ausführen kann, ohne das laufende Programm anzuhalten. Hierzu ein Beispiel:
Die loop()-Funktion läuft (fast - zumindest wird keine Wartepause eingelegt) ohne gebremst zu werden, x wird also kontinuierlich hochgezählt. Die LED an Pin 13 blinkt im Sekundentakt, wie im Blink-Beispiel und alle halbe Sekunde wird der Wert von x auf der seriellen Schnittstelle ausgegeben.
Mit der Lib kann man Delay-Zeiten setzen (so viele, wie Speicher vorhanden ist, sonst kein Limit), man kann über if(...) abfragen, ob eine Delay-Zeit schon abgelaufen ist oder ob die Zeit noch läuft und man kann eine Callback-Funktion (hier im Beispiel toggleLed() ) aufrufen, je nachdem ob Delay abgelaufen ist oder noch läuft.
Falls das hier für jemanden interessant wäre, würde ich es mit Erklärung zum downloaden auf meine Seite stellen und den Link hier veröffentlichen. Vielleicht fällt ja auch dem einen oder anderen noch was nützliches ein, was man dazu packen könnte.
uwefed:
millis() bzw micros() sind Dir nicht sympatisch?
Doch, das fragt sogar millis() ab. Aber immer das Gewurschtel mit "if(millis() == dieses oder jenes" ist relativ unübersichtlich finde ich. Außerdem finde ich meine Idee mit den Callback-Funktionen gut.
mal wieder hat sich einer Gedanken darüber gemacht, wie die Arduino-Welt erleichtert werden kann. Nachdem ich mich von dem delay() - Befehl weitestgehend verabschiedet habe, kämpfe ich (als Anfänger) immer mit den Variablen der Intervallverarbeitung. Ein wirkliches Gewurschtel...
Ich wäre sehr daran interessiert, diese Library auszuprobieren. Also ab damit in Deinen "Bastelkeller"!
Schaut euch mal meine Lib an. Dies ist zwar eher eine Funktionssammlung die geschickt generiert wird aber die erleichtert euch den Umgang mit millis() == ... und den ganzen globalen Variablen.
Offensichtlich haben sich schon mehrere Gedanken über diverse Kleinigkeiten gemacht. (Von mir gab es auch in einem Thread mal eine WaitWithoutDelay Lib). Leider geht sowas hier komplett unter und über die Suche findet man sowas auch nicht so einfach, wenn man nicht weiss wonach man konkret suchen soll.
Wäre es evtl. möglich einen Sticky-Post mit "Common Problems & Solutions" oder (wir sprechen ja deutsch "Allgemeine Probleme und Lösungen" zu haben, bei dem einzelne Posts zu gängigen Problemen angelegt werden (nur vom Moderator) und die dann jeweils mit Links zu sinnvollen und helfenden Threads ausgestattet werden.
Spontan fallen mir da
"delay ohne delay"
RTC Zeit stellen
Taster anschliessen und entprellen
Schieberegister anschliessen und abfragen / ansteuern
LEDs und Vorwiderstände
maximaler Strom von Pins, Ports und ganzen Arduinos
Ich weiss das gibt es auch im Playground, aber mal ehrlich, der ist ziemlich unübersichtlich und für einen Anfänger nicht wirklich gut geeignet. Meist werden ja eh Links zum eigenen Einlesen und Lernen gebraucht. Man kann ja durchaus auf den Playground verlinken.