Go Down

Topic: Frage zu while-Schleife (Read 393 times) previous topic - next topic

michael__k

Hallo!
Wie kann ich eine while-Schleife für nur 2 sek. laufen lassen?

mfg
Michael

mkl0815

z.B. so:
Code: [Select]

unsigned long start = millis();

while(millis() - 2000 < start) {
//mache irgendwas ...



michael_x

Besser so -- keine while Schleife ;) :

Code: [Select]
unsigned long start;
void loop() {
if (startbedingung)
    start = millis();

if (millis()-start < 2000)  {   // immer Differenz bilden, dann stört kein Überlauf von millis
   mach_irgendwas(); // sollte "sofort" fertig werden, um im nächsten loop - Durchlauf gleich wieder dranzukommen
}

}
Vorteile: 
- loop hängt nicht
- Startbedingung kann erneut getriggert werden, während mach_irgendwas noch beauftragt wird.
Achtung:
- wenn Startbedingung länger ansteht, wird mach_irgendwas entsprechend länger ausgeführt

Wenn etwas anderes Verhalten gewünscht, kann das natürlich auch realisiert werden,
das Prinzip "loop hängt nicht" sollte aber erhalten bleiben.

Go Up