Friday, September 27, 2024

Arduino, DS1307 RTC ve TM1637 display kullanarak dijital saat yapımı.

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ı: