#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
// підключаємо пін
IRrecv irsensor(8);
// визначаємо параметри
LiquidCrystal_I2C lcd(0x27, 20, 4);
int relay = 4;
int led = 5;
int relayflug = 0;
int ledrise = 0;
void setup() {
pinMode(relay, OUTPUT);
pinMode(led, OUTPUT);
// вмикаємо дисплей та підсвітку
lcd.init();
lcd.backlight();
//запускаєм іч ресивер
irsensor.enableIRIn();
}
void loop() {
// якщо дані надсилаються, то виконуємо команди віповідно до значення змінної
if (irsensor.decode()) {
switch (irsensor.decodedIRData.command) {
case 168:
// кнопка плей
// присвоюємо змінній значення один, очищаємо дисплей, виводимо напис, подаємо позитивний сигнал на реле, виходимо.
relayflug = 1;
lcd.clear();
lcd.print("Turn on relay");
digitalWrite(relay, HIGH);
break;
// кнопка живлення
// присвоюємо змінній значення нуль, очищаємо дисплей, виводимо напис, подаємо негативний сигнал на реле, виходимо.
case 162:
relayflug = 0;
lcd.clear();
lcd.print("Turn off relay");
digitalWrite(relay, LOW);
break;
// кнопка мінус
// зменшуємо змінну на 20 позицій, подаємо шім сигнал, очищаємо дисплей, виводимо напис та виходимо.
case 152:
ledrise = ledrise - 20;
analogWrite(led, ledrise);
lcd.clear();
lcd.print("Increase brigtness");
break;
// кнопка плюс
// збільшуємо змінну на 20 позицій, подаємо шім сигнал, очищаємо дисплей, виводимо напис та виходимо.
case 2:
ledrise = ledrise + 20;
analogWrite(led, ledrise);
lcd.clear();
lcd.print("Discrease brigtness");
break;
}
irsensor.resume(); // для того, щоб можна було зчитати наступний натиск
}
//значення змінної 0 - 200
ledrise = constrain(ledrise, 0, 200);
// робимо умову виводу стану реле
if (relayflug == 1) {
lcd.setCursor(6, 1);
lcd.print("relay on");
}
else {
lcd.setCursor(6, 1);
lcd.print("relay off");
}
// робимо умову виводу стану світлодіода
if (ledrise == 0) {
lcd.setCursor(6, 2);
lcd.print("led off");
}
else {
lcd.setCursor(6, 2);
lcd.print("led on");
}
}