#include <LiquidCrystal_I2C.h>

#include <IRremote.hpp>
#define IR_RECEIVE_PIN 14
LiquidCrystal_I2C lcd(0x27, 16, 2);
int flag = 0;

uint16_t readValue (){
  uint16_t received{0};
  
  if (IrReceiver.decode()) {
    received = IrReceiver.decodedIRData.command;
    Serial.println(received);
    flag = 1;
    IrReceiver.resume();
  }

  return received;
}

String decoder(String value) {
  if (value == "162") {
    lcd.print("ON");
    return value;
    
  } else if (value == "226") {
    lcd.print("MENU");
    return value;
  }
  else if (value == "34")
  {
    lcd.print("TEST"); 
    return value;
  }
  else if (value == "2")
  {
    lcd.print("Volume Up"); 
    return value;
    }
  else if (value == "194")
  {
    lcd.print("Back"); 
    return value;
    }
  else if (value == "224")
  {
    lcd.print("Prev"); 
    return value;
    }
  else if (value == "168")
  {
    lcd.print("Play"); 
    return value;
    }
  else if (value == "144")
  {
    lcd.print("Next"); 
    return value;
    }
  else if (value == "104")
  {
    lcd.print("0"); 
    return value;
    }
  else if (value == "152")
  {
    lcd.print("Volume Down"); 
    return value;
    }
  else if (value == "176")
  {
    lcd.print("Reset"); 
    return value;
    }
  else if (value == "48")
  {
    lcd.print("1"); 
    return value;
    }
  else if (value == "24")
  {
    lcd.print("2"); 
    return value;
    }
  else if (value == "122")
  {
    lcd.print("3"); 
    return value;
    }
  else if (value == "16")
  {
    lcd.print("4"); 
    return value;
    }
  else if (value == "56")
  {
    lcd.print("5"); 
    return value;
    }
  else if (value == "90")
  {
    lcd.print("6"); 
    return value;
    }
  else if (value == "66")
  {
    lcd.print("7"); 
    return value;
    }
  else if (value == "74")
  {
    lcd.print("8"); 
    return value;
    }
  else if (value == "82")
  {
    lcd.print("9"); 
    return value;
    }
   else {
    lcd.print("Value not found");
    return value;
  }
  
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);

  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
}

void loop() {

  String new_value = String(readValue());
  // Serial.println(new_value);
  if(new_value != "0"){
    // Serial.println("ada data masuk");
    while (flag == 1){
      lcd.clear();
      decoder(new_value);
      flag = 0;
    }
  }
}