Подменяем пульт дистанционного управления при помощи Arduino

Идея в том, чтобы сделать устройство, которое при получении команды с «левого» пульта ДУ отправляла необходимую для техники команду.

ниже код из видео

Схема подключения:

позже


Код:

#include <IRremote.h>
  

#define POWER_KEY 0x40BF00FF // коды пульта ДУ
#define VOLM 0x40BF7887
#define VOLP 0x40BFF807
#define CHP  0xC03FC03F
#define CHM  0xC03F40BF
 
#define SONY_POWER_KEY 0xA90  
#define SONY_VOLM 0xC90
#define SONY_VOLP 0x490
#define SONY_CHP 0x90
#define SONY_CHM 0x890
 

int RECV_PIN = 11;
 
IRrecv irrecv(RECV_PIN);         // приемник, на 11 ногу
IRsend irsend;                   // светодиод, для UNO по умолчанию на 3 ногу

decode_results results;

void setup() {
  Serial.begin(9600);
  
  pinMode(12, OUTPUT);          // питание приемника
  pinMode(13, OUTPUT);
  digitalWrite(12, LOW);
  digitalWrite(13, HIGH);
  
  irrecv.enableIRIn(); // Start the receiver

  
  
}

void loop() {
  
   if (irrecv.decode(&results)) {                                              // если пришла команда
    Serial.println(results.value, HEX);                                        // для отладки
     irsend.enableIROut(38);                                                   // включаем перечу на 38кгц (хз сколько там по умолчанию)
     delay(10);                                                
     for (int i = 0; i < 3; i++) {                                             // в цикле, который крутится 3 раза
        if (results.value == POWER_KEY) irsend.sendSony(SONY_POWER_KEY, 12);   // сверяем команду и если совпала отправляем от сони
        else if (results.value == VOLM) irsend.sendSony(SONY_VOLM, 12);        //// техника сони понимает только с третьего раза
        else if (results.value == VOLP) irsend.sendSony(SONY_VOLP, 12);
        else if (results.value == CHP) irsend.sendSony(SONY_CHP, 12); 
        else if (results.value == CHM) irsend.sendSony(SONY_CHM, 12); 
        delay(40);
     }
    irrecv.resume();                                                            // Receive the next value                            
    irrecv.enableIRIn();                                                        // после отправки нужно заного включить прием 
  }
    

}