Wie löse ich so etwas
Du kannst eine eigene Funktion mit einer While-Schleife aufrufen, die nur 30 Sekunden lang läuft.
Zum Beispiel so eine Funktion:
void DreissigSekunden()
{
long startzeit,endezeit;
startzeit=millis();
endezeit=startzeit+30000;
Serial.println();
Serial.println("30 Sekunden-Schleife gestartet...");
while (millis()<endezeit)
{
delay(1000);
}
Serial.println("Nach 30 Sekunden beendet.");
}
Alles in der While-Schleife wird 30 Sekunden lang abgearbeitet, in diesem Fall nur ein Delay von je 1000 Millisekunden.
Warnung: Der millis()-Timer läuft alle ca. 50 Tage über und fängt dann bei Null an. Das Timing mit dem millis()-Timer zu machen bietet sich nur für Programme an, die häufiger als alle 50 Tage resettet werden. Oder Programme, bei denen es nichts ausmacht, dass die Funktion ggf. auch mal weniger als 30 Sekunden läuft, wenn man den Taster genau drückt, weniger als 30 Sekunden bevor der Timer alle 50 Tage überläuft.