#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// set address sesuai address i2c-nya, jumlah baris dan kolom
LiquidCrystal_I2C lcd(0x27,16,2);
// mendefinisikan pin tombol
#define BT_MENU 0
#define BT_LIST_MENU 4
// Varibel yang bisa berubah
int lastState_bt_menu = HIGH;
int lastState_bt_list_menu = HIGH;
int currentState_bt_menu;
int currentState_bt_list_menu;
// List data yang akan ditampilkan
int count_menu, count_makanan, count_minuman, count_snack = 0;
String Menu[] = {"Makanan", "Minuman", "Snack"};
String Makanan[] = {"Nasi Goreng", "Nasi Soto", "Ayam Goreng", "Lalapan Lele"};
String Minuman[] = {"Pop Ice", "Teh Manis", "Es Campur", "Es Kelapa Muda"};
String Snack[] = {"Kentang Goreng", "Gorengan", "Cilot", "Roti Bakar"};
String cls = " ---- MENU ----";
String pilihan_menu = "Silahkan memesan";
String pilihan_item = cls;
void setup() {
Serial.begin(115200);
// mendefinisikan tombol sebagai input pullup
pinMode(BT_MENU, INPUT_PULLUP);
pinMode(BT_LIST_MENU, INPUT_PULLUP);
// Memulai dan membersihkan lcd serta menyalakan lampu backlight
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Welcome To");
lcd.setCursor(1,1);
lcd.print("Kantin POLIJE");
delay(2000);
lcd.clear();
delay(200);
}
void loop() {
// membaca nilai button dari user
currentState_bt_menu = digitalRead(BT_MENU);
currentState_bt_list_menu = digitalRead(BT_LIST_MENU);
// tombol Pilihan Menu Ditekan
if(lastState_bt_menu == HIGH && currentState_bt_menu == LOW) {
lcd.clear();
delay(100);
Serial.println(Menu[count_menu]);
pilihan_menu = Menu[count_menu];
pilihan_item = cls;
count_menu++;
if(count_menu==3) {
count_menu = 0;
}
}
// tombol List Menu Ditekan
if(lastState_bt_list_menu == HIGH && currentState_bt_list_menu == LOW) {
if (pilihan_menu == "Makanan") {
lcd.clear();
delay(100);
Serial.println(Makanan[count_makanan]);
pilihan_item = Makanan[count_makanan];
count_makanan++;
if (count_makanan == 4) { count_makanan = 0; }
}
if (pilihan_menu == "Minuman") {
lcd.clear();
delay(100);
Serial.println(Minuman[count_minuman]);
pilihan_item = Minuman[count_minuman];
count_minuman++;
if (count_minuman == 4) { count_minuman = 0; }
}
if (pilihan_menu == "Snack") {
lcd.clear();
delay(100);
Serial.println(Snack[count_snack]);
pilihan_item = Snack[count_snack];
count_snack++;
if (count_snack == 4) { count_snack = 0; }
}
}
// Mengubah data lastState
lastState_bt_menu = currentState_bt_menu;
lastState_bt_list_menu = currentState_bt_list_menu;
// Tampilkan data pada lcd
lcd.setCursor(0,0);
lcd.print(pilihan_menu);
lcd.setCursor(0,1);
lcd.print(pilihan_item);
}