
Библиотека Ticker для Ардуино является аналогом таймера. Помогает вызывать определенные функции через заданные интервалы времени и указывать количество повторений от 1 до бесконечности. Не использует аппаратные прерывания от таймеров. Использует функции micros()
и millis()
.
Скачать библиотеку Ticker с сайта или с GitHub.
Описание функций библиотеки
#include "Ticker.h"
Подключение библиотеки Ticker.
Ticker(fptr callback, uint32_t timer, uint32_t repeat, resolution_t resolution)
Конструктор класса. Для создание объекта необходимо передать следующие параметры:
callback
— имя функция, которая будет выполнятся;timer
— интервал таймера в миллисекундах или микросекундах;repeat
— количество повторов, если параметр равняется 0, то бесконечное количество раз (по умолчанию 0);resolution
— разрешение может принимать одно из двух значений:MICROS
(микросекунды) илиMILLIS
(миллисекунды).
Разрешение MICROS
устанавливается для таймеров до 70 минут (после произойдет переполнение и переменная обнулится), используется по умолчанию. Если нужно более чем 70 минут, используйте MILLIS
.
Ticker timer1(printMessage, 0, 1); Ticker timer2(printCounter, 1000, MILLIS); Ticker timer3(printCountdown, 1000, 5); Ticker timer4(blink, 500); Ticker timer5(printCountUS, 100, 0, MICROS_MICROS);
void start()
Запускает таймер.
timer1.start();
void resume()
Возобновляет работу таймера. Если таймер не был запущен, тогда запускает его.
timer1.resume();
void pause()
Приостанавливает таймер (пауза).
timer1.pause();
void stop()
Останавливает таймер.
timer1.stop();
void update()
Должен вызываться в основном цикле loop(){}
. Сравнивает прошедшее время с заданным интервалом и при выполнении условия выполняет указанную в конструкторе callback
— функцию.
timer1.update();
void interval(uint32_t timer)
Устанавливает интервал таймера.
timer1.setInterval(3000);
uint32_t elapsed()
Возвращает время, прошедшее после последнего вызова callback
— функции, в миллисекундах или микросекундах, в зависимости от установленного разрешения resolution
.
uint32_t t = timer1.elapsed();
status_t state()
Возвращает состояние таймера. Одно из трех значений: STOPPED
— остановлен, RUNNING
— запущен, PAUSED
— приостановлен.
status_t s = timer1.state();
uint32_t counter()
Возвращает количество выполненных повторов.
uint32_t cntr = timer1.counter();
Пример из библиотеки
#include "Ticker.h" void printMessage(); void printCounter(); void printCountdown(); void blink(); void printCountUS(); bool ledState; int counterUS; Ticker timer1(printMessage, 0, 1); Ticker timer2(printCounter, 1000, MILLIS); Ticker timer3(printCountdown, 1000, 5); Ticker timer4(blink, 500); Ticker timer5(printCountUS, 100, 0, MICROS_MICROS); void setup() { pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); delay(2000); timer1.start(); timer2.start(); timer3.start(); timer4.start(); timer5.start(); } void loop() { timer1.update(); timer2.update(); timer3.update(); timer4.update(); timer5.update(); if (timer4.counter() == 20) timer4.interval(200); if (timer4.counter() == 80) timer4.interval(1000); } void printCounter() { Serial.print("Counter "); Serial.println(timer2.counter()); } void printCountdown() { Serial.print("Countdowm "); Serial.println(5 - timer3.counter()); } void printMessage() { Serial.println("Hello!"); } void blink() { digitalWrite(LED_BUILTIN, ledState); ledState = !ledState; } void printCountUS() { counterUS++; if (counterUS == 10000) { Serial.println("10000 * 100us"); counterUS = 0; } }