#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD 16x2 dengan alamat 0x27
int menuCount = 10; // Jumlah menu (10 menu)
int currentMenu = 1; // Menu awal yang ditampilkan (mulai dari menu 1)
bool menuSelected = false; // Status pilihan menu
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan backlight LCD
updateLCD(); // Tampilkan menu awal
pinMode(2, INPUT); // Tombol 1 di D2 (Next)
pinMode(3, INPUT); // Tombol 2 di D3 (Previous)
pinMode(4, INPUT); // Tombol 3 di D4 (Select)
}
void loop() {
// Tombol Next
if (digitalRead(2) == HIGH) {
delay(250); // Debounce
if (!menuSelected) {
currentMenu++;
if (currentMenu > menuCount) {
currentMenu = menuCount; // Jika lebih dari menu terakhir, tetap di menu terakhir
}
updateLCD();
}
}
// Tombol Previous
if (digitalRead(3) == HIGH) {
delay(250); // Debounce
if (!menuSelected) {
currentMenu--;
if (currentMenu < 1) {
currentMenu = 1; // Jika kurang dari menu pertama, tetap di menu pertama
}
updateLCD();
}
}
// Tombol Select
if (digitalRead(4) == HIGH) {
delay(250); // Debounce
if (!menuSelected) {
menuSelected = true; // Set menu terpilih
executeMenu(currentMenu);
}
}
}
void updateLCD() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Menu : ");
lcd.setCursor(7, 0);
lcd.print(currentMenu);
lcd.setCursor(0, 1);
lcd.print(" OK < > ");
}
void executeMenu(int menu) {
lcd.clear();
switch (menu) {
case 1:
lcd.setCursor(0, 0);
lcd.print("NASI PADANG");
lcd.setCursor(0, 1);
lcd.print("<- Rp.13.000,-");
break;
case 2:
lcd.setCursor(0, 0);
lcd.print("NASI GORENG");
lcd.setCursor(0, 1);
lcd.print("<- Rp.15.000,-");
break;
case 3:
lcd.setCursor(0, 0);
lcd.print("BAKSO");
lcd.setCursor(0, 1);
lcd.print("<- Rp.10.000,-");
break;
case 4:
lcd.setCursor(0, 0);
lcd.print("MIE GORENG");
lcd.setCursor(0, 1);
lcd.print("<- Rp.12.000,-");
break;
case 5:
lcd.setCursor(0, 0);
lcd.print("SATE AYAM");
lcd.setCursor(0, 1);
lcd.print("<- Rp.20.000,-");
break;
case 6:
lcd.setCursor(0, 0);
lcd.print("SOTO AYAM");
lcd.setCursor(0, 1);
lcd.print("<- Rp.18.000,-");
break;
case 7:
lcd.setCursor(0, 0);
lcd.print("GADO GADO");
lcd.setCursor(0, 1);
lcd.print("<- Rp.15.000,-");
break;
case 8:
lcd.setCursor(0, 0);
lcd.print("AYAM GEPREK");
lcd.setCursor(0, 1);
lcd.print("<- Rp.17.000,-");
break;
case 9:
lcd.setCursor(0, 0);
lcd.print("NASI KUNING");
lcd.setCursor(0, 1);
lcd.print("<- Rp.10.000,-");
break;
case 10:
lcd.setCursor(0, 0);
lcd.print("PECEL LELE");
lcd.setCursor(0, 1);
lcd.print("<- Rp.18.000,-");
break;
default:
lcd.setCursor(0, 0);
lcd.print("Menu tidak valid");
}
// Loop untuk memeriksa tombol dan kembali ke menu utama
while (menuSelected) {
if (digitalRead(4) == HIGH) {
delay(250); // Debounce
menuSelected = false; // Kembali ke pemilihan menu
updateLCD();
return; // Kembali ke loop utama
}
delay(500); // Tunggu sebentar sebelum pengecekan tombol lagi
}
}