#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
// I2C pinleri / I2C pins (V1 default)
const int I2C_SDA = 21;
const int I2C_SCL = 22;
// DS1307 0x68, LCD 0x27 (bazen 0x3F) / DS1307 0x68, LCD 0x27 (sometimes 0x3F)
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const char* dayNames[] = {"Pzr","Pzt","Sal","Car","Per","Cum","Cmt"};
void setup() {
Wire.begin(I2C_SDA, I2C_SCL);
lcd.init();
lcd.backlight();
// Acilis splash 3sn / Splash 3s
lcd.setCursor(3, 0);
lcd.print("BlueGrays");
lcd.setCursor(3, 1);
lcd.print("DS1307 v1.0");
delay(3000);
lcd.clear();
if (!rtc.begin()) {
lcd.setCursor(0, 0);
lcd.print("RTC bulunamadi");
lcd.setCursor(0, 1);
lcd.print("Kablo+pil kontr");
while (true) delay(1000);
}
// Saat durmussa derleme zamanini yaz / If stopped, set to compile time
if (!rtc.isrunning()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
// Tarih satiri / Date row: GG.AA.YYYY Gun
lcd.setCursor(0, 0);
if (now.day() < 10) lcd.print("0");
lcd.print(now.day());
lcd.print(".");
if (now.month() < 10) lcd.print("0");
lcd.print(now.month());
lcd.print(".");
lcd.print(now.year());
lcd.print(" ");
lcd.print(dayNames[now.dayOfTheWeek()]);
// Saat satiri / Time row: HH:MM:SS (centered)
lcd.setCursor(4, 1);
if (now.hour() < 10) lcd.print("0");
lcd.print(now.hour());
lcd.print(":");
if (now.minute() < 10) lcd.print("0");
lcd.print(now.minute());
lcd.print(":");
if (now.second() < 10) lcd.print("0");
lcd.print(now.second());
delay(500);
}