Библиотека Ticker

Библиотека 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;
    }
  }
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии