Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 19 RTC Modülü için isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

RTC Modülü

Ders Kazanımları:

  • RTC modülün ne amaçla kullanıldığını açıklar.
  • Gerçek zamanlı saat uygulamasını yardım almadan doğru bir şekilde yapar.

DS1307 RTC Modül:

  • Gerçek zamanlı saat uygulamaları ve zamana yönelik projelerde kullanılmaktadır.
  • Bu modül sayesinde Arduino ile saat uygulaması yapıp güncel saat bilgisini LED’de veya serial ekranda okuyabilirsiniz.
  • Üzerine yerleştirilen pil ile beslendiği için ana sistemin enerjisi bitse bile çalışmaya devam eder.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken bir takım hatalarla karşılaşabilirsiniz. Bu hataların kodların yazımında meydana gelen hatalar dışında başka sebeplerle ortaya çıkması muhtemeldir. Bu hatalardan sık karşılaşılanlara aşağıda değinilmiştir.

Kart Seçilmesinden Kaynaklı Hata:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru kartın seçilmesi gerekmektedir. Kart seçilmediğinde “Karta yüklenirken bir sorun oluştu.” benzeri bir hata alabilirsiniz.

USB Portun Seçilmesiyle İlgili Hatalar:

Arduino kurulumu gerçekleştirildikten sonra araçlar menüsünden doğru portun seçilmesi gerekmektedir. Bu port Arduino Uno’nun bilgisayara bağlandığı usb porttur. Farklı şekilde bilgisayarınızda usb driver yüklenmemiş olabilir. Bu gibi hatalarda “Port bulunamadı.” gibi hatalar almanız muhtemeldir.


Uygulama : Gerçek Zamanlı Saat- RTC Modülü

Kullanılacak Malzemeler:

Bağlantı Şeması:

Bağlantılar şekildeki gibi yapılır.

RTC modülün VCC pini 5V, GND pini GND’ye, SDA pini A4 ‘e, SCL pini ise A5’e bağlanır.

Kodlar:

Uygulamanın “.ino” dosyasını (kod dosyasını) buradan indirebilirisiniz.

#include <Wire.h> // Wire kütüphanesini ekliyoruz.
#include <DS1307new.h> // DS1307new kütüphanesini ekliyoruz.
// Değişkenler
uint16_t startAddr = 0x0000; // NV-RAM'de saklamak için başlangıç adresi
uint16_t lastAddr; // NV-RAM'de saklamak için yeni adres
uint16_t TimeIsSet = 0xaa55; // Saatin tekrar ayarlanmamasına yardımcı olur.
void setup()
{
Serial.begin(9600);
// Store startAddr in NV-RAM address 0x08
RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));
RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
if (TimeIsSet != 0xaa55)
// Saat ve tarih daha önce ayarlanmış mı kontrol ediyoruz. Eğer ayarlanmamışsa
// TimeIsSet değişkeni 0xaa55 değerine eşit değilse aşağıda girdiğimiz
// verilerle saati ayarlamış oluruz.
{
RTC.stopClock();
// Bu kısımdan sketchi yüklemeden önce tarih ve saati ayarlayabilirsiniz.
// Bir kez ayarlayıp yükledikten sonra tekrar tarih saat ayarı yapabilmek
// için entegreye bağlı batarya bağlantısı ve Arduinodan sağladığımız
// 5v enerjiyi kesip bir süre beklemek gerekiyor. Daha sonra programda tarih
// ve saati ayarladıktan sonra yüklediğinizde NV-RAMe ayarladığınız tarih ve
// saat bilgileri kaydedilecektir. İlk satırı (Yıl,Ay,Gün), ikinci satırı
// (Saat,Dakika,Saniye) formatında yazmanız gerekiyor.
RTC.fillByYMD(2018,9,28);
RTC.fillByHMS(15,59,0);
RTC.setTime();
TimeIsSet = 0xaa55;
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
RTC.startClock();
}
else
{
RTC.getTime();
}
Serial.println("DS1307new Kutuphanesi Test Programi");
Serial.println("Tarih Saat Formati SS:DD:ss GG-AA-YYY DDD");
Serial.println("Her saniye alt satira gecerek o anki zamani gosterir.");
Serial.println();
}
void loop()
{
RTC.getTime(); // Saat ve Tarih verilerini al
if (RTC.hour < 10)
{
Serial.print("0");
Serial.print(RTC.hour, DEC);
}
else
{
Serial.print(RTC.hour, DEC);
}
Serial.print(":");
if (RTC.minute < 10)
{
Serial.print("0");
Serial.print(RTC.minute, DEC);
}
else
{
Serial.print(RTC.minute, DEC);
}
Serial.print(":");
if (RTC.second < 10)
{
Serial.print("0");
Serial.print(RTC.second, DEC);
}
else
{
Serial.print(RTC.second, DEC);
}
Serial.print(" ");
if (RTC.day < 10)
{
Serial.print("0");
Serial.print(RTC.day, DEC);
}
else
{
Serial.print(RTC.day, DEC);
}
Serial.print("");
if (RTC.month < 10)
{
Serial.print("0");
Serial.print(RTC.month, DEC);
}
else
{
Serial.print(RTC.month, DEC);
}
Serial.print("");
Serial.print(RTC.year, DEC); // Yılda herhangi bir değişikliğe gerek yok
Serial.print(" ");
switch (RTC.dow) // Haftanın günü
{
case 1:
Serial.print("PZT");
break;
case 2:
Serial.print("SAL");
break;
case 3:
Serial.print("CAR");
break;
case 4:
Serial.print("PER");
break;
case 5:
Serial.print("CUM");
break;
case 6:
Serial.print("CTS");
break;
case 7:
Serial.print("PAZ");
break;
}
Serial.println();
delay(1000); // 1 saniye bekle
}

  • Yukarıdaki bağlantı yapıldığında ve kodlar Arduino Uno’ ya yüklendiğinde çalışma tamamlanmış olacaktır.
  • Bu uygulamada ayarlanan saat serial ekranda gözükecektir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz