Arduino DS1302 ile Saat İşlemleri
İçindekiler
- #include-
namespace {const int kcepin- = 11; //-chip-enableconst int kiopin- = 10; //-input/outputconst int ksclkpin = 9; //-serial-clock//-create-a-ds1302-object.ds1302-rtc(kcepin,-kiopin,-ksclkpin);} void setup() { -rtc.writeprotect(false); -rtc.halt(false); -time-t(2013, 9, 22, 1, 38, 50,-time::ksunday); //buradan-değiştireceğini-zamanı-yıl,ay-gün,saat,dakika,saniye-olarak-yazıp-yükleyin -rtc.time(t);}void loop() {} projeye-alarm-ekleyelim #include- #include- int i = 0;namespace { const int kcepin- = 11; //-chip-enable const int kiopin- = 10; //-input/output const int ksclkpin = 9; //-serial-clock -ds1302-rtc(kcepin,-kiopin,-ksclkpin); -string-dayasstring(const time::day day) { - switch (day) { - - case time::ksunday: return "pazar"; - - case time::kmonday: return "pazartesi"; - - case time::ktuesday: return "salı"; - - case time::kwednesday: return "Çarşamba"; - - case time::kthursday: return "perşembe"; - - case time::kfriday: return "cuma"; - - case time::ksaturday: return "cumartesi"; - } - return "(unknown-day)"; } void printtime() { - //-get-the-current-time-and-date-from-the-chip. - -time-t = rtc.time(); - //-name-the-day-of-the-week. - const string-day = dayasstring(t.day); - //-format-the-time-and-date-and-insert-into-the-temporary-buffer. - -string-saat = string(t.hr); - -string-dakika = string(t.min); - -string-saniye = string(t.sec); - -string-gun = string(day.c_str()); - -string-ay; - -string-kaci = string(t.date); - switch (t.mon) { - - case 1: ay = "ocak"; break; - - case 2: ay = "Şubat"; break; - - case 3: ay = "mart"; break; - - case 4: ay = "nisan"; break; - - case 5: ay = "mayıs"; break; - - case 6: ay = "haziran"; break; - - case 7: ay = "temmuz"; break; - - case 8: ay = "ağustos"; break; - - case 9: ay = "eylül"; break; - - case 10: ay = "ekim"; break; - - case 11: ay = "kasım"; break; - - case 12: ay = "aralık"; break; - } - -serial.print(string(t.hr)); - -serial.print(":"); - -serial.print(string(t.min)); - -serial.print(":"); - -serial.print(string(t.sec)); - -serial.print("n"); } void saatikur() { - -time-t(2019, 6, 6, 4, 14, 05,-time::ksaturday); //buradan-değiştireceğini-zamanı-yıl,ay-gün,saat,dakika,saniye-olarak-yazıp-yükleyin - -rtc.time(t); } void alarm() { - -time-t = rtc.time(); - if (t.min % 5 == 0) { //dakika-5'in-katıysa-alarm-led-yakıyoruz - - -digitalwrite(13,-high); - } - else { - - -digitalwrite(13,-low); - } }}void setup() { -pinmode(13,-output); -serial.begin(9600); //saatikur(); -rtc.writeprotect(false); -rtc.halt(false);}void loop() { -delay(1000); -printtime(); -alarm();} ">Arduino DS1302 ile Saat İşlemleri Bu modül ile saat bilgileri anlık ds1302 entegresinde tutulur. Modülün üzerindeki pil sayesinde arduino yu güçten çekseniz bile saat bilgisi kaybolmayacaktır. Zaman ilerlemeye devam edecektir. Bu modülü kullanarak sadece saat yapılır gibi düşünmeyin. Farklı projelerde, zamanlanmış görevlere ihtiyacınız olduğunda bu modül sizin işinizi görecektir. Bu modül ile yapılabilecek benim aklıma gelen bazı projeler şöyle ; Evinizde ki kombilerinizi bu modül ile belirli saatlerde açıp kapatabilirsiniz. Bunu yaparken sadece ekstra röle modülüne ihtiyacınız olacaktır. Kuluçka makinesi yaparken kuluçka zamanını bu modül ile ayarlayabilirsiniz elektrik kesilip gelse bile saat verisi kaybolmayacak ve kaldığı yerden devam edecektir. MFRC 522 kartlı giriş projesinde giriş ve çıkış zamanlarını hesaplamak istediğinizde bu modül size yardımcı olacaktır. Şimdi kendi konumuz olan saat yapımına geçelim. Bu iş için bize gerekli olan parçalar şu şekilde; Arduino herhangi bir modeli lcd5110 display (isterseniz başka bir lcd 16×2 kullanabilirsiniz) DS1302 modülü Birkaç adet jumper kablo (dişi -erkek ve erkek erkek kablo) DS1302'nin temel kullanım şeması Devrenin bağlantılarını aşağıdaki resimde görüldüğü gibi yapın. Bağlantıyı yaptıktan sonra Arduino IDE yi açıyoruz. Bize ilk başta iki adet kütüphane gerekiyor. 5110 lcd kütüphanesi ve DS1302 kütüphanesi. Nokia 5110 kütüphanesini bu adresteki en baştaki linke tıklayarak indirebilirsiniz. DS1302 kütüphanesini ise bu linkten indirebilirsiniz. indirdiğiniz kütüphaneleri Arduino IDE ye dahil etmek için Arduino IDE menüsünden Taslak – Library ekle – ZIP kitaplığı ekle yoluna girin. Açılan pencereden indirdiğiniz kütüphaneleri seçip open’ e tıklayın. Bazı forumlarda I/O (Data) ucuna 1Klık direnç takılması tavsiyesi var. Bu işlemide tamamladıktan sonra aşağıdaki kodu arduinoya yükleyin. #include #include #include int lcdledi=12;extern uint8_t SmallFont[];extern uint8_t MediumNumbers[];extern uint8_t BigNumbers[];LCD5110 myGLCD(7,8,5,4,6); //CLK,DİN, DC, RST,CEint i=0;namespace {const int kCePin = 11; // Chip Enableconst int kIoPin = 10; // Input/Outputconst int kSclkPin = 9; // Serial ClockDS1302 rtc(kCePin, kIoPin, kSclkPin);String dayAsString(const Time::Day day) { switch (day) { case Time::kSunday: return "Pazar"; case Time::kMonday: return "Pazartesi"; case Time::kTuesday: return "Salı"; case Time::kWednesday: return "Çarşamba"; case Time::kThursday: return "Perşembe"; case Time::kFriday: return "Cuma"; case Time::kSaturday: return "Cumartesi"; } return "(unknown day)";}void printTime() { // Get the current time and date from the chip. Time t = rtc.time(); // Name the day of the week. const String day = dayAsString(t.day); // Format the time and date and insert into the temporary buffer. String saat = String(t.hr); String dakika = String(t.min); String saniye = String(t.sec); String gun=String(day.c_str()); String ay; String kaci=String(t.date); switch (t.mon){ case 1: ay="Ocak"; break; case 2: ay="Şubat"; break; case 3: ay="Mart"; break; case 4: ay="Nisan"; break; case 5: ay="Mayıs"; break; case 6: ay="Haziran"; break; case 7: ay="Temmuz"; break; case 8: ay="Ağustos"; break; case 9: ay="Eylül"; break; case 10: ay="Ekim"; break; case 11: ay="Kasım"; break; case 12: ay="Aralık"; break; } myGLCD.print(saat,28,0); myGLCD.print(":",40,0); myGLCD.print(dakika,46,0); myGLCD.print(":",58,0); myGLCD.print(saniye,64,0); myGLCD.print(kaci,0,18); myGLCD.print(ay,20,18); myGLCD.print(gun,50,18); }} void setup() { pinMode(lcdledi, OUTPUT); myGLCD.InitLCD(); myGLCD.setContrast(60); Serial.begin(9600); rtc.writeProtect(false); rtc.halt(false);}void loop() { String a= String(i);i +=1; myGLCD.setFont(SmallFont); digitalWrite(lcdledi, LOW); delay(1000); printTime();} Eğer tarihi ve saati değiştirmek isterseniz aşağıdaki kodda belirtmiş olduğum yeri değiştirip yükleyin ardından tekrar üstteki kodu yükleyin. #include #include namespace {const int kCePin = 11; // Chip Enableconst int kIoPin = 10; // Input/Outputconst int kSclkPin = 9; // Serial Clock// Create a DS1302 object.DS1302 rtc(kCePin, kIoPin, kSclkPin);} void setup() { rtc.writeProtect(false); rtc.halt(false); Time t(2013, 9, 22, 1, 38, 50, Time::kSunday); //Buradan değiştireceğini zamanı yıl,ay gün,saat,dakika,saniye olarak yazıp yükleyin rtc.time(t);}void loop() {} Projeye Alarm Ekleyelim #include #include int i = 0;namespace { const int kCePin = 11; // Chip Enable const int kIoPin = 10; // Input/Output const int kSclkPin = 9; // Serial Clock DS1302 rtc(kCePin, kIoPin, kSclkPin); String dayAsString(const Time::Day day) { switch (day) { case Time::kSunday: return "Pazar"; case Time::kMonday: return "Pazartesi"; case Time::kTuesday: return "Salı"; case Time::kWednesday: return "Çarşamba"; case Time::kThursday: return "Perşembe"; case Time::kFriday: return "Cuma"; case Time::kSaturday: return "Cumartesi"; } return "(unknown day)"; } void printTime() { // Get the current time and date from the chip. Time t = rtc.time(); // Name the day of the week. const String day = dayAsString(t.day); // Format the time and date and insert into the temporary buffer. String saat = String(t.hr); String dakika = String(t.min); String saniye = String(t.sec); String gun = String(day.c_str()); String ay; String kaci = String(t.date); switch (t.mon) { case 1: ay = "Ocak"; break; case 2: ay = "Şubat"; break; case 3: ay = "Mart"; break; case 4: ay = "Nisan"; break; case 5: ay = "Mayıs"; break; case 6: ay = "Haziran"; break; case 7: ay = "Temmuz"; break; case 8: ay = "Ağustos"; break; case 9: ay = "Eylül"; break; case 10: ay = "Ekim"; break; case 11: ay = "Kasım"; break; case 12: ay = "Aralık"; break; } Serial.print(String(t.hr)); Serial.print(":"); Serial.print(String(t.min)); Serial.print(":"); Serial.print(String(t.sec)); Serial.print("n"); } void SaatiKur() { Time t(2019, 6, 6, 4, 14, 05, Time::kSaturday); //Buradan değiştireceğini zamanı yıl,ay gün,saat,dakika,saniye olarak yazıp yükleyin rtc.time(t); } void Alarm() { Time t = rtc.time(); if (t.min % 5 == 0) { //dakika 5'in katıysa alarm led yakıyoruz digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } }}void setup() { pinMode(13, OUTPUT); Serial.begin(9600); //SaatiKur(); rtc.writeProtect(false); rtc.halt(false);}void loop() { delay(1000); printTime(); Alarm();} - Bu modül ile saat bilgileri anlık ds1302 entegresinde tutulur. Modülün üzerindeki pil sayesinde arduino yu güçten çekseniz bile saat bilgisi kaybolmayacaktır. Zaman ilerlemeye devam edecektir.
Arduino DS1302 ile Saat İşlemleri
Bu modül ile saat bilgileri anlık ds1302 entegresinde tutulur. Modülün üzerindeki pil sayesinde arduino yu güçten çekseniz bile saat bilgisi kaybolmayacaktır. Zaman ilerlemeye devam edecektir.
Bu modülü kullanarak sadece saat yapılır gibi düşünmeyin. Farklı projelerde, zamanlanmış görevlere ihtiyacınız olduğunda bu modül sizin işinizi görecektir. Bu modül ile yapılabilecek benim aklıma gelen bazı projeler şöyle ;
- Evinizde ki kombilerinizi bu modül ile belirli saatlerde açıp kapatabilirsiniz. Bunu yaparken sadece ekstra röle modülüne ihtiyacınız olacaktır.
- Kuluçka makinesi yaparken kuluçka zamanını bu modül ile ayarlayabilirsiniz elektrik kesilip gelse bile saat verisi kaybolmayacak ve kaldığı yerden devam edecektir.
- MFRC 522 kartlı giriş projesinde giriş ve çıkış zamanlarını hesaplamak istediğinizde bu modül size yardımcı olacaktır.
Şimdi kendi konumuz olan saat yapımına geçelim. Bu iş için bize gerekli olan parçalar şu şekilde;
- Arduino herhangi bir modeli
- lcd5110 display (isterseniz başka bir lcd 16×2 kullanabilirsiniz)
- DS1302 modülü
- Birkaç adet jumper kablo (dişi -erkek ve erkek erkek kablo)
DS1302'nin temel kullanım şeması
Devrenin bağlantılarını aşağıdaki resimde görüldüğü gibi yapın.
Bağlantıyı yaptıktan sonra Arduino IDE yi açıyoruz. Bize ilk başta iki adet kütüphane gerekiyor. 5110 lcd kütüphanesi ve DS1302 kütüphanesi.
- Nokia 5110 kütüphanesini bu adresteki en baştaki linke tıklayarak indirebilirsiniz.
- DS1302 kütüphanesini ise bu linkten indirebilirsiniz.
indirdiğiniz kütüphaneleri Arduino IDE ye dahil etmek için Arduino IDE menüsünden Taslak – Library ekle – ZIP kitaplığı ekle yoluna girin. Açılan pencereden indirdiğiniz kütüphaneleri seçip open’ e tıklayın.
Bazı forumlarda I/O (Data) ucuna 1Klık direnç takılması tavsiyesi var.
Bu işlemide tamamladıktan sonra aşağıdaki kodu arduinoya yükleyin.
#include <stdio.h>
#include <DS1302.h>
#include <LCD5110_Basic.h>
int lcdledi=12;
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
LCD5110 myGLCD(7,8,5,4,6); //CLK,DİN, DC, RST,CE
int i=0;
namespace {
const int kCePin = 11; // Chip Enable
const int kIoPin = 10; // Input/Output
const int kSclkPin = 9; // Serial Clock
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "Pazar";
case Time::kMonday: return "Pazartesi";
case Time::kTuesday: return "Salı";
case Time::kWednesday: return "Çarşamba";
case Time::kThursday: return "Perşembe";
case Time::kFriday: return "Cuma";
case Time::kSaturday: return "Cumartesi";
}
return "(unknown day)";
}
void printTime() {
// Get the current time and date from the chip.
Time t = rtc.time();
// Name the day of the week.
const String day = dayAsString(t.day);
// Format the time and date and insert into the temporary buffer.
String saat = String(t.hr);
String dakika = String(t.min);
String saniye = String(t.sec);
String gun=String(day.c_str());
String ay;
String kaci=String(t.date);
switch (t.mon){
case 1: ay="Ocak"; break;
case 2: ay="Şubat"; break;
case 3: ay="Mart"; break;
case 4: ay="Nisan"; break;
case 5: ay="Mayıs"; break;
case 6: ay="Haziran"; break;
case 7: ay="Temmuz"; break;
case 8: ay="Ağustos"; break;
case 9: ay="Eylül"; break;
case 10: ay="Ekim"; break;
case 11: ay="Kasım"; break;
case 12: ay="Aralık"; break;
}
myGLCD.print(saat,28,0);
myGLCD.print(":",40,0);
myGLCD.print(dakika,46,0);
myGLCD.print(":",58,0);
myGLCD.print(saniye,64,0);
myGLCD.print(kaci,0,18);
myGLCD.print(ay,20,18);
myGLCD.print(gun,50,18);
}
}
void setup() {
pinMode(lcdledi, OUTPUT);
myGLCD.InitLCD();
myGLCD.setContrast(60);
Serial.begin(9600);
rtc.writeProtect(false);
rtc.halt(false);
}
void loop() {
String a= String(i);
i +=1;
myGLCD.setFont(SmallFont);
digitalWrite(lcdledi, LOW);
delay(1000);
printTime();
}
Eğer tarihi ve saati değiştirmek isterseniz aşağıdaki kodda belirtmiş olduğum yeri değiştirip yükleyin ardından tekrar üstteki kodu yükleyin.
#include <stdio.h>
#include <DS1302.h>
namespace {
const int kCePin = 11; // Chip Enable
const int kIoPin = 10; // Input/Output
const int kSclkPin = 9; // Serial Clock
// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);
}
void setup() {
rtc.writeProtect(false);
rtc.halt(false);
Time t(2013, 9, 22, 1, 38, 50, Time::kSunday); //Buradan değiştireceğini zamanı yıl,ay gün,saat,dakika,saniye olarak yazıp yükleyin
rtc.time(t);
}
void loop() {
}
Projeye Alarm Ekleyelim
#include <stdio.h>
#include <DS1302.h>
int i = 0;
namespace {
const int kCePin = 11; // Chip Enable
const int kIoPin = 10; // Input/Output
const int kSclkPin = 9; // Serial Clock
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "Pazar";
case Time::kMonday: return "Pazartesi";
case Time::kTuesday: return "Salı";
case Time::kWednesday: return "Çarşamba";
case Time::kThursday: return "Perşembe";
case Time::kFriday: return "Cuma";
case Time::kSaturday: return "Cumartesi";
}
return "(unknown day)";
}
void printTime() {
// Get the current time and date from the chip.
Time t = rtc.time();
// Name the day of the week.
const String day = dayAsString(t.day);
// Format the time and date and insert into the temporary buffer.
String saat = String(t.hr);
String dakika = String(t.min);
String saniye = String(t.sec);
String gun = String(day.c_str());
String ay;
String kaci = String(t.date);
switch (t.mon) {
case 1: ay = "Ocak"; break;
case 2: ay = "Şubat"; break;
case 3: ay = "Mart"; break;
case 4: ay = "Nisan"; break;
case 5: ay = "Mayıs"; break;
case 6: ay = "Haziran"; break;
case 7: ay = "Temmuz"; break;
case 8: ay = "Ağustos"; break;
case 9: ay = "Eylül"; break;
case 10: ay = "Ekim"; break;
case 11: ay = "Kasım"; break;
case 12: ay = "Aralık"; break;
}
Serial.print(String(t.hr));
Serial.print(":");
Serial.print(String(t.min));
Serial.print(":");
Serial.print(String(t.sec));
Serial.print("n");
}
void SaatiKur() {
Time t(2019, 6, 6, 4, 14, 05, Time::kSaturday); //Buradan değiştireceğini zamanı yıl,ay gün,saat,dakika,saniye olarak yazıp yükleyin
rtc.time(t);
}
void Alarm() {
Time t = rtc.time();
if (t.min % 5 == 0) { //dakika 5'in katıysa alarm led yakıyoruz
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
}
}
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
//SaatiKur();
rtc.writeProtect(false);
rtc.halt(false);
}
void loop() {
delay(1000);
printTime();
Alarm();
}
Bu modül ile saat bilgileri anlık ds1302 entegresinde tutulur. Modülün üzerindeki pil sayesinde arduino yu güçten çekseniz bile saat bilgisi kaybolmayacaktır. Zaman ilerlemeye devam edecektir.
Bu modülü kullanarak sadece saat yapılır gibi düşünmeyin. Farklı projelerde, zamanlanmış görevlere ihtiyacınız olduğunda bu modül sizin işinizi görecektir. Bu modül ile yapılabilecek benim aklıma gelen bazı projeler şöyle ;
- Evinizde ki kombilerinizi bu modül ile belirli saatlerde açıp kapatabilirsiniz. Bunu yaparken sadece ekstra röle modülüne ihtiyacınız olacaktır.
- Kuluçka makinesi yaparken kuluçka zamanını bu modül ile ayarlayabilirsiniz elektrik kesilip gelse bile saat verisi kaybolmayacak ve kaldığı yerden devam edecektir.
- MFRC 522 kartlı giriş projesinde giriş ve çıkış zamanlarını hesaplamak istediğinizde bu modül size yardımcı olacaktır.
Şimdi kendi konumuz olan saat yapımına geçelim. Bu iş için bize gerekli olan parçalar şu şekilde;
- Arduino herhangi bir modeli
- lcd5110 display (isterseniz başka bir lcd 16×2 kullanabilirsiniz)
- DS1302 modülü
- Birkaç adet jumper kablo (dişi -erkek ve erkek erkek kablo)
DS1302'nin temel kullanım şeması
Devrenin bağlantılarını aşağıdaki resimde görüldüğü gibi yapın.
Bağlantıyı yaptıktan sonra Arduino IDE yi açıyoruz. Bize ilk başta iki adet kütüphane gerekiyor. 5110 lcd kütüphanesi ve DS1302 kütüphanesi.
- Nokia 5110 kütüphanesini bu adresteki en baştaki linke tıklayarak indirebilirsiniz.
- DS1302 kütüphanesini ise bu linkten indirebilirsiniz.
indirdiğiniz kütüphaneleri Arduino IDE ye dahil etmek için Arduino IDE menüsünden Taslak – Library ekle – ZIP kitaplığı ekle yoluna girin. Açılan pencereden indirdiğiniz kütüphaneleri seçip open’ e tıklayın.
Bazı forumlarda I/O (Data) ucuna 1Klık direnç takılması tavsiyesi var.
Bu işlemide tamamladıktan sonra aşağıdaki kodu arduinoya yükleyin.
#include <stdio.h>
#include <DS1302.h>
#include <LCD5110_Basic.h>
int lcdledi=12;
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
LCD5110 myGLCD(7,8,5,4,6); //CLK,DİN, DC, RST,CE
int i=0;
namespace {
const int kCePin = 11; // Chip Enable
const int kIoPin = 10; // Input/Output
const int kSclkPin = 9; // Serial Clock
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "Pazar";
case Time::kMonday: return "Pazartesi";
case Time::kTuesday: return "Salı";
case Time::kWednesday: return "Çarşamba";
case Time::kThursday: return "Perşembe";
case Time::kFriday: return "Cuma";
case Time::kSaturday: return "Cumartesi";
}
return "(unknown day)";
}
void printTime() {
// Get the current time and date from the chip.
Time t = rtc.time();
// Name the day of the week.
const String day = dayAsString(t.day);
// Format the time and date and insert into the temporary buffer.
String saat = String(t.hr);
String dakika = String(t.min);
String saniye = String(t.sec);
String gun=String(day.c_str());
String ay;
String kaci=String(t.date);
switch (t.mon){
case 1: ay="Ocak"; break;
case 2: ay="Şubat"; break;
case 3: ay="Mart"; break;
case 4: ay="Nisan"; break;
case 5: ay="Mayıs"; break;
case 6: ay="Haziran"; break;
case 7: ay="Temmuz"; break;
case 8: ay="Ağustos"; break;
case 9: ay="Eylül"; break;
case 10: ay="Ekim"; break;
case 11: ay="Kasım"; break;
case 12: ay="Aralık"; break;
}
myGLCD.print(saat,28,0);
myGLCD.print(":",40,0);
myGLCD.print(dakika,46,0);
myGLCD.print(":",58,0);
myGLCD.print(saniye,64,0);
myGLCD.print(kaci,0,18);
myGLCD.print(ay,20,18);
myGLCD.print(gun,50,18);
}
}
void setup() {
pinMode(lcdledi, OUTPUT);
myGLCD.InitLCD();
myGLCD.setContrast(60);
Serial.begin(9600);
rtc.writeProtect(false);
rtc.halt(false);
}
void loop() {
String a= String(i);
i +=1;
myGLCD.setFont(SmallFont);
digitalWrite(lcdledi, LOW);
delay(1000);
printTime();
}
Eğer tarihi ve saati değiştirmek isterseniz aşağıdaki kodda belirtmiş olduğum yeri değiştirip yükleyin ardından tekrar üstteki kodu yükleyin.
#include <stdio.h>
#include <DS1302.h>
namespace {
const int kCePin = 11; // Chip Enable
const int kIoPin = 10; // Input/Output
const int kSclkPin = 9; // Serial Clock
// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);
}
void setup() {
rtc.writeProtect(false);
rtc.halt(false);
Time t(2013, 9, 22, 1, 38, 50, Time::kSunday); //Buradan değiştireceğini zamanı yıl,ay gün,saat,dakika,saniye olarak yazıp yükleyin
rtc.time(t);
}
void loop() {
}
Projeye Alarm Ekleyelim
#include <stdio.h>
#include <DS1302.h>
int i = 0;
namespace {
const int kCePin = 11; // Chip Enable
const int kIoPin = 10; // Input/Output
const int kSclkPin = 9; // Serial Clock
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "Pazar";
case Time::kMonday: return "Pazartesi";
case Time::kTuesday: return "Salı";
case Time::kWednesday: return "Çarşamba";
case Time::kThursday: return "Perşembe";
case Time::kFriday: return "Cuma";
case Time::kSaturday: return "Cumartesi";
}
return "(unknown day)";
}
void printTime() {
// Get the current time and date from the chip.
Time t = rtc.time();
// Name the day of the week.
const String day = dayAsString(t.day);
// Format the time and date and insert into the temporary buffer.
String saat = String(t.hr);
String dakika = String(t.min);
String saniye = String(t.sec);
String gun = String(day.c_str());
String ay;
String kaci = String(t.date);
switch (t.mon) {
case 1: ay = "Ocak"; break;
case 2: ay = "Şubat"; break;
case 3: ay = "Mart"; break;
case 4: ay = "Nisan"; break;
case 5: ay = "Mayıs"; break;
case 6: ay = "Haziran"; break;
case 7: ay = "Temmuz"; break;
case 8: ay = "Ağustos"; break;
case 9: ay = "Eylül"; break;
case 10: ay = "Ekim"; break;
case 11: ay = "Kasım"; break;
case 12: ay = "Aralık"; break;
}
Serial.print(String(t.hr));
Serial.print(":");
Serial.print(String(t.min));
Serial.print(":");
Serial.print(String(t.sec));
Serial.print("n");
}
void SaatiKur() {
Time t(2019, 6, 6, 4, 14, 05, Time::kSaturday); //Buradan değiştireceğini zamanı yıl,ay gün,saat,dakika,saniye olarak yazıp yükleyin
rtc.time(t);
}
void Alarm() {
Time t = rtc.time();
if (t.min % 5 == 0) { //dakika 5'in katıysa alarm led yakıyoruz
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
}
}
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
//SaatiKur();
rtc.writeProtect(false);
rtc.halt(false);
}
void loop() {
delay(1000);
printTime();
Alarm();
}