Arduino'da zaman kavramı nasıl oluyor?

  • Konbuyu başlatan feuer
  • Başlangıç tarihi
F

feuer

Ziyaretçi
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.

Ekli dosyayı görüntüle 133
Ekli dosyayı görüntüle 134
 
P

persprensi

Ziyaretçi
while break kısmı karışık geldi bana. if (buttondurumu) deger=1; daha mantıklı gibi. Ayrıca button basılınca +'mı veriyor ?
 
F

feuer

Ziyaretçi
@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.
 
O

orchun

Ziyaretçi
Benim hatadan anladığım DS3231 için böyle bir kod mevcut değil. Yani bu kod ona ait değil diyor herhalde.
 
F

feuer

Ziyaretçi
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...
 
O

orchun

Ziyaretçi
@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
 
K

kemalcan

Ziyaretçi
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.
 
K

kahraman

Ziyaretçi
giriş, setup ve loop bölümleri için bir DS3231 kulanım örneği...
 
H

heisenberk

Ziyaretçi
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...
}
 

Robotikforum.net Nedir?

  • Robotikforum.net 2020 yılında kurulup yayın hayatına başlayan ve Türkiye’de robotik kodlama alanının gelişimine katkıda bulunmak için bu alan ile ilgilenen bireylerin bir birleri ile yardımlaşmaları ve fikir danışmalarını sağlayarak daha iyi öğrenmek için her bir bireyin bilgisini ve tecrübesini alarak kendini geliştirebileceği ve sorularına cevap bulabileceği bir platform olarak kurulmuştur.

Bilgilendirme!!!

İçerik sağlayıcı paylaşım sitelerinden biri olan www.robotikforum.net Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur.

Sayfamızı beğendin mi?

X Merhaba ziyaretçi Robotikforum.net adresine hoşgeldin. Robotikforum.net
adresi gelişen teknoloji ile günden güne yaygınlaşan robotik teknolojileri
hakkında yardımlaşabileceğin ve tartışabileceğin bir platformdur.
Aramıza katılmaya ne dersin?
Kayıt Ol