#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
char months[12][4] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPin = 4;
const int ledPin = 2;
int buttonState = 0;
int visitorCount = 0;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.begin(16, 2);
lcd.backlight();
delay(3000);
Wire.begin();
if (!rtc.begin()) {
Serial.println("RTC tidak terbaca");
while (1);
}
if (rtc.lostPower()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
DateTime now = rtc.now();
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(", ");
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
Serial.println("Visitor: ");
Serial.println(visitorCount);
lcd.setCursor(2, 0);
lcd.print(now.day(), DEC);
lcd.print(" ");
lcd.print(months[now.month() - 1]);
lcd.print(" ");
lcd.print(now.year(), DEC);
lcd.setCursor(4, 1);
if (now.hour() < 10) {
lcd.print("0");
}
lcd.print(now.hour(), DEC);
lcd.print(":");
if (now.minute() < 10) {
lcd.print("0");
}
lcd.print(now.minute(), DEC);
lcd.print(":");
if (now.second() < 10) {
lcd.print("0");
}
lcd.print(now.second(), DEC);
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
// Tambahkan pengunjung jika tombol ditekan
visitorCount++;
delay(200); // Untuk debouncing
// Tampilkan jumlah pengunjung di layar LCD
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Visitors: ");
lcd.print(visitorCount);
delay(2000);
} else {
digitalWrite(ledPin, LOW);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(now.day(), DEC);
lcd.print(" ");
lcd.print(months[now.month() - 1]);
lcd.print(" ");
lcd.print(now.year(), DEC);
lcd.setCursor(4, 1);
if (now.hour() < 10) {
lcd.print("0");
}
lcd.print(now.hour(), DEC);
lcd.print(":");
if (now.minute() < 10) {
lcd.print("0");
}
lcd.print(now.minute(), DEC);
lcd.print(":");
if (now.second() < 10) {
lcd.print("0");
}
lcd.print(now.second(), DEC);
}
delay(1000);
}