Arduino Kodu:
#include <Wire.h>
#include <RTClib.h>
#include <TM1637Display.h>
// TM1637 display pinleri
#define CLK 2
#define DIO 3
RTC_DS1307 rtc;
TM1637Display display(CLK, DIO);
void setup() {
Serial.begin(9600);
// RTC başlatma
if (!rtc.begin()) {
Serial.println("RTC bulunamadı!");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("RTC çalışmıyor, ayarlama yapılıyor...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Arduino'nun yüklendiği zaman RTC'ye ayarlanır
}
display.setBrightness(0x00); // TM1637 parlaklık seviyesi
}
void loop() {
DateTime now = rtc.now(); // RTC'den şu anki zamanı al
int hour = now.hour(); // Saati al
int minute = now.minute(); // Dakikayı al
int second = now.second(); // Saniyeyi al
// Saniyeye göre iki noktanın yanıp sönmesini kontrol et
bool dotOn = (second % 2 == 0); // Eğer saniye çiftse nokta yanar, tekse söner
// Saat ve dakikayı iki nokta ile göster
display.showNumberDecEx(hour * 100 + minute, (dotOn ? 0b01000000 : 0), true);
delay(1000); // Ekranı her saniye güncelle
}
DS1307 Pinout:
Vbat ve GND arasına 3V CR2032 bağlarsak devre beslemesi kapansa bile saati tutmaya devam ediyor.
Devre bağlantı şeması: