Doppeltimer mit millis()

Hallo ich probiere jetzt schon einige Stunden an der Aufgabe herum und komme einfach nicht weiter, vielleicht könnt ihr mir helfen. Folgendes Problem:

Ich nehme mit dem Arduino z.b. alle 10 min einen Wert auf, dazu habe ich die Funktion millis() wie im Blinkwithoutdelay Beispiel verwendet. Das hat auch funktioniert. Nun möchte ich aber nachdem der Wert aufgenommen wurde und er über einer bestimmen Schwelle ist 5 Sekunden einen Pin auf HIGH setzen. Nachdem die 5 Sekunden abgelaufen sind soll der Pin wieder LOW sein. Ich kann jedoch kein Delay benutzen, da ich zusätzlich ein Display mit Keys verwende, welche die ganze Zeit über registriert werden müssen.
Könnt ihr mir da vielleicht helfen?

Das dürfte ein Job für einen einfachen endlichen Automaten sein.

Suche mal nach "Endlicher Automat", das hatten wir schon ein paar mal hier im Forum.

Hallo,

Du mußt dir mehrere Zwischenzeiten merken und dann abfragen ob diese vorbei sind. Genau wie du es mit millis ohne delay machst. Wird nur etwas verschachtelter.

In diesem Beispiel lasse ich zwei LEDs mit unabhängiger Frequenz blinken.

Oder Du verwendest Zähler (ungetestet):

if (millis() - prevMillis >= 1000) { 
  sekundenZaehler1++;
  sekundenZaehler2++;
  prevMillis = millis();
}

if (sekundenZaehler1 >= 5) {
  sekundenZaehler1 = 0;
  // hier Aktion1 einfügen
}

Die Sache mit den Zähler hat soweit erstmal Funktioniert aber ich denke ich muss mich , zu Gunsten künftiger Projekte, mal mit den Automaten auseinandersetzen.

Wie gesagt musst dir die nur die Anfangszeit abspeichern. Die ist dann previousMillis. Eventuell noch eine boolsche Variable einführen, damit die Abfrage nur ausgeführt wird wenn ein bestimmtes Ereignis eingetreten ist.

CaptainNerdcore:
Die Sache mit den Zähler hat soweit erstmal Funktioniert aber ich denke ich muss mich , zu Gunsten künftiger Projekte, mal mit den Automaten auseinandersetzen.

Mir hat der Weg über die Zähler den Einstieg in die Verwendung der millis() erleichtert, daher hatte ich dies hier vorgeschlagen. Der "richtige " Ansatz ist der von Serenifly gemachte.