В этом проекте я расскажу, как управлять светодиодной подсветкой при помощи ТВ пульта и Arduino. Эту инструкцию можно использовать для управления практически любой электроникой в доме. Также расскажу основы работы инфракрасного ИК приемника и передатчика, и как их подружить. Начинаем крафтить!
Нам понадобится
- Arduino
- Макетная плата
- Резистор 2k — 2шт.
- Конденсатор 10 мкФ — 1шт.
- Транзистор IRLZ44N N-channel MOSFET 1 шт.
- Светодиодная лента RGB
- Блок питания 12В
Принципиальная схема
Программируем Arduino
Для работы с инфракрасным приемником, существует специальная библиотека с готовым скетчем IRremote.
Подключение ИК приемника к Arduino
Ищем в поисковике datasheet (техническое описание) инфракрасного приемника, для того, чтобы правильно его подключить.
Согласно datasheet, подключаем ИК приемник к Arduino. Между землей и питанием желательно добавить емкость 100µF, но и без нее все будет работать.
- VCC — ножка питания, на нее подаем 5В
- GND — земля, соединяем с соответствующим пином на плате Arduino
- OUT — ножка управления, подключаем с указанным в программе пином (в данном примере №11)
Загружаем скетч Файл — Образцы — IRremote — IRrecvDemo в Arduino. После чего открываем инструменты — монитор последовательного порта и нажимаем кнопки на пульте ДУ от телевизора. Если вы видите HEX код кнопок, значит все получилось.
Управление светодиодом ИК приемником
Правим код
Давайте добавим немного кода, для управления светодиодом.
В строчке if (results.value==0x20DF0DF2) — вместо значения 20DF0DF2 указать значение кнопки, которую вы хотите использовать для управления светодиодом, предварительно посмотрев это значение в мониторе последовательного порта.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/
#include <IRremote.h>
int before;
int out=9;
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
before=0;
pinMode(out, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value==0x20DF0DF2){
if (before==0){
digitalWrite(out, HIGH);
before=1;
}
else{
digitalWrite(out, LOW);
before=0;
}}
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}
|
Добавим в схему светодиод
- катод можно объединить с землей ИК приемника
- на анод подать управляющий сигнал с пина №9 (как указано в коде int out=9).
- не забываем о резисторе 220Ом
Вот и все, теперь наш ТВ пульт может управлять светодиодом.
Изменение яркости светодиода ТВ пультом
Давайте отредактируем код программы и добавим еще две кнопки, которые будут изменять яркость светодиода. Принцип тот же, добавим лишь функцию изменения яркости.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <IRremote.h>
int bright;
int before;
int out=9; // подключение LED к 9 пину
int steps=5; // шаг изменения яркости
int RECV_PIN = 11; // сигнальный контакт ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
irrecv.enableIRIn(); // запуск приемника
before=0; // LED изначально отключен
bright=255; // максимальная яркость 255 значений
pinMode(out,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value==0x20DF0DF2){ // включение/отключение светодиода
if(before==0){ // если светодиод отключен, то включаем его
digitalWrite(out,HIGH);
before=1; // LED включен
}
else{
digitalWrite(out,LOW); // если светодиод включен, то вылючаем его
before=0;
bright=255;
}}
if (results.value==0x20DFF10E && before==1){ // уменьшение яркости
if(bright-255/steps<0){
analogWrite(out,bright);
}
else{
bright=bright-255/steps;
analogWrite(out,bright);
}}
if (results.value==0x20DF718E && before==1){ // увеличение яркости
if(bright+255/steps>255){
analogWrite(out,bright);
}
else{
bright=bright+255/steps;
analogWrite(out,bright);
}}
irrecv.resume();
}}
|
Управление светодиодной лентой при помощи ТВ пульта
С одним светодиодом разобрались, а как же управлять светодиодной лентой, которая потребляет 14.4 Вт на 1 метр? Для этого нам и понадобится транзистор, который предназначен для управления большой нагрузкой.
Заключение
Вот мы и научились управлять светом при помощи ТВ пульта. Используя эту инструкцию можно управлять любой электроникой при помощи ИК приемника и ИК пульта управления.