#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPin1 = 11;
const int buttonPin2 = 12;
int ledPins[9] = {2, 3, 4, 5, 6, 7, 8, 9, 10};
int menu = 0;
int buttonState1 = 0; // Variabel untuk menyimpan status tombol 1
int buttonState2 = 0; // Variabel untuk menyimpan status tombol 2
void setup() {
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
for (int i = 0; i < 9; i++) {
pinMode(ledPins[i], OUTPUT);
}
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan pencahayaan LCD
lcd.setCursor(0, 0);
lcd.print("Pilih menu: ");
lcd.setCursor(0, 1);
lcd.print("Menu ");
lcd.print(menu); // Tampilkan menu yang dipilih
}
void loop() {
// Baca status tombol
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
// Jika tombol 1 ditekan
if (buttonState1 == LOW) {
delay(500);
menu++; // Pilih menu berikutnya
if (menu > 3) {
menu = 1; // Kembali ke menu awal jika melebihi jumlah menu
}
// Tampilkan menu yang dipilih
lcd.setCursor(5, 1);
lcd.print(" "); // Hapus menu sebelumnya
lcd.setCursor(5, 1);
lcd.print(menu);
}
// Jika tombol 2 ditekan
if (buttonState2 == LOW) {
delay(200);
switch (menu) {
case 1: while(true) { menu1(); } break;
case 2: while(true) { menu2(); } break;
case 3: while(true) { menu3(); } break;
default: lcd.clear(); lcd.print("Pilih menu dulu"); break;
}
}
}
void runScene(int scene[], int delayTime) {
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], scene[i]);
}
delay(delayTime);
}
void menu1() {
lcd.clear();
lcd.print("Menu 1 dipilih");
int scenes[6][9] = {
{1,0,0,1,0,0,0,0,1},
{1,0,0,1,0,0,0,1,0},
{1,0,0,0,0,1,1,0,0},
{1,0,0,0,1,0,1,0,0},
{0,0,1,1,0,0,1,0,0},
{0,1,0,1,0,0,1,0,0}
};
for (int i = 0; i < 6; i++) {
runScene(scenes[i], 1500);
}
}
void menu2() {
lcd.clear();
lcd.print("Menu 2 dipilih");
int scenes[10][9] = {
{1,0,0,0,0,0,0,0,0},
{1,1,0,0,0,0,0,0,0},
{1,1,1,0,0,0,0,0,0},
{1,1,1,1,0,0,0,0,0},
{1,1,1,1,1,0,0,0,0},
{1,1,1,1,1,1,0,0,0},
{1,1,1,1,1,1,1,0,0},
{1,1,1,1,1,1,1,1,0},
{1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0}
};
for (int i = 0; i < 10; i++) {
runScene(scenes[i], 1500);
}
}
void menu3() {
lcd.clear();
lcd.print("Menu 3 dipilih");
for (int i = 0; i < 9; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
delay(500);
}
}