Тема: Как мой дом начал "умнеть". Управление светом с пульта от ТВ
Что было куплено:
Arduino Leonardo
Модуль реле
Цифровой IR-приемник
Диоды 5630 на радиаторе - 1м
Мосфет STP16NF06
Что было сделано:
Подключаем ИК-приемник к дуньке по такой схеме
Загружаем скетч для чтения кнопок пульта
#include <IRremote.h>
int RECV_PIN = 3; //пин подключения IR приёмника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(7,OUTPUT);
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value);
irrecv.resume(); // Receive the next value
}
}
Для себя отыскал четыре кнопки, которые телевизор не использует.
Далее подключил через модуль реле питание к люстре, через мосфет подключил диодную планку (освещение рабочего стола)
Назначил кнопки в коде
#include <IRremote.h>
#define LEDPIN 5
#define FADESPEED 20 // чем выше число, тем медленнее будет fade-эффект
int RECV_PIN = 3; //пин подключения IR приёмника
int RELAY_PIN = 7; //пин подключения реле
IRrecv irrecv(RECV_PIN);
decode_results results;
bool LampState = false;
bool LedState = false;
int fadeled = 153;
void setup()
{
pinMode(RELAY_PIN,OUTPUT);
digitalWrite(RELAY_PIN,HIGH);
pinMode(LEDPIN, OUTPUT);
irrecv.enableIRIn(); // Включаем ресивер
}
void loop()
{
int r;
if (irrecv.decode(&results))
{
if (results.value == 551505585) //Код кнопки
{
LampState = !LampState;
if (LampState)
{
digitalWrite(RELAY_PIN,HIGH);
}
else
{
digitalWrite(RELAY_PIN,LOW);
}
}
if (results.value == 551521905) //Код кнопки
{
LedState = !LedState;
if (LedState)
{
for (r = 0; r < 256; r++) {
analogWrite(LEDPIN, r);
delay(FADESPEED);
}
fadeled = 255;
}
else
{
for (r = 255; r > -1; r--) {
analogWrite(LEDPIN, r);
delay(FADESPEED);
}
}
}
if (results.value == 551519355 && fadeled <=204) //Поднимаем яркость
{
for (r = fadeled; r < fadeled+51; r++) {
analogWrite(LEDPIN, r);
delay(FADESPEED);
}
fadeled = fadeled+51;
}
if (results.value == 551528790 && fadeled >=102) //Уменьшаем яркость
{
for (r = fadeled; r > fadeled-51; r--) {
analogWrite(LEDPIN, r);
delay(FADESPEED);
}
fadeled = fadeled-51;
}
irrecv.resume(); // Получаем следующее значение
}
}
Получилось включение\выключение света в комнате, включение\выключение освещение рабочей зоны (стола) + регулировка яркости.
Если будет интересно могу расписать подробней и со схемами.