#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int pinmasuk = 8;
const int pinkeluar = 9;
const int BEL = A0;
const int LED_HIJAU = A1;
const int LED_MERAH = A2;
const int batas = 5;
int masuk = 5;
int keluar = 4;
int total = 9;
String statusPesan = "";
void setup() {
lcd.init();
lcd.backlight();
lcd.print("SELAMAT DATANG");
lcd.setCursor(0, 1);
lcd.print("SILAHKAN MASUK");
delay(2000);
pinMode(pinmasuk, INPUT);
pinMode(pinkeluar, INPUT);
pinMode(BEL, OUTPUT);
pinMode(LED_HIJAU, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
}
void loop() {
// Reset status
statusPesan = "";
if (digitalRead(pinmasuk) == HIGH) {
if (total < batas) {
masuk++;
total++;
statusPesan = "Pengunjung Masuk";
digitalWrite(BEL, HIGH);
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_MERAH, LOW);
delay(200);
digitalWrite(BEL, LOW);
digitalWrite(LED_HIJAU, LOW);
} else {
statusPesan = "Ruang Penuh!";
digitalWrite(BEL, HIGH);
digitalWrite(LED_MERAH, HIGH);
digitalWrite(LED_HIJAU, LOW);
delay(300);
digitalWrite(BEL, LOW);
}
}
if (digitalRead(pinkeluar) == HIGH) {
if (total > 0) {
keluar++;
total--;
statusPesan = "Pengunjung Keluar";
digitalWrite(BEL, HIGH);
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(LED_MERAH, LOW);
delay(200);
digitalWrite(BEL, LOW);
digitalWrite(LED_HIJAU, LOW);
}
}
// Tampilkan informasi di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("M:");
lcd.print(masuk);
lcd.print(" K:");
lcd.print(keluar);
lcd.print(" T:");
lcd.print(total);
lcd.setCursor(0, 1);
lcd.print(statusPesan);
delay(500);
}