Arduino + инфракрасный приемник TSOP

Давно уже собирался и вот нашел время для этого поста. Сегодня хочу поделиться своим опытом подключения инфракрасного приемника TSOP 31236 к Arduino Uno. В качестве передатчика я использовал инфракрасный (ИК) пульт, который первым попал мне в руки (вообще можно брать любой ИК пульт). Приемник и пульт приведены на рис. 1.

IR_TSOP
Рисунок 1 – ИК пульт і приемник TSOP 31236




Подготовка к работе Arduino с ИК приемником

Для того, чтобы Arduino хорошо работала с ИК пультом и приемником, нам понадобится библиотека IRremote.
Управление осуществляется путем передачи инфракрасным пультом команд ИК приемнику. Каждая кнопка пульта имеет свой шестнадцатеричный код. Поэтому при нажатии определенной кнопки, приемнику направляется код, соответствующий этой кнопке. Наша первоочередная задача состоит в том, чтобы узнать какой код какой кнопке соответствует. И тогда мы сможем написать скетч для Arduino, программируя конкретную кнопку пульта на конкретное действие.

Для этого подключим наш приемник к Aduino (первый вывод –> земля, второй вывод –> питание Arduino 3.3 В, третий –> цифровой контакт 11 Arduino)

arduino_tsop_connect
Рисунок 2 – Подключение TSOP к Arduino

Заливаем на Arduino скетч для отображения кодов кнопок.

#include

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Запуск приемника
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Получить следующее значение
}
}

Теперь определим коды кнопок, чтобы использовать эти коды для дальнейшего программирования конкретной кнопки на выполнение определенного действия Arduino. Просто открываем Serial Monitor , наставляем пульт в сторону приемника, нажимаем кнопки и запоминаем коды кнопок.
В моем случае кнопки R-красная, G-зеленый и B-синяя имеют коды соответственно FF906F, FF10EF и FF50AF, ведь нажав красную кнопку, зеленую, а потом синюю, я увидел это в Serial Monitor:

rgb

Теперь можем запрограммировать Arduino. Например реализуем управления разноцветными светодиодами. При нажатии красной кнопки должен включаться / выключаться красный светодиод, зеленой – зеленый, а синей – синий.

#include

int RECV_PIN = 11;

int red = 5;
int green = 6;
int blue = 7;

int redStat = 0;
int greenStat = 0;
int blueStat = 0;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Запуск приемника
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);

}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value);

//красный
if (results.value == 0xFF906F && redStat == 0)
{
digitalWrite(red, HIGH);
redStat = 1;
}
else
if (results.value == 0xFF906F && redStat == 1)
{
digitalWrite(red, LOW);
redStat = 0;
}

//зеленый
if (results.value == 0xFF10EF && greenStat == 0)
{
digitalWrite(green, HIGH);
greenStat = 1;
}
else
if (results.value == 0xFF10EF && greenStat == 1)
{
digitalWrite(green, LOW);
greenStat = 0;
}

//синий
if (results.value == 0xFF50AF && blueStat == 0)
{
digitalWrite(blue, HIGH);
blueStat = 1;
}
else
if (results.value == 0xFF50AF && blueStat == 1)
{
digitalWrite(blue, LOW);
blueStat = 0;
}

irrecv.resume(); // Получить слудующее значение
}
}

Светодиоды какиее дома нашел – такие и использовал 😉

ir_arduino_led

В результате имеем:

Оставить ответ

Обязательные поля помечены*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.