Библиотека TimingRelay: Реле времени

02.09.2017 21:00

genaonyx



Введение

Приветствую народ. Сегодня хотелось бы поделиться с вами своей библиотекой TimingRelay.

Библиотека TimingRelay превращает обычное реле, подключенное к Arduino, в реле времени. В данной библиотеке вы можете задать как время задержки включения, так и время задержки выключения или и то и другое одновременно. Библиотека использует минимум ресурсов Arduino, работает в асинхронном (не блокирующем (без delay)) режиме и позволяет удобно и просто управлять им.


Описание

Как и любую другую библиотеку ее в первую очередь необходимо скачать и установить.

Далее в своем скетче библиотеку необходимо инициализировать прописав в самом начале:

#include "TimingRelay.h"

или перейти по меню "Скетч" - "Подключить библиотеку" - "TimingRelay".


После чего необходимо вызвать ее конструктор:

TimingRelay relay(_pin, _onDelay, _offDelay);
  • _pin (uint8_t) - Номер порта к которому подключено реле (Вызывать pinMode для реле нет необходимости, библиотека сделает это за вас).
  • _onDelay (unsigned long) - Время задержки включения в миллисекундах (По умолчанию равно нулю).
  • _offDelay (unsigned long) - Время задержки выключения в миллисекундах (По умолчанию равно нулю).


После того как вы создали класс и связали его с одним из портов Arduino, в секции loop вашего скетча необходимо вызвать одноименную функцию библиотеки.

void loop() 
{ 
  relay.loop(); 
}


Для управления реле в библиотеке добавлены четыре простые функции:

  1. void on() - Включить реле.
  2. void off() - Выключить реле.
  3. void set(int _output) - Включить или выключить реле (Можно напрямую выводить состояние другого порта, например кнопки).
  4. int get() - Функция возвращает текущее состояние реле (включено или выключено).


Пример

В данном примере по нажатию на кнопку загорится светодиод с задержкой в две секунды и будет гореть еще пять секунд после того как вы отпустите кнопку.

// Подключаем библиотеку TimingRelay.
#include "TimingRelay.h"

// Константа, содержащая порт кнопки.
const int buttonPin = 2;

// Константа, содержащая порт реле.
const int relayPin = 13;

// Переменная, содержащая состояние кнопки.
int buttonState = 0;

// Создаем реле времени (Порт, Задержка включения, Задержка выключения).
TimingRelay relay(relayPin, 2000, 5000);

void setup()
{
  // Инициализируем порт кнопки как вход.
  pinMode(buttonPin, INPUT);
}

void loop()
{
  // Считываем статус кнопки.
  buttonState = digitalRead(buttonPin);
  // Передаем статус реле.
  relay.set(buttonState);
  // Обрабатываем (обязательно).
  relay.loop();
}


Примечание

Если вы хотите управлять реле по нажатию на кнопку (как в примере выше), нет необходимости заморачиваться с антидребезгом. Для этого просто выставите задержку включения и выключения от 10 и более миллисекунд.


Обсуждения

Тема на форуме


Скачать

Скачать библиотеку TimingRelay (1.1).



Расскажи о нас

Сообщение

Если у Вас есть опыт в работе с Arduino и собственно есть время для творчества, мы приглашаем всех желающих стать авторами статей публикуемых на нашем портале. Это могут быть как уроки, так и рассказы о ваших экспериментах с Arduino. Описание различных датчиков и модулей. Советы и наставления начинающим. Пишите и размещайте свои статьи в соответсвующей ветке форума.