MsTimer2 это маленькая и простая в использовании библиотека служит «интерфейсом» между timer2 и пользователем. Она позволяет периодически запускать нужную функцию и настраивать, какой будет продолжительность у этого периода. Она называется «MsTimer2», потому что «зашивает» в timer2 разрешение в 1 миллисекунду (ms).
Функции:
- Функция MsTimer2::set(ms, f) задает нужный временной интервал в миллисекундах (первый аргумент; ms). При завершении интервала будет вызвана «f». Ее нужно вызывать пустой, безо всяких аргументов.
- Функция MsTimer2::start() включает прерывание.
- Функция MsTimer2::stop() отключает прерывание.
Примеры использования:
Отсчет временного интервала:
#include <MsTimer2.h> unsigned long s; void setup(){ Serial.begin(9600); MsTimer2::set(1000, to_Timer); // задаем период 1с MsTimer2::start(); // старт таймера } void to_Timer(){ //функция таймера ++s; // отсчет 1 с } void loop(){ Serial.println(s); delay(1000); }
Из примера видно, что переменная s увеличивается на единицу каждую секунду.
Мигание светодиодом:
#include <MsTimer2.h> unsigned long s; void setup(){ Serial.begin(9600); pinMode(13,OUTPUT); MsTimer2::set(300, to_Timer); // задаем период 300 мс MsTimer2::start(); // старт таймера } void to_Timer(){ //функция таймера static boolean output = HIGH; /* Ключевое слово static используется для создания переменной, которая видна только одной функции. Однако в отличие от локальных переменных, которые создаются и уничтожаются при каждом вызове функции*/ // Переменные типа boolean могут принимать одно из двух значений: true или false. digitalWrite(13,output); /* светодиод расположенный на плате Arduino загорается и гаснет с интервалом 300 мс*/ output =! output; } void loop(){ }
Остановка таймера:
#include <MsTimer2.h> unsigned long s; void setup(){ Serial.begin(9600); MsTimer2::set(1000, to_Timer); // задаем период 1с MsTimer2::start(); // старт таймера } void to_Timer(){ //функция таймера ++s; // отсчет 1 с } void loop(){ if(s==60){MsTimer2::stop();} Serial.println(s); delay(1000); }
Таймер остановится как только переменная s будет равна 60.
Скачать библиотеку: MsTimer2.zip