#include <TM1637TinyDisplay.h>
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#define CLK 2 // Define the clock pin for TM1637
#define DIO 3 // Define the data pin for TM1637
#define PIN_NTC A0
#define ledPin 13
TM1637TinyDisplay display(CLK, DIO);
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const float BETA = 3950;
int ntc ;
int celcius;
void setup() {
Serial.begin(9600);
pinMode(PIN_NTC, INPUT);
pinMode(ledPin, OUTPUT);
Wire.begin();
rtc.begin();
display.begin();
lcd.init();
lcd.backlight();
// Display name and NIM on LCD
lcd.setCursor(0, 0);
lcd.print("DWIFANI");
lcd.setCursor(0, 1);
lcd.print("230205601003");
delay(3000);
lcd.clear();
}
void loop() {
// Read temperature from NTC sensor
int ntcValue = analogRead(PIN_NTC);
float tempK = 1 / (log(1 / (1023.0 / ntcValue - 1)) / BETA + 1.0 / 298.15); // Kelvin
int celcius = tempK - 273.15; // Celsius
// Display temperature on 7-segment display
display.showNumberDec(celcius);
// 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 (celcius > 30 || now.second() < 12) {
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);
}