Bugünkü yazımda sizlere Arduino kart kullanarak nasıl gerçek zamanlı saat yapılacağını göstereceğim. Aslında 16×2 LCD Ekran üzerinde çalışan gerçek zamanlı bir dijital saat olacak. Buradaki devrede ayrıca alarmı da kurabileceğiz. Aurdino hakkında bilgi almak için daha önce yazdığımız arduino nedir makalemizi okuyabilirsiniz.
Yazıma devam etmeden önce belki bilmeyenler için DS1307 entegresi hakkında bilgi vermek istiyorum. Bu entegre ile I2C protokolüne göre çalışan, gerçek zaman üretmek için ve seri bilgi alışverişi yapmak için projemizde kullanacağız. Bu entegre düşük güç tüketimine sahip, ikili kodlanmış onlu binary-coded decimal (BCD) sistemde saat ve tarihleri gösterebilir ve ayrıca 56 bayt NV SRAM bulunmaktadır. I²C ile Adres ve verilerimiz seri olarak çift yönlü taşınır. Bu uygulamada Saat/Takvim içerisinde saniye, dakika, saat, gün, ay ve yıl bilgilerini görüntüleyebileceksiniz. Ayın sonunda tarih otomatikman bulunduğu yıla göre kendini düzeltiyor. Saatin işlevinde AM/PM olarak kendini 12 veya 24 saatlik formatlara ayarlayabiliyorsunuz. DS1307 içerisinde yerleşik olarak bir güç algılama devresi mevcuttur ki böylece güç düşüşlerini algılayabilir ve otomatikman yedek beslemeye geçebilir. Zaman kaydetme işlemleri yedek beslemedeyken de devam edebilir. Bu kadar bilgiden sonra gelelim nasıl yapacağımıza;
Sıcaklık Ölçümü ve Gerçek Zamanlı Saat Yapımı
Bu devrede Arduino’nun D5,D4,D3,D2 data pinleri 16×2 LCD ekranın D4, D5, D6, D7 pinlerine sırayla bağlandı.
Arduino’nun dijital D6 ve D7 pinleri, 16×2 LCD ekranın RS ve En komut pinine sırasıyla bağlandı.
ds1307 Entegresinin seri data SDA ve clock SCL pinleri, Arduino’nun Analog A4 ve A5 pinlerine bağlandı.
Bu saat için 24 saatlik modu tercih ettim. Böylece bize kesin zamanı gösterebilecek ve Arduino ekranında baştan sona zamanı görebileceğiz. Aralıksız olarak Arduino, RTC ( Entegremiz ) üzerinden verileri okumakta ve aynı şekilde verileri derleyip ekran üzerine yansıtmaktadır. Şu anda sistem sadece zamanı ve tarihleri gösteriyor…
Şimdi gelelim arduino ile sıcaklık devresini yapmaya. Bunun için LM35 Sensörünü kullanacağız. Bunu direk olarak Arduino’nun Analog A0 Pinine bağlayacağız. Gerisini program içerisindeki kodlar halledecek ve kesin sıcaklık değerlerini LCD üzerinden okuyabileceğiz. Yazının devamında Kaynak Kodlara ve Devre Şemasına ulaşabilirsiniz.
Kullanılan Komponentler:
1. Arduino Pro mini
2. Ds1307
3. Lm35
4. 16X2 LCD
5. Bağlantı Kabloları
Kaynak Kodlar; sitemizden yazı kopyalamayı kaldırdık. Kodları yorum kısmından kopyalayabilirsiniz.
#ifndef _RTCLIB_H_
#define _RTCLIB_H_
class DateTime {
public:
DateTime (uint32_t t =0);
DateTime (uint16_t year, uint8_t month, uint8_t day,
uint8_t hour =0, uint8_t min =0, uint8_t sec =0);
DateTime (const char* date, const char* time);
uint16_t year() const { return 2000 + yOff; }
uint8_t month() const { return m; }
uint8_t day() const { return d; }
uint8_t hour() const { return hh; }
uint8_t minute() const { return mm; }
uint8_t second() const { return ss; }
uint8_t dayOfWeek() const;
long secondstime() const;
uint32_t unixtime(void) const;
protected:
uint8_t yOff, m, d, hh, mm, ss;
};
class RTC_DS1307 {
public:
static uint8_t begin(void);
static void adjust(const DateTime& dt);
uint8_t isrunning(void);
static DateTime now();
};
class RTC_Millis {
public:
static void begin(const DateTime& dt) { adjust(dt); }
static void adjust(const DateTime& dt);
static DateTime now();
protected:
static long offset;
};
#endif // _RTCLIB_H_
—————–
Arduino ile sıcaklık ölçümü ve gerçek zamanlı saat yapımı devre şeması: