Merhaba arkadaşlar, bu uygulamamızda RTC saat modülü hakkında bilgi vereceğim.
Malzeme Listesi
RTC Saat Modülü Nedir ?
İlk önce RTC’nin nerden geldiğinden bahsedeyim. RTC Real Time Clock’un kısalmasıdır. Yani gerçek zamanlı saat anlamına gelmektedir. RTC saat modülümüzde DS1302 entegresi bulunur. Bu modülümüzde diğer modüllerden farklı olarak 3V bir pil de bulunur. Bu pilin amacı saat tarih bilgisi modüle yüklendikten sonra sürekli olarak saklanmasıdır. Modülü ilk aldığınızda saat ve tarih ayarlı olmayabilir veya pilini çıkarttığınız zaman saat ve tarih bilgisi kaybolacaktır. Arduino ile bağlantı kurarak saat ve tarih bilgisini ayarlayabilirsiniz. Pilini çıkartmadığınız sürece saat ve tarih bilgisini saklayacaktır. Bu modül içerisinde yıl, ay, gün, haftanın günü, saat, dakika ve saniye bilgilerini saklayabilmektedir ve anlık olarak bu bilgilere erişebiliriz.
Devre Şeması
Malzeme listesindeki malzemeleri kullanarak devremizi aşağıdaki şemaya uygun olarak kuralım. Sadece saat modülünü kullanacağımız için devremiz basit bir devre olacaktır. Aşağıdaki görüldüğü gibi saat modülümüzün gnd ve vcc çıkışlarını sırasıyla gnd ve 5v çıkışlarına bağladık. Daha sonra ise CLK , Data , RST çıkışlarını da sırasıyla 6 , 7 , 8 ‘e bağladık. Siz bu pinleri farklı pinlere de takabilirsiniz.
Kütüphane Yükleme
RTC kütüphanesi arduino da yüklü gelmediği için internetten veya kütüphaneleri yönet kısmından yüklemek gerekiyor. Benim kullandığım güncel ve çalışan kütüphaneyi sizlerle paylaşmak istedim. RTC kütüphanesine ulaşmak için bu linke tıklayabilirsiniz. Nasıl indireceğinizi ve kurulum yapacağınızı bilmiyorsanız veya sorun yaşıyorsanız BU YAZIMI okuyarak bu işlemleri çok kolay bir şekilde halledebilirsiniz.
RTC Modül Saat Tarih Ayarlama Kodları
Bu aşağıdaki işlemi sadece 1 kere yapacağız ve modülümüze saat tarih bilgisini yüklemiş olacağız. Yükleme işlemini yaptıktan sonra modülümüzün pilini çıkarmadığımız sürece bu bilgiler saklanacaktır.
#include <virtuabotixRTC.h> #Kütüphanemizi dahil ediyoruz
//CLK -> 6, Data -> 7, RST -> 8
virtuabotixRTC Saat(6, 7, 8);
void setup() {
// RTC üzerindeki tarih ve saati aşağıdaki kod ile ayarlayabilirsiniz.
// saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl
Saat.setDS1302Time(15, 42, 13,7, 31, 01, 2021);
// 19.01.2021 11:40:50 2(Salı günü anlamına geliyor).
// Haftanın günü Pazartesi=>1 .... Pazar=>7 yazıyoruz)
}
// Yukarıdaki yükleme işlemini 1 kere yaptıkdan sonra
// Modülün pilini çıkarmadığınız sürece saat bilgisi
// Sürekli olarak saklanacaktır.
void loop() {
}
RTC Modül Saat Tarih Bilgisini Okuma Kodları
Yukarıdaki saat ve tarih ayarlama işlemini yaptıktan sonra bu kodları çalıştırmamız gerekiyordur. Eğer tarih saat bilgisi farklı gösteriyor ise yukarıdaki işlemler başarısız olmuştur veya modülün pilini çıkartmış olabilirsiniz.
Haftanın gününü elde ederek Pazartesi , Salı gibi yazı yazdırmak için String türünde bir gunler dizi değişkeni oluşturdum ve Saat.dayofweek verisini çekerek bu dizideki indise göre hangi gün olduğunu yazı şeklinde yazdırdım.
#include <virtuabotixRTC.h>
virtuabotixRTC Saat(6, 7, 8); //CLK -> 6, Data -> 7, RST -> 8
String gunler[] = {"PAZARTESI", "SALI", "CARSAMBA", "PERSEMBE", "CUMA", "CUMARTESI", "PAZAR"};
void setup() {
Serial.begin(9600);
}
void loop() {
Saat.updateTime(); //Bu kod ile RTC deki anlık zamanı alıyoruz.
Serial.print(Saat.hours); //Saat
Serial.print(":");
Serial.print(Saat.minutes); //Dakika
Serial.print(":");
Serial.print(Saat.seconds); //Saniye
Serial.print(" ");
Serial.print(Saat.dayofmonth); //Gün
Serial.print("/");
Serial.print(Saat.month); //Ay
Serial.print("/");
Serial.print(Saat.year); //Yıl
Serial.print(" ");
Serial.println(gunler[Saat.dayofweek - 1]); //Hangi güne denk geldiğini bularak yazdırıyoruz.
delay(1000); // 1 saniye bekletiyoruz.
}
Örnek Görüntü
RTC saat modülü uygulamamız hakkında merak ettiklerinizi veya anlamadığınız şeyleri yorum olarak sorabilirsiniz. İyi çalışmalar dilerim
Hocam merhaba ismim Recep. Bir soru sorucaktım acaba zaman modülümüzdeki zamanı 16×2 lcd ye yazdırıp örnek saat 10:00 da işte 10 nolu çıkışa 20 dk aktif et veya çıkış ver gibi bir kod ekleyebilirmiyiz arduinoda yeniyim lütfen kavanoza anlatır gibi anlatın. Bahçe için otomatik sulama sistemi yapmak istiyorum da