1.200 TL üzeri kargo bedava — 15:00'a kadar verilen siparişler aynı gün kargoda !

🎁 İlk alışverişe özel %5 indirim — kod: ATOLYE5

💳 Havale/EFT ve Kredi Kartı ile güvenle ödeme yapabilirsiniz

🔗 Linkle Ödeme ile de ödeme yapabilirsiniz — PayTR güvenli ödeme sayfası

Arduino ile Dijital Saat ve Takvim Projesi Nasıl Yapılır?

25.07.2026

Arduino ile Dijital Saat ve Takvim Projesi Nasıl Yapılır?

Düşük maliyetli ama tatmin edici bir ilk proje arıyorsan, dijital saat yapmak tam sana göre. Bu yazıda Dijital Saat & Takvim Projesi Kiti ile kurulumu anlatıyoruz.

DS1302 RTC Modülü Nasıl Çalışır?

DS1302, üzerindeki pil sayesinde Arduino kapalı olsa bile zamanı saymaya devam eden gerçek zamanlı bir saat modülüdür. Arduino, bu modülden güncel saat ve tarih bilgisini okuyup 16x2 LCD ekranda gösterir.

Bağlantı Şeması

DS1302: DAT→D4, CLK→D5, RST→D2 (koddaki ThreeWire(4,5,2) sırası). LCD SDA→A4, SCL→A5. Modüller 5V'tan beslenir, GND ortak. RTC üzerindeki CR2032 pil takılı olmalı.

Dijital Saat ve Takvim Kiti bağlantı şeması

Kurulum Adımları

  1. DS1302 modülünü Arduino'nun dijital pinlerine bağla
  2. 16x2 I2C LCD ekranı SDA/SCL pinlerine bağla
  3. RTC ve LiquidCrystal_I2C kütüphanelerini yükle
  4. İlk çalıştırmada saati/tarihi ayarla
  5. Artık Arduino'yu kapatıp açsan bile saat doğru çalışır!

Neden Bu Proje?

Zaman yönetimi, I2C haberleşme ve ekran kontrolü gibi temel kavramları öğrenmek için ideal, düşük maliyetli bir başlangıç projesidir.

Arduino Kodu

Kodu yüklemeden önce Arduino IDE'de Kütüphane Yöneticisi'nden "Rtc by Makuna" ve "LiquidCrystal I2C" kütüphanelerini kur. İlk yükleme sırasında kod, bilgisayarının saatini otomatik olarak DS1302'ye aktarır. Kod ayrıca modülün yazma korumasını kaldırır ve saat durmuşsa yeniden başlatır.

// Dijital Saat & Takvim Projesi - DS1302 + LCD I2C
// Atölye Elektronik
#include <ThreeWire.h>
#include <RtcDS1302.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

ThreeWire myWire(4, 5, 2); // DAT, CLK, RST pinleri
RtcDS1302<ThreeWire> Rtc(myWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  Rtc.Begin();

  RtcDateTime derleme = RtcDateTime(__DATE__, __TIME__);

  if (Rtc.GetIsWriteProtected()) Rtc.SetIsWriteProtected(false); // yazma korumasini kaldir
  if (!Rtc.GetIsRunning()) Rtc.SetIsRunning(true);               // saat durmussa baslat

  if (!Rtc.IsDateTimeValid() || Rtc.GetDateTime() < derleme) {
    Rtc.SetDateTime(derleme);                                     // saati bilgisayardan al
  }
}

void loop() {
  RtcDateTime simdi = Rtc.GetDateTime();
  char satir[17];

  if (!Rtc.IsDateTimeValid()) {          // modul okunamiyorsa uyar
    lcd.setCursor(0, 0); lcd.print("RTC okunamadi!  ");
    lcd.setCursor(0, 1); lcd.print("Kablo/pil bakin ");
    delay(1000);
    return;
  }

  // %02d: sayinin basina 0 koyar (08 gibi), eski rakam ekranda kalmaz
  snprintf(satir, sizeof(satir), "%02d:%02d:%02d        ",
           (int)simdi.Hour(), (int)simdi.Minute(), (int)simdi.Second());
  lcd.setCursor(0, 0); lcd.print(satir);

  snprintf(satir, sizeof(satir), "%02d/%02d/%04d      ",
           (int)simdi.Day(), (int)simdi.Month(), (int)simdi.Year());
  lcd.setCursor(0, 1); lcd.print(satir);

  delay(1000);
}

Sorun Giderme

  • Saniye 60'ın üzerinde görünüyor (ör. 10:48:89): Eski kodda sayılar başına 0 konmadan yazılıyordu ve önceki rakam ekranda kalıyordu. Yukarıdaki güncel kodu yükleyin.
  • Saat birkaç dakika sonra duruyor: Güncel kod saati her açılışta yeniden başlatır. Devam ederse DAT kablosunun sağlam takıldığını ve CR2032 pilin doğru yönde olduğunu kontrol edin.
  • Ekranda "RTC okunamadi" yazıyor: DAT/CLK/RST kablolarını D4/D5/D2 pinlerine göre kontrol edin.
  • LCD'de yazı yok: Arkadaki mavi potansiyometreyi çevirerek kontrastı ayarlayın; olmazsa koddaki 0x27 adresini 0x3F yapın.

Kitin içinde DS1302 RTC modülü, LCD ekran, Arduino Uno ve jumper kablo dahil. Detaylar ve satın alma için Dijital Saat & Takvim Projesi Kiti sayfasını ziyaret edebilirsin.