#include <IRremote.h>
#include <LiquidCrystal_I2C.h>
#define IrPin 4
IRrecv irrecv(IrPin);
LiquidCrystal_I2C lcd(0x27, 16, 2); // параметри ЛСД
int rele = 9;
int led = 6;
int level = 0;
int flug = 0;
void setup() {
Serial.begin(9600); // ком порт
irrecv.enableIRIn(); // запуск прийому даних ІЧ датчика
lcd.init(); // увімкн. ЛСД
lcd.backlight(); // підсвітка
pinMode(rele, OUTPUT);
pinMode(led, OUTPUT);
lcd.setCursor(0, 1);
lcd.print("rele off");
}
void loop() {
if (irrecv.decode()) { // якщо є вхідні дані, то відповідно до номіналу змінної irrecv.decodedIRData.command виконати дію
switch (irrecv.decodedIRData.command) {
case 2:
lcd.clear(); // очистити ЛСД
lcd.print("Plus"); // вивест напис
level = level + 50; // збільшити змінну на 50
break; // вихід
case 152:
lcd.clear();
lcd.print("Minus");
level = level - 50; // зменшити змінну на 50
break;
case 104:
lcd.clear();
lcd.print("0");
flug = 0;
digitalWrite(rele, LOW); // подати низький рівень сигналу на реле
break;
case 48:
lcd.clear();
lcd.print("1");
flug = 1;
digitalWrite(rele, HIGH);// подати високий рівень сигналу на реле
break;
}
irrecv.resume(); // для того, щоб можна було зчитати наступний натиск
}
level = constrain(level, 0, 250); // обмежимо значення змінної
analogWrite(led, level); // подати шім сигнал
if (level == 0) {
lcd.setCursor(9, 1);
lcd.print("led off");
}
else {
lcd.setCursor(9, 1);
lcd.print("led on");
}
if (flug == 1) {
lcd.setCursor(0, 1);
lcd.print("rele on");
}
else {
lcd.setCursor(0, 1);
lcd.print("rele off");
}
}