Wersja: 16.4.1
Autor: Łukasz Tretyn, Nettigo.pl
Biblioteka umożliwia:
- Budowanie programów robiących wiele rzeczy na raz
- Uruchamiane różnych części programu o różnym czasie
- Timeout - określanie czasu na wykonanie zadania
- Timestamp - sterowanie algorytmem przez upływający czas
- Miałczenie jak kot
Biblioteka nie blokuje programu, tak jak funkcje delay()
i delayMicrosoconds()
.
Bibliotekę należy pobrać i umieścić w katalogu libraries, który znajduje się w folderze ze szkicami Arduino.
Strona projektu biblioteki Timers na Github
#include <Timers.h>
Tę linię należy dodać na początku programu by skorzystać z bilioteki Timers.
Timer timer;
Główna klasa biblioteki nazwya się Timer
.
W przykładzie utworzyłem z niej obiekt o nazwie timer
.
Jeśli potrzebujesz więcej timerów, możesz stworzyć kilka obiektów o różnych nazwach albo ich tablicę.
timer.begin(300);
begin
rozpoczyna odliczanie timera od nowa, z nowym czasem do odliczenia.
Argument przyjmuje wartości w milisekundach.
W przykładzie obiekt timer
będzie odliczał czas 300 milisekund od chwili wywołania metody begin
.
bool isTimeEnd = timer.available();
available
zwraca wartość true
jeśli upłynął już czas, lub false
jeśli nie upłynął.
Wartość jest typu bool
.
W przykładzie metoda available
obiektu timer
zapisuje czy upłynął już czas, do zmiennej isTimeEnd
.
timer.restart();
restart
rozpoczyna odliczanie czasu od nowa.
timer.time(600);
time
ustawia nowy czas do odliczania, bez rozpoczynania odliczania od nowa.
Ardument przyjmuje wartości w milisekundach.
W przykładzie czas do odliczenia został zmieniony na 600 milisekund.
unsigned long timeToEnd = timer.time();
time
(bez argumentów) podaje ile jeszcze zostało czasu do końca odliczania.
Czas jest zwracany w milisekundach.
W przykładzie pozostały czas pracy timer
został zapisany w zmiennej timeToEnd
.
unsigned long timeoutTime = SECS(40);
SECS
zamienia czas w sekundach na milisekundy.
unsigned long timeoutTime = MINS(20);
MINS
zamienia czas w minutach na milisekundy.
unsigned long timeoutTime = HOURS(2);
HOURS
zamienia czas w godzinach na milisekundy.
timer.time(STOP);
STOP
zatrzymuje działanie timera.
Nieodzowny przykład migania diodą:
#include <Timers.h>
Timer ledBlinkTimer;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
ledBlinkTimer.begin(SECS(2));
}
void loop() {
if (ledBlinkTimer.available())
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
ledBlinkTimer.restart();
}
}
Program miga wbudowaną w arduino diodą świecącą "L".
- Na początku za pomocą
include
ładowana jest biblioteka Timers - Potem tworzony jest obiekt
ledBlinkTimer
- W funkcji
setup
ustawiane jest odliczanie 2 sekund za pomocąbegin
iSECS
- W funkcji
loop
warunekif
sprawdza czy upłynął już czas. Obwieści to metodaavailable
- Gdy warunek się spełni dioda zmieni swój stan na przeciwny, a timer zostanie zresetowany za pomocą metody
restart
, żeby odliczał czas od nowa.