#include <TM1637TinyDisplay.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#define CLK 8
#define DIO 7
#define PIR_PIN 2
#define LED_PIN 13
TM1637TinyDisplay display(CLK, DIO);
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Wire.begin();
rtc.begin();
display.begin();
lcd.init();
lcd.backlight();
// Display name and ID on LCD
lcd.setCursor(0, 0);
lcd.print("NAMA");
lcd.setCursor(0, 1);
lcd.print("NIM");
delay(3000);
lcd.clear();
}
void loop() {
// Baca status sensor PIR
int pirState = digitalRead(PIR_PIN);
// Get current time from RTC
DateTime now = rtc.now();
int seconds = now.second();
// Display time on 7-segment display in HHMM format
display.showNumberDec(now.hour() * 100 + now.minute(), true);
// Display PIR sensor state on LCD
lcd.setCursor(0, 0);
if (pirState == HIGH) {
lcd.print("SENSOR: ADA ");
} else {
lcd.print("SENSOR: TIDAK ");
}
// Check LED condition
lcd.setCursor(0, 1);
if (pirState == HIGH || seconds < 14) {
digitalWrite(LED_PIN, HIGH);
lcd.print("LED: NYALA ");
} else {
digitalWrite(LED_PIN, LOW);
lcd.print("LED: MATI ");
}
delay(1000);
}