Библиотека 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;
}
}



