#include <IRremote.h>
#include <LiquidCrystal.h>

#define PIN_RECEIVER 2   // Signal Pin of IR receiver

IRrecv receiver(PIN_RECEIVER);

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

int inputA = 0;
int inputB = 0;
int hasil;
int tambah(int _satu, int  _dua) {
  return _satu + _dua;
}


void setup()
{
  Serial.begin(115200);
  lcd.begin(16, 2);
  lcd.print("Kalkulator IR");
  receiver.enableIRIn(); // Start the receiver
}

void loop()
{
  // Checks received an IR signal
  if (receiver.decode()) {
    translateIR();
    receiver.resume();  // Receive the next value

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Kalkulator IR");
    lcd.setCursor(0, 1);
    lcd.print(inputA);
    lcd.setCursor(2, 1);
    lcd.print("+");
    lcd.setCursor(4, 1);
    lcd.print(inputB);
    lcd.setCursor(6, 1);
    lcd.print("=");
    lcd.setCursor(8, 1);
    lcd.print(hasil);
  }
}

void translateIR()
{
  // Takes command based on IR code received
  switch (receiver.decodedIRData.command) {
    case 2:
      inputB = inputA;
      inputA = 0;
      break;
    case 168:
      hasil = inputA + inputB;
      break;
    case 176:
      inputA = 0;
      inputB = 0;
      hasil = 0;
      break;
    case 104:
      inputA = 0;
      break;
    case 48:
      inputA = 1;
      break;
    case 24:
      inputA = 2;
      break;
    case 122:
      inputA = 3;
      break;
    case 16:
      inputA = 4;
      break;
    case 56:
      inputA = 5;
      break;
    case 90:
      inputA = 6;
      break;
    case 66:
      inputA = 7;
      break;
    case 74:
      inputA = 8;
      break;
    case 82:
      inputA = 9;
      break;
  }
}