Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 33 İleri Düzey Uygulamalar / RTC Modül Programı 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:

İleri Düzey Uygulamalar

 

Ders Kazanımları:

  • RTC Modül programı ‘nı yardım almadan başarılı bir şekilde tasarlar.

Oluşabilecek Hatalar:

Aşağıdaki programları çalıştırırken birtakı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: RTC Modül Programı Uygulaması

 

Kullanılacak Malzemeler:

Bağlantı Şeması:

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

  1. RTC Modülün VCC pini Arduino Uno üzerinde 5V’a, GND pini GND pinine, SDA pini analog pinlerden A4’e, SCL pini analog pinlerden A5’e bağlanır.

Kodlar:

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

#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.
  • Uygulama çalıştırıldığında Arduino IDE’ye ait serial ekranda tarih/saat bilgisini görebilirsiniz.

CEVAP VER

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