Управление реле ардуино: скетч

В этой статье приведены разные варианты управления реле в скетчах ардуино. Примеры тестировались на Arduino Uno, но они могут быть легко применимы для работы на других платах Arduino: Uno, Mega, Nano.

Простой вариант скетча управления реле

Схема подключения

В данном примере используется стандартный модуль реле ардуино, на котором уже установлены все необходимые элементы для подключения к . Схема подключения очень проста: модуль реле присоединяется к 5 пину платы Ардуино. При этом для простоты мы можем даже не присоединять реальную нагрузку — реле будет щелкать при каждом изменении состояния, мы услышим эти щелчки и будем понимать, что скетч работает.

Схема для скетча управления реле ардуино

Скетч для работы с реле

/*
 * Скетч для управления реле с помощью ардуино
 * Используем реле SONGLE SRD-05VDC
 * Реле ОТКРЫВАЕТСЯ при подаче низкого уровня сигнала (LOW) на управляющий пин.
 * Реле ЗАКРЫВАЕТСЯ при подаче высокого уровня сигнала (HIGH) на управляющий пин.
 * 
 * В данном примере мы просто открываем и закрываем реле раз в 5 секунд.
 * 
 * PIN_RELAY содержит номер пина, к которому подключено реле, которым мы будем управлять 
 * 
 * В функции setup устанавливаем начальное положение реле (закрытое)
 * Если к реле будет подключена нагрузка(например, лампочка), то после запуска скетча она будет включаться и выключаться каждые 5 секунд
 * 
 * Для изменения периода мигания нужно изменить параметр функции delay(): поставив 1000 миллисекунд, выполучите 1 секунду задержки
 * 
 * В реальных проектах реле включается в ответ на обнаружение каких-либо внешних событий через подключение датчиков 
 * 
 */

#define PIN_RELAY 5 // Определяем пин, используемый для подключения реле

// В этой функции определяем первоначальные установки
void setup()
{
  pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
  digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала
  delay(5000);
  digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  delay(5000);
}

Скетч управления реле с датчиком движения

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

Схема подключения реле

Управление реле ардуино: скетч

Следует понимать, что в реальных проектах обходятся вообще без ардуино — просто подключая сигнальный выход датчика к реле.

Пример скетча

В данном примере мы добавим в цикл loop проверку состояния PIR датчика с помощью функции digitalRead (). Если мы получаем HIGH, то это означает сработку датчика и мы выполняем действие — включаем реле. Если к нему присоединить лампочку, то она загорится. Но, как и в прошлом примере, можно просто послушать щелчки.

/*
   Скетч для управления реле ардуино с помощью PIR датчика

   PIN_RELAY содержит номер пина, к которому подключено реле, которым мы будем управлять
   PIN_PIR содержит номер пина с подключенным PIR-сенсором

   В функции setup устанавливаем начальное положение реле (закрытое)
   В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead

   Для отладки текущее значение датчика выводим в окно монитора порта
*/


#define PIN_RELAY 8 // Определяем пин, используемый для подключения реле
#define PIN_PIR 5 // Определяем пин, используемый для подключения PIR-датчика

// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{

  int val = digitalRead(PIN_PIR); // Считваем значение с датчика движения в отдельную переменную

  if (val == HIGH) {
    Serial.println("Датчик сработал");
    digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }

  delay(1000); // Проверяем значения один раз в секунду.
}
ПОДЕЛИТЬСЯ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here