Files
GyverLamp/firmware/old/GyverLamp_v1.5.4/timer2Minim.h
2019-11-14 14:17:02 +03:00

43 lines
1.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// мини-класс таймера, версия 2.0
// использован улучшенный алгоритм таймера на millis
// алгоритм чуть медленнее, но обеспечивает кратные интервалы и защиту от пропусков и переполнений
class timerMinim
{
public:
timerMinim(uint32_t interval); // объявление таймера с указанием интервала
void setInterval(uint32_t interval); // установка интервала работы таймера
boolean isReady(); // возвращает true, когда пришло время. Сбрасывается в false сам (AUTO) или вручную (MANUAL)
void reset(); // ручной сброс таймера на установленный интервал
private:
uint32_t _timer = 0;
uint32_t _interval = 0;
};
timerMinim::timerMinim(uint32_t interval) {
_interval = interval;
_timer = millis();
}
void timerMinim::setInterval(uint32_t interval) {
_interval = (interval == 0) ? 1 : interval; // защита от ввода 0
}
boolean timerMinim::isReady() {
uint32_t thisMls = millis();
if (thisMls - _timer >= _interval) {
do {
_timer += _interval;
if (_timer < _interval) break; // переполнение uint32_t
} while (_timer < thisMls - _interval); // защита от пропуска шага
return true;
} else {
return false;
}
}
void timerMinim::reset() {
_timer = millis();
}