Пполноценный таймер на базе системных millis() / micros()
ВНИМАНИЕ, БИБЛИОТЕКА УСТАРЕЛА! ИСПОЛЬЗУЙ TimerMs
- Миллисекундный и микросекундный таймер
- Два режима работы:
- Режим интервала: таймер "срабатывает" каждый заданный интервал времени
- Режим таймаута: таймер "срабатывает" один раз по истечении времени (до следующего перезапуска)
- Служебные функции:
- Старт
- Стоп
- Сброс
- Продолжить
Совместима со всеми Arduino платформами (используются Arduino-функции)
К библиотеке есть расширенная документация
- Библиотеку можно найти по названию GyverTimer и установить через менеджер библиотек в:
- Arduino IDE
- Arduino IDE v2
- PlatformIO
- Скачать библиотеку .zip архивом для ручной установки:
- Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
- Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
- Распаковать и положить в Документы/Arduino/libraries/
- (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
- Читай более подробную инструкцию по установке библиотек здесь
- Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
- Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
- Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!
// mode: MS/US
GTimer myTimer(mode);
GTimer myTimer(mode, interval);
void setInterval(uint32_t interval); // установка интервала работы таймера (также запустит и сбросит таймер) - режим интервала
void setTimeout(uint32_t timeout); // установка таймаута работы таймера (также запустит и сбросит таймер) - режим таймаута
boolean isReady(); // возвращает true, когда пришло время
boolean isEnabled(); // вернуть состояние таймера (остановлен/запущен)
void reset(); // сброс таймера на установленный период работы
void start(); // запустить/перезапустить (со сбросом счёта)
void stop(); // остановить таймер (без сброса счёта)
void resume(); // продолжить (без сброса счёта)
// служебное
void setMode(boolean mode); // установка режима работы вручную: AUTO или MANUAL (TIMER_INTERVAL / TIMER_TIMEOUT)
Остальные примеры смотри в examples!
#include "GyverTimer.h"
GTimer myTimer(MS); // создать миллисекундный таймер
void setup() {
Serial.begin(9600);
myTimer.setInterval(500); // настроить интервал
}
void loop() {
if (myTimer.isReady()) Serial.println("Timer!");
}
- v2.0 - улучшенный алгоритм работы таймера
- Кратные интервалы
- Защита от пропусков
- Защита от переполнения millis()
- Убраны дефайны
- v2.1 - возвращены дефайны
- v2.2 - улучшена стабильность
- v3.0
- Логика работы разделена на интервал и таймаут
- Добавлен общий класс GTimer (для миллисекундного и микросекундного таймера)
- Добавлена возможность остановить и продолжить счёт таймера
- v3.2
- Добавлен isEnabled
- Возможность не запускать таймер при создании
При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:
- Версия библиотеки
- Какой используется МК
- Версия SDK (для ESP)
- Версия Arduino IDE
- Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
- Какой код загружался, какая работа от него ожидалась и как он работает в реальности
- В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код