#include <IRremote.h> // Library IR remote
#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library LCD I2C
// Melakukan pendeklarasian variabel
int Receiver = 15; // Pin IR Receiver pada ESP32
int A = 0;
int B = 0;
int Result;
int nilai;
// Inisialisasi IR receiver
IRrecv irrecv(Receiver);
decode_results results;
// Inisialisasi LCD I2C (alamat 0x27, ukuran 16x2)
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600); // Berkomunikasi dengan PC atau komputer
irrecv.enableIRIn(); // Aktifkan IR receiver
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan backlight LCD
}
void loop() {
if (irrecv.decode()) {
lcd.clear();
button(); // Panggil fungsi button untuk deteksi input
if (A == 0) {
A = nilai; // Assign nilai pertama ke A
} else {
B = nilai; // Assign nilai kedua ke B
}
// Tampilkan operasi penjumlahan
lcd.setCursor(0, 0);
lcd.print(A);
lcd.print("+");
lcd.print(B);
lcd.print("=");
lcd.setCursor(0, 1);
if (A > 0 && B > 0) {
Result = A + B;
}
Serial.print("Nilai A = ");
Serial.println(A);
Serial.print("Nilai B = ");
Serial.println(B);
Serial.print("Hasil Penjumlahan A + B = ");
Serial.println(Result);
// Tampilkan hasil dengan "TOTAL ="
lcd.setCursor(0, 1);
lcd.print("TOTAL=");
lcd.print(Result); // Tampilkan hasil pada LCD
irrecv.resume(); // Reset IR untuk menerima input berikutnya
}
}
// Fungsi untuk inputan dari remote
void button() {
int inputan = irrecv.decodedIRData.command;
// Mapping tombol remote ke nilai
switch (inputan) {
case 48: nilai = 1; break;
case 24: nilai = 2; break;
case 122: nilai = 3; break;
case 16: nilai = 4; break;
case 56: nilai = 5; break;
case 90: nilai = 6; break;
case 66: nilai = 7; break;
case 74: nilai = 8; break;
case 82: nilai = 9; break;
case 34: // Reset semua nilai jika tombol reset ditekan
Result = 0;
A = 0;
B = 0;
nilai = 0;
break;
default: nilai = 0; break;
}
}