Библиотека MsTimer2 (Arduino)

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

Добавить комментарий

Войти с помощью: