Arduino dla początkujących · Struktury sterujące i czas bez blokowania
millis() i micros() — nieblokujące odmierzanie czasu
Struktury sterujące i czas bez blokowania
Wprowadzenie
Funkcja millis() zwraca liczbę milisekund, które upłynęły od uruchomienia programu, a micros() liczbę mikrosekund — obie jako wartość typu unsigned long. Zamiast blokować procesor w delay(), zapisujemy znacznik czasu (previousMillis) i w każdej iteracji loop() sprawdzamy, ile czasu minęło. W tej lekcji poznasz dokładnie, co zwracają obie funkcje i dlaczego typ unsigned long jest konieczny, jaka jest rozdzielczość micros() (co 4 µs na Uno 16 MHz) i kiedy liczniki się przepełniają (millis() po ~49,7 dnia, micros() po ~71,6 minuty), poprawny wzorzec nieblokujący if (currentMillis - previousMillis >= interval), oraz DLACZEGO odejmowanie unsigned long jest odporne na przepełnienie dzięki arytmetyce modulo 2^32. Odnosimy się do Arduino Language Reference.