Перехват кодов с пульта управления (IR)
Необходимые элементы
Схема подключения
Подключать можно к любому цифровому пину

Написание кода
Для получения кодов нам потребуется библиотека IRremote. Попробуем набросать небольшой код, читающий коды от пульта (к примеру от TV)
#include <IRremote.h>
IRrecv irrecv(2);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn(); // запускаем прием
}
void loop(){
// если данные пришли
if (irrecv.decode(&results)) {
// выводим полученное значение
Serial.println( results.value, HEX );
// принимаем следующую команду
irrecv.resume();
}
}
При запуске и нажатии различных кнопок на пульте в Serial Monitor будет отображаться различные коды.

После получения нужных кодов, я взял два кода увеличение громкости и уменьшение. При увеличении я буду зажигать диод на плате, при уменьшение отключать. Далее остается только модернизировать код следующим образом:
#include <IRremote.h>
IRrecv irrecv(3);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn(); // запускаем прием
}
void loop(){
if (irrecv.decode(&results)) { // если данные пришли
Serial.println( results.value, HEX ); // выводим полученное значение
switch ( results.value ) {
case 0x20DF40BF:
digitalWrite( 13, HIGH );
break;
case 0x20DFC03F:
digitalWrite( 13, LOW );
break;
}
irrecv.resume(); // принимаем следующую команду
}
}
В качестве домашнего задания можно сделать включение и отключение 3х цветного диода при нажатии на кнопки 1,2,3. Отдельно задание на логику, хранить состояние пинов на которых работают светодиоды в отдельных переменных нельзя
Last updated
Was this helpful?