#include <TM1637TinyDisplay.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#define CLK 8 // Define the clock pin for TM1637
#define DIO 7 // Define the data pin for TM1637
#define PIN_TRIG 2
#define PIN_ECHO 3
#define ledPin 13
TM1637TinyDisplay display(CLK, DIO);
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(ledPin, OUTPUT);
Wire.begin();
rtc.begin();
display.begin();
lcd.init();
lcd.backlight();
// Display name and ID on LCD
lcd.setCursor(0, 0);
lcd.print("ANDITTA DZIKMAH F.AZ");
lcd.setCursor(0, 1);
lcd.print("230205601008");
delay(3000);
lcd.clear();
}
void loop() {
// Ultrasonic sensor measurement
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
long duration = pulseIn(PIN_ECHO, HIGH);
int distance = duration / 58;
// Display distance on 7-segment display
display.showNumberDec(distance);
// Get current time from RTC
DateTime now = rtc.now();
// Display time on LCD
lcd.setCursor(0, 0);
lcd.print(now.hour());
lcd.print(':');
lcd.print(now.minute());
lcd.print(':');
lcd.print(now.second());
// Check LED condition
if (distance > 100 || now.second() < 15) {
digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("LED: NYALA");
} else {
digitalWrite(ledPin, LOW);
lcd.setCursor(0, 1);
lcd.print("LED: MATI ");
}
delay(1000);
}