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

#define PIN_RECEIVER 2

IRrecv receiver(PIN_RECEIVER);
decode_results results;
LiquidCrystal lcd(12,11,10,9,8,7);

int nilaiA;
int nilaiB;
int jumlah;

void setup() {
  Serial.begin(115200);
  lcd.begin(16,2);
  receiver.enableIRIn();
  lcd.print("Studi Independen");
  delay(1500);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Aplikasi");
  lcd.setCursor(0,1);
  lcd.print("Penjumlahan");
  delay(700);
  lcd.clear();
}

void loop() {
  lcd.setCursor(0,0);
  lcd.print("A: ");
  lcd.print(nilaiA);
  lcd.setCursor(8,0);
  lcd.print("B: ");
  lcd.print(nilaiB);
  lcd.setCursor(0,1);
  lcd.print("Jumlah: ");
  lcd.print(jumlah);

  if (receiver.decode()) {
      long int deCode = receiver.decodedIRData.command;

    if(deCode == 2){ //Tombol '+'
      jumlah = nilaiA+nilaiB;
      nilaiA = 0;
      nilaiB = 0;
      }

      switch (deCode) {
        case 48: //tombol 1
        if (nilaiA == 0) {
          lcd.clear();
          nilaiA = 1;
          lcd.print("1");
        }
        else {
          lcd.clear();
          nilaiB = 1;
          lcd.print("1");
        }
        break;

        case 24: //tombol 2
        if (nilaiA == 0) {
          nilaiA = 2;
          lcd.clear();
          lcd.print("2");
        } else {
          nilaiB = 2;
          lcd.clear();
          lcd.print("2");
        }
        break;

        case 122: //Tombol 3
        if (nilaiA == 0) {
          nilaiA = 3;
          lcd.clear();
          lcd.print("3");
        } else {
          nilaiB = 3;
          lcd.clear();
          lcd.print("3");
        }
        break;

        case 16: //Tombol 4
        if (nilaiA == 0) {
          nilaiA = 4;
          lcd.clear();
          lcd.print("4");
        } else {
          nilaiB = 4;
          lcd.clear();
          lcd.print("4");
        }
        break;

        case 56: //Tombol 5
        if (nilaiA == 0) {
          nilaiA = 5;
          lcd.clear();
          lcd.print("5");
        } else {
          nilaiB = 5;
          lcd.clear();
          lcd.print("5");
        }
        break;

        case 90: //Tombol 6
        if (nilaiA == 0) {
          nilaiA = 6;
          lcd.clear();
          lcd.print("6");
        } else {
          nilaiB = 6;
          lcd.clear();
          lcd.print("6");
        }
        break;

        case 66: //Tombol 7
        if (nilaiA == 0) {
          nilaiA = 7;
          lcd.clear();
          lcd.print("7");
        } else {
          nilaiB = 7;
          lcd.clear();
          lcd.print("7");
        }
        break;

        case 74: //Tombol 8
        if (nilaiA == 0) {
          nilaiA = 8;
          lcd.clear();
          lcd.print("8");
        } else {
          nilaiB = 8;
          lcd.clear();
          lcd.print("8");
        }
        break;

        case 82: //Tombol 9
        if (nilaiA == 0) {
          nilaiA = 9;
          lcd.clear();
          lcd.print("9");
        } else {
          nilaiB = 9;
          lcd.clear();
          lcd.print("9");
        }
        break;
      }
      receiver.resume();
  }
  }