millis()
Beschreibung
Gibt die Anzahl von Millisekunden zurück, seit das Arduino-Board das aktuelle Programm gestartet hat. Diese Zahl läuft nach etwa 50 Tagen über (geht auf Null zurück).
Syntax
time_ms = millis()
Parameter
- Keine.
Rückgabewert
Anzahl der Millisekunden seit dem Programmstart. Datentyp: unsigned long.
Beispielcode
Beispielcode 1
Der Code liest die Millisekunden seit Beginn des Sketches des Arduino-Boards und gibt diese auf den seriellen Port aus.
Das ergebnis am seriellen monitor:
Beispielcode 2
Print a text one time per second without blocking other codes
※ Anmerkungen und Warnungen:
- Bitte beachte, dass der Rückgabewert für millis() ein unsigned long-Wert ist. Es können logische Fehler auftreten, wenn ein Programmierer versucht, mit kleineren Datentypen (z. B. int) zu rechnen. Sogar mit Vorzeichen versehene long-Werte können auf Fehler stoßen, da ihr Maximalwert die Hälfte des vorzeichenlosen Gegenstücks ist.
- The return value of millis() function rolls over back to zero after roughly 50 days. If the sketch is intended to run for longer than that, It needs to make sure the rollover does not make the sketch fail. To solve it, write rollover-safe code. Let's compare the two following inequations:
- millis() >= (previousMillis + TIME_INTERVAL)
- (millis() - previousMillis) >= TIME_INTERVAL
- Mathematically, they are equivalent to each other. However, in programming, they are not. That is because the size of storage is unlimited in mathematics while it is limited to 4 bytes in Arduino programming. In programming, when the rollover happens, the first inequation makes the sketch fail while the second inequation does NOT. Therefore:
- Do NOT use if (millis() >= (previousMillis + TIME_INTERVAL)),
- Use if(millis() - previousMillis >= TIME_INTERVAL) instead
Siehe Auch
- Sprache : delay()
- Sprache : delayMicroseconds()
- Sprache : micros()
- Beispiel : How to use millis() instead of delay()
- Beispiel : Blinken ohne Verzögerung
※ ARDUINO KAUFEMPFEHLUNG
Arduino UNO R3 | |
Arduino Starter Kit |