#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti 0x27 jika alamat I2C berbeda
const int btnMenu = 2;
const int btnBack = 3;
int menuState = 0; // 0 = layar utama, 1 = Menu1, dst
int maxMenu = 3;
bool lastBtnMenu = HIGH;
bool lastBtnBack = HIGH;
void setup() {
pinMode(btnMenu, INPUT_PULLUP);
pinMode(btnBack, INPUT_PULLUP);
lcd.init();
lcd.backlight();
tampilkanMenu();
}
void loop() {
bool currentBtnMenu = digitalRead(btnMenu);
bool currentBtnBack = digitalRead(btnBack);
// Tombol menu ditekan
if (currentBtnMenu == LOW && lastBtnMenu == HIGH) {
menuState++;
if (menuState > maxMenu) menuState = 1; // loop menu 1-3
tampilkanMenu();
delay(200); // debounce sederhana
}
// Tombol back ditekan
if (currentBtnBack == LOW && lastBtnBack == HIGH) {
menuState = 0; // kembali ke layar utama
tampilkanMenu();
delay(200);
}
lastBtnMenu = currentBtnMenu;
lastBtnBack = currentBtnBack;
}
void tampilkanMenu() {
lcd.clear();
if (menuState == 0) {
lcd.setCursor(0, 0);
lcd.print("Ini layar utama");
} else {
lcd.setCursor(0, 0);
lcd.print("Menu ");
lcd.print(menuState);
}
}