#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define button 27
#define buzzer 14
#define lampu 12
#define gerak 15
bool isSystemOn = false;
bool welcomeDisplayed = false; // Variabel untuk melacak apakah pesan selamat datang telah ditampilkan
unsigned long systemOnTime = 0;
unsigned long systemTimeout = 350; // Waktu dalam milidetik (misalnya, 10 detik)
void setup() {
pinMode(button, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(lampu, OUTPUT);
pinMode(gerak, INPUT);
// Initialize the LCD (similar to your original code)
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
int buttonState = digitalRead(button);
int motion = digitalRead(gerak);
if (motion == HIGH && !welcomeDisplayed) { // Hanya tampilkan pesan selamat datang jika belum ditampilkan
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("SELAMAT DATANG");
delay(1000);
lcd.clear();
delay(1000);
lcd.setCursor(1, 0);
lcd.print("SILAHKAN TEKAN");
lcd.setCursor(6,1);
lcd.print("BEL");
welcomeDisplayed = true; // Setel ke true agar pesan tidak muncul lagi
}
if (buttonState == HIGH) {
if (!isSystemOn) {
isSystemOn = true;
digitalWrite(buzzer, HIGH);
tone(buzzer, 440);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("MOHON");
lcd.setCursor(0, 1);
lcd.print("TUNGGU SEBENTAR");
for (int i = 0; i < 4; i++) {
digitalWrite(lampu, HIGH); // Nyala
delay(300); // Tunggu 0.5 detik
digitalWrite(lampu, LOW); // Mati
delay(300); // Tunggu 0.5 detik
}
systemOnTime = millis(); // Catat waktu sistem dinyalakan
}
}
if (isSystemOn && (millis() - systemOnTime >= systemTimeout)) {
isSystemOn = false;
digitalWrite(buzzer, LOW);
noTone(buzzer);
lcd.clear();
digitalWrite(lampu, LOW);
}
}