» DS1307 İle Gerçek Zaman Saati Yapımı (RTC) Ve LCD’ye Yazdırma» Robotiktak
Hoşgeldiniz Bugün 17 Temmuz 2019

DS1307 İle Gerçek Zaman Saati Yapımı (RTC) Ve LCD’ye Yazdırma

14.282 görüntülenme

Merhaba arkadaşlar;
Bugün sizlerle ds1307 kullanarak bir gerçek zaman saati yapalım ve saatimizi lcd ekrana yazdıralım diye düşündüm. Umarım sizler için faydalı bir konu anlatımı olur. Bu projeyi kullanarak birçok farklı projeler geliştirebilir zamana göre açılıp kapanan röleler, saate göre veri akışı gibi projelerde elektrik kesintilerinden etkilenmeyecek bir saat devresi yapabilirsiniz.Şimdi konuya dönersek öncelikle ds1307 entegremizi aşağıdaki gibi bağlıyoruz. Hazır modüllerde satılmakta ancak ben kendim bir modül yaptım.

Gerekli Malzemeler:

  1. 1 adet 32 kHz kristal
  2. 1 adet CR2032 pil
  3. 1 adet pil için yuva
  4. 1 adet DS1307
  5. 1 adet 0.1μF kondansatör
  6. 3 adet 10K direnç

RTC

 

 

Kodlarımıza geçmeden önce bu linkten ds1307 kütüphanesini indirebilirsiniz.
Daha önce anlatmış olduğumuz “LCD Ekrana Yazı Yazdırma” konusunda LCD ekranın bağlantı şemasını ve kullanımını anlattığım için buraya yeniden yazmaya üşeniyorum 🙂

The following two tabs change content below.

Yorum Yap
Mustafa FurkanNo Gravatar

Tüm karakterlerin sığdırılımış halidini paylaşıyorum.
Teşekkürler M.Talha KISAK

#include
#include
#include
// Değişkenler
uint16_t startAddr = 0x0000;
uint16_t lastAddr;
uint16_t TimeIsSet = 0xaa55;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);// LCD keypad Shield bacak numaraları tanımlı isterseniz değiştirebilirsiniz.
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);

RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));

RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
if (TimeIsSet != 0xaa55)

{
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.setTime();
TimeIsSet = 0xaa55;
RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
RTC.startClock();
}
else
{
RTC.getTime();
}
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
lcd.setCursor(0, 0);
lcd.print(“SAAT:”);
if (RTC.hour < 10)
{
lcd.setCursor(6, 0); // lcd de imleci ilk sütuna konumlandırır
Serial.print("0");
lcd.print("0");
Serial.print(RTC.hour, DEC);
lcd.print(RTC.hour, DEC);
}
else
{
Serial.print(RTC.hour, DEC);
lcd.setCursor(6, 0);
lcd.print(RTC.hour, DEC);
}
Serial.print(":");
lcd.setCursor(8, 0);
lcd.print(":");

if (RTC.minute < 10)
{
lcd.setCursor(9, 0);
lcd.print("0");
lcd.print(RTC.minute, DEC);
Serial.print("0");
Serial.print(RTC.minute, DEC);
}
else
{
Serial.print(RTC.minute, DEC);
lcd.print(RTC.minute, DEC);
}

Serial.print(":");
lcd.setCursor(11, 0);
lcd.print(":");

if (RTC.second < 10)
{
lcd.setCursor(12, 0);
lcd.print("0");
lcd.print(RTC.second, DEC);
}
else
{
Serial.print(RTC.second, DEC);
lcd.setCursor(12, 0);
lcd.print(RTC.second, DEC);
}
Serial.print(" ");
if (RTC.day < 10)
{
lcd.setCursor(0, 1);
lcd.print("0");
lcd.print(RTC.day, DEC);
Serial.print("0");
Serial.print(RTC.day, DEC);
}
else
{
lcd.setCursor(0,1);
lcd.print(RTC.day, DEC);
Serial.print(RTC.day, DEC);
}
Serial.print("-");
lcd.setCursor(2,2);
lcd.print("-");
if (RTC.month < 10)
{
lcd.setCursor(3,3);
lcd.print("0");
lcd.print(RTC.month, DEC);
Serial.print("0");
Serial.print(RTC.month, DEC);
}
else
{
lcd.setCursor(5,5);
lcd.print(RTC.month, DEC);
Serial.print(RTC.month, DEC);
}
lcd.setCursor(5,5);
lcd.print("-");
Serial.print("-");
lcd.setCursor(6,6);
lcd.print(RTC.year, DEC);
Serial.print(RTC.year, DEC);
lcd.setCursor(11,11);// Yılda herhangi bir değişikliğe gerek yok
switch (RTC.dow) // Haftanın günü
{
case 1:
lcd.print("PZART");
break;
case 2:
lcd.print("SALI");
break;
case 3:
lcd.print("CARSM");
break;
case 4:
lcd.print("PERSM");
break;
case 5:
lcd.print("CUMA");
break;
case 6:
lcd.print("CMRTS");
break;
case 7:
lcd.print("PAZAR");
break;
}
Serial.println();

delay(1000); // 1 saniye bekle

}

1 sene önce yazıldı.
Boray BalabanNo Gravatar

LiquidCrystal.h kütüphanesinide eklediniz mi?

1 sene önce yazıldı.
EminNo Gravatar

Merhaba,

Kartım Arduino Uno, IDE V1.8.5.

Kütüphaneyi indirdim, bulamadım dediği header dosyaları da ekledim, fakat

complie sonrasında aşağıdaki hata kodları çıkıyor.

Sebebi konusunda bilgi veren olursa memnun olurum.

Saygılar.

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:78:71: error: no ‘void LiquidCrystal::begin(uint8_t, uint8_t, uint8_t)’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:167:73: error: no ‘void LiquidCrystal::setRowOffsets(int, int, int, int)’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::setRowOffsets(int row0, int row1, int row2, int row3)

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:176:27: error: no ‘void LiquidCrystal::clear()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::clear()

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:182:26: error: no ‘void LiquidCrystal::home()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::home()

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:188:55: error: no ‘void LiquidCrystal::setCursor(uint8_t, uint8_t)’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::setCursor(uint8_t col, uint8_t row)

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:202:31: error: no ‘void LiquidCrystal::noDisplay()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::noDisplay() {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:206:29: error: no ‘void LiquidCrystal::display()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::display() {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:212:30: error: no ‘void LiquidCrystal::noCursor()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::noCursor() {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:216:28: error: no ‘void LiquidCrystal::cursor()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::cursor() {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:222:29: error: no ‘void LiquidCrystal::noBlink()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::noBlink() {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:226:27: error: no ‘void LiquidCrystal::blink()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::blink() {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:232:43: error: no ‘void LiquidCrystal::scrollDisplayLeft()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::scrollDisplayLeft(void) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:235:44: error: no ‘void LiquidCrystal::scrollDisplayRight()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::scrollDisplayRight(void) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:240:37: error: no ‘void LiquidCrystal::leftToRight()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::leftToRight(void) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:246:37: error: no ‘void LiquidCrystal::rightToLeft()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::rightToLeft(void) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:252:36: error: no ‘void LiquidCrystal::autoscroll()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::autoscroll(void) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:258:38: error: no ‘void LiquidCrystal::noAutoscroll()’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::noAutoscroll(void) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:265:67: error: no ‘void LiquidCrystal::createChar(uint8_t, uint8_t*)’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::createChar(uint8_t location, uint8_t charmap[]) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:275:49: error: no ‘void LiquidCrystal::command(uint8_t)’ member function declared in class ‘LiquidCrystal’

inline void LiquidCrystal::command(uint8_t value) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:279:49: error: no ‘size_t LiquidCrystal::write(uint8_t)’ member function declared in class ‘LiquidCrystal’

inline size_t LiquidCrystal::write(uint8_t value) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp: In member function ‘virtual void LiquidCrystal::send(uint8_t, uint8_t)’:

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:296:21: error: ‘write8bits’ was not declared in this scope

write8bits(value);

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:298:24: error: ‘write4bits’ was not declared in this scope

write4bits(value>>4);

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp: At global scope:

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:312:45: error: no ‘void LiquidCrystal::write4bits(uint8_t)’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::write4bits(uint8_t value) {

^

C:\Program Files\Arduino\libraries\LiquidCrystal\src\LiquidCrystal.cpp:320:45: error: no ‘void LiquidCrystal::write8bits(uint8_t)’ member function declared in class ‘LiquidCrystal’

void LiquidCrystal::write8bits(uint8_t value) {

^

Using library RealTimeClockDS1307 in folder: C:\Users\COMPAQ\Documents\Arduino\libraries\RealTimeClockDS1307 (legacy)
Using library LiquidCrystal at version 1.0.7 in folder: C:\Program Files\Arduino\libraries\LiquidCrystal
exit status 1
Error compiling for board Arduino/Genuino Uno.

1 sene önce yazıldı.
TemerrutNo Gravatar

Modül kendisi nasıl anlıyor pazartesi salı çarşamba diye.Kod olarak nerede?Ben gün yerine ders programı yazmasını amaçlıyorumda.

2 sene önce yazıldı.
M.Talha KISAKNo Gravatar

yazılıs sekillerini mi değiştirmek istiyorsunuz. örneğin “PZT” yerine “PAZARTESI” yazsın gibi? Eğer öyleyse kodlarda tırnak icineki yazan isimleri istediğiniz gibi yazıp konu öyle derleyip gönderebilirsiniz arudinoya

2 sene önce yazıldı.
cenkNo Gravatar

burda switch case 123.. blokları içindeki haftanın günlerini nasıl değiştirebiliriz? ben masa saati için küçük bir devre yaptım gün ay yıli değiştirebiliyorum ama haftanın günü kısmını switch case içinden nasıl değiştireceğimi bilmiyorum. yardımcı olur musunuz?

2 sene önce yazıldı.