Çevrimiçi bulduğum 2 farklı Arduino zamanlayıcı projesini birleştirmeye çalışırken bir sorunla karşılaştım.
Her iki proje için de bir DS3231 RTC kullanıyorum, ancak DS1307 kitaplığını kodumda gayet iyi kullanabildim.
Aldığım ilk kod seti şununla başladı:
#include <DS1307RTC.h>
Birleştirmeye çalıştığım ikinci kod setinde bu 'include' yoktu, bunun yerine kullanıldı
RTC_DS1307 RTC;
burada bulunan:
https://learn.adafruit.com/ds1307-real-time- clock-breakout-board-kit / kodu-anlama
Acemi bir kodlayıcı olarak, bu kitaplığı adlandırmak için yukarıdaki iki yol arasındaki farkın ne olduğundan emin değilim. Ancak "include" kullanmanın ilk yolunu biliyorum, RTC'de geçerli saate erişmek istersem
RTC.get();
aşağıdakileri gerektiren ikinci yöntemin aksine:
RTC.now ();
RTC'yi senkronize etmek için dokümantasyon bulmak kolay olsa da bu kullanışlı kodu kullanarak USB kablosu üzerinden bilgisayara zaman ayırın:
// (! RTC.isrunning ()) {Serial.println ("RTC çalışmıyor"); } // RTC DateTime'dan zamanı al current = RTC.get (); Derlenen DateTime = DateTime (__ DATE__, __TIME__); if (current.unixtime () < compiled.unixtime ()) {// BİLGİSAYAR ZAMANINA KARŞI KONTROLLER Serial.println ("RTC derleme zamanından daha eski! Güncelleniyor"); RTC.adjust (DateTime (__ DATE__, __TIME__)); // ESKİ ZAMAN KAPALIYSA BİLGİSAYARDAN GÜNCELLEME}
"#include DS1307RTC" yi kullanarak kolay bir alternatif bulamıyorum
İlk önce RTC arasındaki farkı düşündüm. now () ve RTC.get () sadece bir kelime ikamesi meselesiydi. Ancak daha sonra, "RTC_DS1307 RTC;" ile başlattıktan sonra "time_t" çağrısı kullanmak istediğimde;
time_t timeNOW = RTC.now ();
"Başlatma sırasında 'DateTime' öğesini 'time_t {aka long unsigned int}' olarak değiştiremiyorum" hatası alıyorum
Dolayısıyla, bir yöntemin "DateTime" ve bir yöntemin "time_t" kullandığını varsayıyorum. Ancak durumun bu olup olmadığından ve öyleyse "DateTime" değerini "time_t" değerine nasıl dönüştüreceğimden emin değilim.
Bu yazıyı yazarken iki amacım var.
1- Birisi bana "#include DS1307RTC.h" ve "RTC_DS1307 RTC" arasındaki farkı açıklayabilir mi? ve kodumu nasıl etkilediği.
2- "" RTC_DS1307 RTC "kullanmaya devam etmek istiyorum, çünkü RTC'mi bilgisayarımla senkronize etmek kolay görünüyor. Ama eğer yaparsam Yukarıdaki hatayı alın. Öyleyse birisi bana bir "RTC now ()" çağrısını "time_t" değerine nasıl dönüştürebileceğimi söyleyebilir mi? Yoksa sorun, veri türleri arasındaki dönüşümden daha karmaşık mı?