#include <IRremote.hpp>
void setup() {
  Serial.begin(115200);
  IrReceiver.begin(D9); //set pin and initialize the receiver
  pinMode(D2, OUTPUT);
  pinMode(D3, OUTPUT);
  pinMode(D4, OUTPUT);
  pinMode(D10, INPUT_PULLUP); //set as INPUT_PULLUP, which mean active the pullup resistor inside the microcontroller, avoiding the short circuit when the button is pressed.
}
void loop() {
  if (IrReceiver.decode()) { //do something when signal reveived
    translateIR(); //pair the signal to the result
    IrReceiver.resume(); //move on to the next signal
  }
}
void translateIR() {
  // Takes command based on IR code received
  // The case code can be checked by the datasheet of the receiver: https://docs.wokwi.com/parts/wokwi-ir-remote
  switch (IrReceiver.decodedIRData.command) {
    case 162: //Power button
      Serial.println("Off");
      digitalWrite(D2, LOW);
      digitalWrite(D3, LOW);
      digitalWrite(D4, LOW);
      break;
    case 48: //Button 1
      Serial.println("num: 1");
      digitalWrite(D2, HIGH);
      break;
    case 24: //Button 2
      Serial.println("num: 2");
      digitalWrite(D3, HIGH);
      break;
    case 122: //Button 3
      Serial.println("num: 3");
      digitalWrite(D4, HIGH);
      break;
  }
}