Преобразуем сигнал одного пульта на сигнал другого через Arduino

Допустим Вы потеряли пульт управления от ТВ, но у Вас есть любой другой пульт – тогда берём Ардуино (Arduino) и прошиваем его следующим кодом.

Для примера у меня есть пульт от телевизора “Витязь” и я хочу управлять через него – ТВ тюнером Soundmax, вот их коды, которые я также считал с помощью Ардуино – для этого мне помогла запись – “микроник.рус/8046/” (“IR (инфракрасный сигнал): Читаем данные с пульта и передаём их”).

Vityaz RC29 от ТВ Vityaz
вкл/выкл – 4FB4AB5
звук+ – 4FB40BF
звук- – 4FB906F
звук вкл/выкл – 4FBCA35
каналы+ – 4FBC03F
каналы- – 4FB827D
меню – 4FB609F
кнопка вверх – 4FBE21D
кнопка вниз – 4FBB24D
кнопка влево – 4FB926D
кнопка вправо – 4FBD22D
кнопка ок – 4FB52AD
кнопка источники – 4FB728D
кнопка сна – 4FBF807
кнопка выход – 4FB50AF

Soundmax от ТВ тюнера SM-DVBT271
вкл/выкл – FF9A65
звук+ – FFD827
звук- – FF5AA5
звук вкл/выкл – FF9867
каналы+ – FF609F
каналы- – FF6897
меню – FFA25D
кнопка вверх – FF609F
кнопка вниз – FF6897
кнопка влево – FF5AA5
кнопка вправо – FFD827
кнопка ок – FF58A7
кнопка usb – FFAA55
кнопка выход – FFA05F

Давайте сделаем так нажимаем на пульте от ТВ Витязь кнопку звук+ (4FB40BF), Ардуино посылает код от пульта Soundmax от ТВ тюнера от кнопки звук+ (FFD827), аналогично с кнопками звук-.

Вот код для Arduino Nano:

#include <IRremote.h>

IRrecv irrecv(11); // указываем вывод, к которому подключен приемник
IRsend irsend;
decode_results results;

unsigned long lastPressedKey = 0;

void setup() {
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin"); } 

void loop() {
  if ( irrecv.decode( &results )) { // если данные пришли
    Serial.println(results.value, HEX);
    unsigned long keyCode = results.value;
    irrecv.resume();
    if (keyCode == REPEAT)
    {
      keyCode = lastPressedKey; // пришел код ПОВТОРЕНИЕ, значит нужно сделать вид что еще раз нажали предыдущую клавишу.
    }
    else
    {
      lastPressedKey = keyCode; // запоминаем код реальной клавиши, для последующего повторения
    }
    if (keyCode == 0x4FB40BF) { //код моей кнопки
      irsend.sendNEC(0xFFD827, 32); // Отправка кода NEC
      irrecv.enableIRIn(); // запускаем прием
    }
    else if (keyCode == 0x4FB906F) { //код моей кнопки
      irsend.sendNEC(0xFF5AA5, 32); // Отправка кода NEC
      irrecv.enableIRIn(); // запускаем прием
    }
  }
}

Вот так выглядит моё устройство:

Соединение с Ардиуно следующее:

Светодиод инфракрасный (IR).

Добавить комментарий