Pages: [1]   Go Down
Author Topic: Frage zu while-Schleife  (Read 382 times)
0 Members and 1 Guest are viewing this topic.
Austria
Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

mfg
Michael
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

z.B. so:
Code:
unsigned long start = millis();

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


Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Besser so -- keine while Schleife smiley-wink :

Code:
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.
Logged

Pages: [1]   Go Up
Jump to: