Emissão de Infravermelho para o Loop

Você pode tentar isso

#include <IRremote.h>

const byte IR_RECEIVE_PIN = 2;
const byte IR_SEND_PIN = 13;
const byte pinoRele = 3;


const unsigned int teclaA[] = {
  9150, 4450, 600, 550, 550, 550, 600, 550, 600, 500,
  600, 550, 550, 550, 600, 550, 550, 550, 600, 1650,
  600, 1600, 600, 500, 650, 1600, 600, 1600, 600, 1600,
  650, 1600, 600, 1600, 600, 550, 600, 500, 600, 1650,
  600, 500, 600, 550, 600, 500, 600, 1600, 650, 500,
  600, 1600, 600, 1650, 600, 500, 600, 1600, 650, 1600,
  600, 1600, 600, 550, 600, 1600, 600
};
const byte teclaALen = sizeof teclaA / sizeof teclaA[0];

void volumeUP() {
  Serial.println(F("Aumentando o volume do Som"));
  IrReceiver.stop();
  IrSender.sendRaw(teclaA, teclaALen, 38);
  IrReceiver.start();
}

void releOn() { // Ligando a Luz
  Serial.println(F("Ligando a Luz"));
  digitalWrite(pinoRele, HIGH);
}

void releOff() { // Desligando Lampada
  Serial.println(F("Desligando Lampada"));
  digitalWrite(pinoRele, LOW);
}

void setup() {
  pinMode(pinoRele, OUTPUT);
  digitalWrite(pinoRele, LOW);
  Serial.begin(115200);
  IrReceiver.begin(IR_RECEIVE_PIN);
  IrSender.begin(IR_SEND_PIN, DISABLE_LED_FEEDBACK);
  IrReceiver.start();
}

void loop() {

  if (IrReceiver.decode()) {
    if (((IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT) == 0) && (IrReceiver.decodedIRData.command != 0)) {
      Serial.print(F("Command: 0x")); Serial.println(IrReceiver.decodedIRData.command, HEX);
      switch (IrReceiver.decodedIRData.command) {
        case 0xFFA857: volumeUP();  break;  // Aumentando o volume do Som
        case 0xFFE21D: releOn();    break;  // Ligando a Luz
        case 0xFFA25D: releOff();   break;  // Desligando Lampada
        default: break;
      }
    }
    IrReceiver.resume();
  }
}

você tem que mudar as conexões:

  • IR_RECEIVE_PIN = 2
  • IR_SEND_PIN = 13
  • pinoRele = 3

você tem que adaptar os códigos de comando para o que você verá impresso, já que a nova API oferece algo diferente

        case 0xFFA857: volumeUP();  break;  // Aumentando o volume do Som
        case 0xFFE21D: releOn();    break;  // Ligando a Luz
        case 0xFFA25D: releOff();   break;  // Desligando Lampada

o monitor serial deve ser aberto em 115200 baud

1 Like