Arduino'da zaman kavramı nasıl oluyor?

feuer

Üye
Katılım
26 Eki 2018
Mesajlar
42
Tepkime puanı
0
Puanları
6
Konum
Gaziantep
Merhaba. yaptıgım kodlamada birkaç yanlışım var... yardımlarınız lazım. İlaç hatırlatıcı bir devre yapıyorum Kullandıgım malzemeler DS3231 zaman modülü -- lcd ekran-- buzzer -- buton. Devrenin mantığı: İlaç saati gelince ilacın adını ekranda yazacak ve alarm çalacak. İlacı aldıgımızda butona basıp alarmı durduracagız. Hata olan yer saat modülünü tanıtamıyorum... Normalde saati lcd ekranda görmek için başka bir kod buldum .. gayet normal çalışıyor. ama bu ilaç hatırlatma sisteminde zaman kavramını nasıl kullanacagım yapamadım.

zaman1.jpg

zaman2.jpg
 

persprensi

Üye
Katılım
1 Kas 2018
Mesajlar
41
Tepkime puanı
1
Puanları
8
Konum
İzmir
while break kısmı karışık geldi bana. if (buttondurumu) deger=1; daha mantıklı gibi. Ayrıca button basılınca +'mı veriyor ?
 

feuer

Üye
Katılım
26 Eki 2018
Mesajlar
42
Tepkime puanı
0
Puanları
6
Konum
Gaziantep
@persprensi buton kısımda sıkıntı yok. Kodu yabancı bir siteden buldum ama zaman modülü olarak orada farklı bir modül kullanmış. Benim elimde olan ds3231 ona göre uyarlama yapmaya çalıştım ama yapamadım. Butona basınca alarm sonlandırılıyor.
 

orchun

Üye
Katılım
2 Kas 2018
Mesajlar
53
Tepkime puanı
1
Puanları
8
Konum
Elazığ
Benim hatadan anladığım DS3231 için böyle bir kod mevcut değil. Yani bu kod ona ait değil diyor herhalde.
 

feuer

Üye
Katılım
26 Eki 2018
Mesajlar
42
Tepkime puanı
0
Puanları
6
Konum
Gaziantep
Benim hatadan anladığım DS3231 için böyle bir kod mevcut değil. Yani bu kod ona ait değil diyor herhalde.
@orchun hocam kodu başka bir yerden buldum... ama o adam ds3231 kullanmamıştı zaman modülü olarak. Ben ds3231 kullanmak istedim kodda biraz degişimler yaptım ama tam başaramadım gibi...
 

orchun

Üye
Katılım
2 Kas 2018
Mesajlar
53
Tepkime puanı
1
Puanları
8
Konum
Elazığ
@orchun hocam kodu başka bir yerden buldum... ama o adam ds3231 kullanmamıştı zaman modülü olarak. Ben ds3231 kullanmak istedim kodda biraz degişimler yaptım ama tam başaramadım gibi...
Aynen çünkü seninkine ait kod değil. Senin saatin kütüphanesinde ki örnek kodları incele
 

kemalcan

Üye
Katılım
1 Kas 2018
Mesajlar
46
Tepkime puanı
1
Puanları
8
Konum
Ankara
Hatayı görmemişim en altta, Mustafa Yücel söyleyince fark ettim. Sizin RTC kütüphanenizde updateTime isimli bir fonksiyon yok diyor. Kulandığınız kütüphanenin adresini verirseniz, zamanı nasıl aldığını kaynak kodlardan bulabiliriz.
 

kahraman

Üye
Katılım
2 Kas 2018
Mesajlar
33
Tepkime puanı
2
Puanları
8
Konum
Zonguldak
giriş, setup ve loop bölümleri için bir DS3231 kulanım örneği...
 

heisenberk

Üye
Katılım
26 Eki 2018
Mesajlar
40
Tepkime puanı
2
Puanları
8
Konum
Kırklareli
Kod:
 #include <Wire.h>

#include <TimeLib.h>

// #include <DS3231.h> // to read tempereture from RTC DS3231
// Sicaklik okumayacaksan bu satira gerek yok
// DS3231 RTC(SDA1, SCL1); // For DUE only
// DUE bu is icin SDA1 ve SCL1 islerini kullanir (library sorunu)
#include "RTClib.h"
RTC_DS3231 RTC;

void setup(){
.
.
.
.
Serial.println("RTC DS3231 Setup.....");
RTC.begin();
delay(1000);
if (!RTC.begin()) { Serial.println("Couldn't find rtc"); while (1); }
if (RTC.lostPower()){ Serial.println("rtc lost power, lets set the time!");

// following line sets the rtc to the date & time this sketch was compiled/uploaded
RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); }

/* // DS3231 de eger yanlis bir date&time bilgisi var ise ve bu bilgiyi internetten update etmiyorsan ya pili cikararak ve tekrar takarak PC den update etmesini saglayacaksin ya da benim bu ornekte yaptigim gibi inputlardan birini kullanarak istedigin zaman PC den update etmesini saglayacaksin...
// bu kisim icin harici bir jumper hazirlaman ve durumunu da "updateRTCfromPC" olarak okuman gerek
// bu inputu define etmedi isen ve bir jumper kullanmaz isen bu kisim islevini yapmaz

if(updateRTCfromPC==1){Serial.println("RTC SET TIME FROM PC JUMPER @Inp44 IS ON...");
RTC.adjust(DateTime(F(__DATE__), F(__TIME__))); }
*/
'
'
'
'
'
}

void loop(){

DateTime now = RTC.now(); // RTC den zamani okumak istediginde bu komutu kullanarak baslayacaksin

// artik asagidaki zaman ile ilgili ogeleri print edebilirsin.
// printDigits komutunu kullanmak icin ayri printDigits function hazirlaman gerek.
// yok ise Serial.print komutu ile degistir.
Serial.print(now.year()); Serial.print('/');
printDigits(now.month()); Serial.print('/');
printDigits(now.day()); Serial.print(' ');
printDigits(now.hour()); Serial.print(':');
printDigits(now.minute());Serial.print(':');
printDigits(now.second());Serial.println("");

// lcd de print islemide yapilabilir...
// benim lcd 2004 tipi ve birden fazla lcd kullandigim icin
// lcd1, lcd2, lcd3 gibi komutlar kullaniyorum
// tek lcd de lcd.print kullan
lcd2.setCursor(0,3);
lcd2.print(now.year());
printLCD2(now.month()); // printLCD icin function hazirlaman veya print.lcd komutu ile degistirmen gerek
// printDigits ve printLCD gibi function lar 10 dan kucuk sayilari 01.....09 sekline getirmek icin
printLCD2(now.day());
printLCD2(now.hour());
printLCD2(now.minute());
printLCD2(now.second());
//yil, ay, gun, saat, dakika, saniye aralarina ne kadar aralik koymak //istersen veya ( / - : ; ) gibi karakterlerden hangisini koymak istersen //lcd.print(xxxx) komutu ile koyabilirsin...
}
 
Üst