Урок 8 — Подключаем реле к Arduino. Пример работы и скетч

.Урок 8 — Подключаем реле к Arduino. Пример работы и скетч

Подключить реле к Arduino достаточно просто. Для примера мы будем использовать Скетч и подключения из урока: Урок2. Нажатие кнопки без ложных срабатываний.Устраняем дребезг кнопки

В схеме вместо светодиода с резистором подключим реле. Вот так выглядит схема подключения реле к Arduino UNO . К другим версиям например Arduino NANO схема не будет иметь отличий.

т схема подключения реле к Arduino UNO

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

Реле может управлять различными бытовыми приборами.

Пара фоток сделанных при снятии видео по данному уроку: Подключение реле к Arduino.

 Подключение реле к Arduino

 Подключение реле к Arduino фото

реле и Arduino

Скетч можно взять из Урок 2. Нажатие кнопки без ложных срабатываний. Устраняем дребезг кнопки без изменений.

Для более красивого и читабельного кода заменим переменную ledPin на relayPin . Так же заменим вспомогательную переменную ledOn на relayOn. У нас получиться вот такой скетч управления реле.


const int buttonPin = 2;      // номер входа, подключенный к кнопке
const int relayPin =  3;        // номер выхода светодиода
/* переменные */
boolean lastButten = LOW;     // предыдущее состояние кнопки
boolean currentButten = LOW;  // текущее состояние кнопки
boolean relayOn = false;        // текущее состояние свтодиода
void setup() // Функция setup()
{
  // инициализируем пин, подключенный к реле, как выход
  pinMode(relayPin, OUTPUT);     
  // инициализируем пин, подключенный к кнопке, как вход
  pinMode(buttonPin, INPUT);   
}
boolean debvance (boolean last) //убираем дребизг
{
  boolean current = digitalRead (buttonPin); // считываем данные с кнопки
  if (last != current) // Если текущее состояние отличететься от предыдущего 
  {
   delay (5);   // Ждем 5 милисек.
   current = digitalRead (buttonPin); // Присваеваем текущее состояние кнопки
    return current; 
  }
}
void loop() // Функция loop
{
  currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW 
  if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет
  {
    relayOn = !relayOn; // инвертируем значение 
  }
  lastButten =  currentButten;  // Переприсваеваем прошлое состояние кнопки
  digitalWrite(relayPin, relayOn);   // Включаем или выключаем реле (смотря что пришло после инверсии) 
  delay (2);   // Ждем 2 милисек.
}

Вы должны понимать, что управлять реле можно и буз Arduino . Данный пример приведен для ознакомления.

Если подключить реле через кнопку с фиксацией . Вот по такой схеме.

 подключить реле через кнопку с фиксацией

То у нас все будет работать отлично. В качестве источника питания 5В можно использовать MICRO USB адаптер 5pin, при подключении от компьютера или адаптера. Так же можно подключить через понижающий трансформатор, например вот такой.


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

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Спасибо за внимание!

Понравилась статья? Поделитесь ею с друзьями:

Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 28 ноября , 2018

Комментарии

Ваше Имя*
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.

flappy
#3 flappy (11 июня, 2023 в 11:06)
Для реализации данной задачи можно использовать следующий алгоритм:
1. Подключить LSD дисплей 1602 к Arduino через интерфейс I2C, используя библиотеку LiquidCrystal.h.
2. Подключить 8 реле к Arduino, используя электронные компоненты и соответствующие схемы подключения.
3. Подключить две кнопки или энкодер к Arduino для управления циклом переключения реле.
4. Написать программу на языке Arduino, которая будет считывать состояние кнопок или энкодера и управлять реле. Программа должна включать в себя цикл, который будет постоянно проверять состояние кнопок или энкодера. Если кнопки или энкодер нажаты, программа должна переключать реле до тех пор, пока кнопки или энкодер не будут отпущены.
5. В программе необходимо использовать функцию digitalWrite() из библиотеки Wire для управления состоянием реле. Эта функция принимает в качестве аргумента номер пина, на котором установлено реле, и значение true или false, которое определяет состояние реле (включено или выключено).
6. Для отображения состояния реле на LSD дисплее 1602 необходимо использовать функции библиотеки LiquidCrystal. Например, для отображения состояния первого реле можно использовать функцию print() с аргументом "1", а для отображения состояния второго реле использовать функцию print() с аргументом "2".
Пример кода для реализации данной задачи:
```
#include <LiquidCrystal.
h>
// Инициализация LSD дисплея 1602
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Объявляем массив для хранения состояния реле
boolean relayState[8];
void setup() {
// Инициализируем кнопки или энкодер
pinMode(BUTTON1_PIN, INPUT_PULLUP); // Пин кнопки 1
pinMode(BUTTON2_PIN, INPUT_PULLUP); // Пин кнопки 2
pinMode(ENCODER_PIN, INPUT); // Пин энкодера
// Устанавливаем начальное состояние реле
relayState[1] = true; // Реле 1 включено
relayState[2] = false; // Реле 2 выключено
relayState[3] = false; // Реле 3 выключено
relayState[4] = false; // Реле 4 выключено
relayState[5] = false; // Реле 5 выключено
relayState[6] = false; // Реле 6 выключено
relayState[7] = false; // Реле 7 выключено
}
void loop() {
if (digitalRead(BUTTON1_PIN) == HIGH) {
// Если нажата кнопка 1, переключаем реле 1 и 2
digitalWrite(RELAY1_PIN, !relayState[1]);
digitalWrite(RELAY2_PIN, relayState[1]);
} else if (digitalRead(BUTTON2_PIN) == HIGH) {
// Если нажата кнопка 2, переключаем реле 3 и 4
digitalWrite(RELAY3_PIN, !relayState[3]);
digitalWrite(RELAY4_PIN, relayState[3]);
} else {
if (digitalRead(ENCODER_PIN) != LOW) {
// Если энкодер вращается
int currentState = digitalRead(RELAY5_PIN);
digitalWrite(RELAY6_PIN, currentState);
digitalWrite(RELAY7_PIN, !currentState);
}
}
for (int i = 0; i < 8; i++) {
lcd.
setCursor(0, 0);
lcd.print(i + 1);
if (!relayState[i]) {
lcd.print(" OFF");
} else {
lcd.print(" ON");
}
lcd.write(0x0A);
}
}
```
В данном примере используются следующие пины:
- RELAY1_PIN - пин, на котором подключено первое реле
- RELAY2_PIN - пин, на котором подключено второе реле
- RELAY3_PIN - пин, на котором подключено третье реле
- RELAY4_PIN - пин, на котором подключено четвертое реле
- RELAY5_PIN - пин, к которому подключен энкодер (не обязательно)
- RELAY6_PIN - пин, на который нужно переключать второе реле при вращении энкодера (не обязательно)
- RELAY7_PIN - пин, на который нужно переключаться первое реле при нажатии на кнопку (не обязательно).
chat jpt выдал, проверить у меня реле нет
ub9ybf
#1 Гость: ub9ybf (12 марта, 2019 в 17:48)

Доброго времени суток. В среде Ардуино - я новичек, поэтому обращаюсь за помощью. Задача следующая. 8 реле, 2 кнопки (или энкодер), LSD дисплей (1602) и Ардуино. Переключение - циклическое. Отображение на дисплее, какое реле включено. Дисплей подключаем по протоколу I2C. Подскажите ,каким образом это реализовать?


Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box