Go Down

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

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy