Arduino управление на светлината с дистанционно управление

Как да управлявате осветлението в стая с помощта на дистанционно управление, например от телевизор.

Необходима функционалност :

1) Възможност за управление на превключвателя с помощта на домакинско IR дистанционно управление (38kHz, повечето от тях, имам от телевизионен тунер Beholder M6). 2) Включете/изключете светлината, както от ключа, така и от дистанционното управление, независимо едно от друго.

Първо, трябва да разберем кодовете на бутоните за дистанционно управление, които искаме да използваме за управление на осветлението.

За да направите това, попълнете следната скица в паметта на Arduino, свържете TSOP1138 IR приемника към него (разводката му е по-долу на снимката) и когато натиснете бутоните на дистанционното управление, в монитора на порта гледаме какъв код има бутонът:

Забележка: За да компилирате кода, трябва да добавите библиотеката IRRemote към Arduino IDE

Фърмуер (работи при мен, под дистанционното управление от телевизионния тунер Beholder M6):

Преди да качим скицата в Arduino, заместваме кода на бутона, който съдържа кода на бутона в реда (с този, който сте записали по-рано):

if (results.value == 1641453671) //Код на бутон

Самата скица

int RECV_PIN = 11; // свързващ щифт на IR приемник int RELAY_PIN1 = 8; //извод за свързване на реле1 int BUTTON_PIN1 = A5; //превключване на pin1 int RELAY_PIN2 = 7; //извод за свързване на реле2 int BUTTON_PIN2 = A4; //превключете pin2

IRrecv irrecv(RECV_PIN); decode_results резултати; bool LampState = невярно; неподписано дълго време = millis(); int lastButtonState; int lastButtonState2; bool LampState2 = невярно;

void setup() pinMode(RELAY_PIN1, OUTPUT); pinMode(BUTTON_PIN1, INPUT); digitalWrite(RELAY_PIN1, LOW); digitalWrite(BUTTON_PIN1, HIGH); irrecv.enableIRIn(); // Включване на приемника lastButtonState = digitalRead(BUTTON_PIN1); pinMode(RELAY_PIN2, OUTPUT); pinMode(BUTTON_PIN2, INPUT); digitalWrite(RELAY_PIN2, LOW); digitalWrite(BUTTON_PIN2, HIGH); lastButtonState2 = digitalRead(BUTTON_PIN2); >

void loop() if ((digitalRead(BUTTON_PIN1)==LOW) && (milis() - време > 500)) LampState = !LampState; ако (LampState) digitalWrite(RELAY_PIN1,HIGH); > друго digitalWrite(RELAY_PIN1,LOW); > време = millis(); lastButtonState=digitalRead(BUTTON_PIN1); >

if ((digitalRead(BUTTON_PIN2)==LOW) && (milis() - време > 500)) LampState2 = !LampState2; ако (LampState2) digitalWrite(RELAY_PIN2,HIGH); > друго digitalWrite(RELAY_PIN2,LOW); > време = millis(); lastButtonState2=digitalRead(BUTTON_PIN2); >

if (irrecv.decode(&results)) if (results.value == 1641453671) //Код 1 бутона ИКпулта LampState = !LampState; ако (LampState) digitalWrite(RELAY_PIN1,HIGH); > друго digitalWrite(RELAY_PIN1,LOW); > > if (results.value == 1641465911) //Код 2 кнопки ИКпулта LampState2 = !LampState2; ако (LampState2) digitalWrite(RELAY_PIN2,HIGH); > друго digitalWrite(RELAY_PIN2,LOW); > > irrecv.resume(); // Получаваме следващо значение > >

Работата се проверяваше с Arduino IDE v1.0.5

Бележка: За компилиране на код трябва да добавите библиотеката IRRemote в Arduino IDE

светлината

Разпакуйте този файл в каталог с библиотеки, например C:\electronics\arduino-1.0.5\libraries. Ако името на библиотеката ви изглежда твърде дълго, можете да я преименувате, допустимо, в IR.

Добавляем библиотеку към скетчу :

В новия скет изберете Sketch->Импортиране на библиотека->IR

arduino

Операция на превключване:

Когато захранването е включено, лампите първоначално не светят. Всеки път, когато натиснете зададените бутони на дистанционното управление, то ще се включва/изключва,

Схема на превключвателя:

arduino

Кореспонденция на пин Atmega328P-PU към Arduino Uno R3: