micros()
Beschreibung
Gibt die Anzahl der Mikrosekunden zurück, seit das Arduino-Board das aktuelle Programm gestartet hat. Diese Zahl läuft nach ca. 70 Minuten über (Nullstellen).
Auf 16-MHz-Arduino-Boards (z. B. Duemilanove und Nano) hat diese Funktion eine Auflösung von vier Mikrosekunden (d. H. Der zurückgegebene Wert ist immer ein Vielfaches von vier). Auf 8-MHz-Arduino-Boards (z. B. dem LilyPad) hat diese Funktion eine Auflösung von acht Mikrosekunden.
Syntax
time_us = micros()
Parameter
- Keine.
Rückgabewert
Gibt die Anzahl der Mikrosekunden zurück, seit das Arduino-Board das aktuelle Programm gestartet hat. Datentyp: unsigned long.
Beispielcode
Beispielcode 1
Der Code gibt die Anzahl der Mikrosekunden seit dem Beginn des Arduino-Boards zurück.
Das ergebnis am seriellen monitor:
Beispielcode 2
Print a text one time per second without blocking other codes
※ Anmerkungen und Warnungen:
- Es gibt 1.000 Mikrosekunden in einer Millisekunde und 1.000.000 Mikrosekunden in einer Sekunde.
- Please note that the return value for micros() is of type unsigned long, logic errors may occur if a programmer tries to do arithmetic with smaller data types such as int. Even signed long may encounter errors as its maximum value is half that of its unsigned counterpart.
- The return value of micros() function rolls over back to zero after roughly 71 minutes. 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:
- micros() >= (previousMicros + TIME_INTERVAL)
- (micros() - previousMicros) >= 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 (micros() >= (previousMicros + TIME_INTERVAL)),
- Use if(micros() - previousMicros >= TIME_INTERVAL) instead
Siehe Auch
- Sprache : delay()
- Sprache : delayMicroseconds()
- Sprache : millis()
※ ARDUINO KAUFEMPFEHLUNG
Arduino UNO R3 | |
Arduino Starter Kit |