#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#define PIN_RECEIVER 2
IRrecv receiver(PIN_RECEIVER);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int A = 0;
int B = 0;
int total = 0;
bool inputA = true;
void setup() {
lcd.begin(16, 2);
lcd.backlight(); // Nyalakan lampu latar LCD
lcd.print("<press a button>");
receiver.enableIRIn(); // Mulai receiver
}
void loop() {
if (receiver.decode()) {
translateIR();
receiver.resume(); // Terima sinyal berikutnya
}
}
void lcdPrint(const char* text) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(text);
lcd.setCursor(0, 1);
lcd.print("A: ");
lcd.print(A);
lcd.print(" B: ");
lcd.print(B);
}
void translateIR() {
// Variabel sementara untuk menyimpan input angka
int inputNum = -1;
switch (receiver.decodedIRData.command) {
case 48: inputNum = 1; break; // Remote angka 1
case 24: inputNum = 2; break; // Remote angka 2
case 122: inputNum = 3; break; // Remote angka 3
case 16: inputNum = 4; break; // Remote angka 4
case 56: inputNum = 5; break; // Remote angka 5
case 90: inputNum = 6; break; // Remote angka 6
case 66: inputNum = 7; break; // Remote angka 7
case 74: inputNum = 8; break; // Remote angka 8
case 82: inputNum = 9; break; // Remote angka 9
case 104: inputNum = 0; break; // Remote angka 0
case 2: // Tombol untuk pindah input ke B
inputA = false; // Beralih ke input B
lcdPrint("Now Input B");
return;
case 34: // Tombol "TEST" untuk menampilkan hasil
total = A + B; // Hitung jumlah A + B
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Result: ");
lcd.print(total); // Menampilkan hasil total
return;
case 194: // Tombol untuk menghapus semua
A = 0;
B = 0;
total = 0; // Reset semua nilai
inputA = true; // Reset input ke A
lcdPrint("Values Reset!");
return;
default:
lcd.clear();
lcd.print("Unknown button");
return;
}
// Jika tombol angka ditekan, tambahkan digit ke A atau B
if (inputA) {
A = A * 10 + inputNum; // Menambahkan digit ke A
lcdPrint("A: Updated");
} else {
B = B * 10 + inputNum; // Menambahkan digit ke B
lcdPrint("B: Updated");
}
}