Entegre DS3231'in tarihini ve sıcaklığını I2C aracılığıyla kontrol etmek için Arduino kütüphanesi

Entegre DS3231'in tarihini ve sıcaklığını I2C aracılığıyla kontrol etmek için Arduino kütüphanesi

Entegre DS3231'in tarihini ve sıcaklığını I2C aracılığıyla kontrol etmek için Arduino kütüphanesi

GÜNCELLENDİ: Ayrıca yeni DS3231 RTC modülü ve Arduino ile tarih ve saati yönetmek için kütüphane mevsimsel saat gibi iyileştirmelerle.

Operasyonu IC de gerçek zamanlı saatler (RTC) kullanılarak kontrol edilen en popüler otobüs ben2C Genellikle çok benzer. Yanında Tel kitaplığı de Arduino cihazlarla iletişimi büyük ölçüde basitleştirir İki telli Seri Arayüz (TWI), I2C, özel.

İçindekiler

    Genel anlamda süreç aşağıdakilerden oluşur:

    1. Fonksiyonla iletişimleri bağımlı veya ana olarak başlatın (varsayılan olarak ayarlanır) Wire.begin(adres). "Adres" atlanırsa iletişim şu adresle başlar: µC öğretmeni otobüs ben2C.

    2. İletişimi etkinleştir I2C komutunu kullanarak cihazın bulunduğu hafıza adresi üzerinden Wire.beginTransmission(adres).

    3. Siparişinizi yazın otobüs ben2C kullanarak cihaza gerçekleştirmesini istediğiniz işlemi söylemek için Wire.write(komut), burada "sipariş" işlem kodudur.

    4. Serbest bırakmak için iletişimi devre dışı bırakın otobüs ben2C işlevi ile Wire.endTransmission ().

    5. Cihazdan, istenen işleme karşılık gelen belirli miktarda veriyi (bu durumda tarih ve saat) işlevle göndermesini isteyin Wire.requestFrom(adres, miktar).

    6. İşlevle istenen verilerin okunmaya hazır olmasını bekleyin Wire.available (), halihazırda alınmış ve okunabilen veri sayısını döndürür.

    7. Cihaz tarafından gönderilen verileri okuyun ( gerçek zamanlı saat, bu durumda) işlevi kullanarak Wire.read() belirtilen bayt sayısı kadar Wire.available () mevcut.

    8. Normalde veriler çok kompakt formatlarda gönderilir, dolayısıyla alınan verilerin, cihazı kullanan programda yapılan verilerin temsiline karşılık gelecek şekilde yorumlanmasının gerekli olması muhtemeldir.

    DS3231 (ve aynı serideki uyumlu olanlarla ilgili olarak, örneğin DS3232) ve verilerin yorumlanması, entegrenin özelliklerine göre, örneğin zamanı temsil eden farklı rakamların değerleri temsil edilir. ikili kodlu ondalık sayı (BCD) bunu ondalık değer olarak ifade etmek daha uygun olacaktır (a bayt) kullanmak için Arduino

    Aynı satırda sıcaklık bayt olarak ifade edilir. Ikisinin tamamlayıcısı tamsayı kısmı için ve ondalık kısmın çeyrek derecelik çözünürlüğü ile adım için iki bit. Saatteki veri temsilinin bu ve diğer yönleri aşağıdaki kitaplık kodunda ayrıntılı olarak tartışılmıştır. DS3231

    Bu kütüphaneyle sıcaklığı kontrol etmek için yöntemi kullanın okuma_temperature() nesne DS3231 başlangıçta somutlaştırılmıştır. Tarih ve saati okumak için, bunlar önce yüklenir ve ardından aşağıdaki kod kitaplığının başlık belgesinde belgelenen farklı kullanımlar için mevcut formatlardan birinde (kompakt, insan...) istenir.

    Aşağıda kütüphanenin nasıl kullanılacağını gösteren örnek kod verilmiştir. Yukarıda bahsedildiği gibi sıcaklık basitçe fonksiyonla okunur. okuma_temperature() sınıf nesnesinin DS3231 ancak okumadaki hataları göz ardı etmek için, veri sayfasına göre cihazın maksimum ve minimum sıcaklığını sırasıyla saklayan ve ilgili işlevlerle okunan iki sabit kullanılır.

    Sıcaklık okuması iki aşamada gerçekleştirilir: ilk olarak tarih veya saatin farklı kullanımlarının tutarlı olması için değer yüklenir (olumsuz durumlarda daha yüksek bir değer göstermezler) ve ikinci olarak belirtilen formata göre kullanılır. gereklidir. Örnek program (tüm olasılıkları açıklasa da pek pratik değildir) mevcut tüm formatları gösterir

    • İşlevi tarih_saat_değeri() bu, bir diziye bir işaretçi döndürür tank Bir saatin tarih ve saatini temsil eden yedi sayısal değeri içeren (bayt) DS3231 ondalık sayıya dönüştürülür (bunlar BCD cihazda)

    • İşlevi kullanma hafta içi_number() Haftanın Pazar gününden başlayan gün sayısına karşılık gelen bir değer elde edilir. Bunu metin olarak görüntülemek için bir dizi kullanılır ve Pazar günü sıfır dizininden başlamak üzere bir tane çıkarılır.

    • Tarihe "yerel" (İspanyolca) biçimde bakmak için işlevi kullanın. insan_tarihi()Tarihin GG/AA/YYYY biçiminde temsil edildiği bir dizeye işaretçi döndüren, burada DD, 2 basamaklı gün, MM, 2 basamaklı ay ve YYYY, 4 basamaklı yıldır.

    • İşlevi insan_saat() saati ss:dd:ss biçiminde döndürür; hh, 24 basamakla temsil edilen saattir (2 biçimde), mm, 2 basamaklı dakikadır ve ss, 2 basamaklı saniyedir.

    • Tarih ve saati kolayca kullanmak için log dosyaları fonksiyon programlandı kompakt_tarih_zaman()tarih ve saat değerini YYAAGGhhmmss biçiminde verir; AA son 2 haneyle yılı temsil eder, MM 2 haneyle ayı, DD günü 2 haneyle, ss saati (24 formatında) 2 haneyle temsil eder rakamlar, mm 2 haneli dakika ve saniyeler 2 haneli. Bu format, metin olmasına rağmen çok az yer kaplar ve çok basit alfabetik sıralamaya izin verir.

    • İşlevi date_time_MySQL() tarih ve saatin veritabanı yöneticisi tarafından kullanılan formatta sunulmasına hizmet eder MySQL (veya yeni ve daha özgür MariaDB) YYYY-AA-GG ss:dd:ss, burada YYYY 4 haneli yıl, MM 2 haneli ay, DD 2 haneli gün, ss 24 haneli saat (2 formatında) , mm 2 haneli dakika ve 2 haneli saniyedir.

    Tarih ve saati temsil edecek birçok format olmasına rağmen ihtiyacınız olan format orada olmayabilir ama mutlaka mevcut formatlardan birini baz alarak ve onu örnek alarak, duruma göre yeni bir yöntem eklemek kolay olacaktır. diğer özellikler. Lütfen, yeni işlevler eklerseniz, kodu paylaşın (yayınlayın!) ve nasıl çalıştığını bize açıklayın, böylece kütüphaneyi yavaş yavaş daha iyi hale getirebiliriz.

    Yukarıdaki örnek programın çıktısı, aşağıdaki resimde gösterilene benzer bir şey olabilir: 7 değerden oluşan bir liste (saniye, dakika, saat, haftanın günü, ayın günü, ay ve yıl), tarih ve tarih ve "insan" şeklinde ifade edilen saat (İspanyol tarzına göre), dört haneli saat formatında tam sayı olarak saat, veri tabanı formatında tarih ve saat MySQLkompakt formatta tarih ve saat (örn. günlükleri) ve iç sıcaklığı DS3231.

    Arduino konsolu çıkış kütüphanesi gerçek zamanlı saat (RTC) ve I3231C veri yolu üzerinden sıcaklık DS2

    Yorum Ekle

    Kaçırmış Olabilirsiniz