Knjižnica Arduino za preverjanje datuma in temperature integriranega DS3231 prek I2C

Knjižnica Arduino za preverjanje datuma in temperature integriranega DS3231 prek I2C

Knjižnica Arduino za preverjanje datuma in temperature integriranega DS3231 prek I2C

POSODOBLJENO: Obiščite tudi nov knjižnico za upravljanje datuma in časa z modulom DS3231 RTC in Arduinom z izboljšavami, kot je sezonski čas.

Delovanje IC de ure realnega časa (RTC) najbolj priljubljeni, ki se upravljajo z avtobus I2C Ponavadi je zelo podobno. Poleg tega je Žična knjižnica de Arduino zelo poenostavi komunikacijo z napravami Dvožilni serijski vmesnik (TWI), I2C, specifično.

Kazalo

    Na splošno je postopek sestavljen iz

    1. Začnite komunikacijo kot podrejeni ali glavni (nastavljeno privzeto) s funkcijo Wire.begin(naslov). Če je "naslov" izpuščen, se komunikacija začne z μC učiteljica avtobus I2C.

    2. Aktivirajte komunikacijo I2C z napravo prek pomnilniškega naslova, kjer se nahaja, z ukazom Wire.beginTransmission(naslov).

    3. Naročilo napišite v avtobus I2C da napravi poveste operacijo, ki jo želite izvesti, z uporabo Wire.write(ukaz), v katerem je "vrstni red" koda operacije.

    4. Onemogočite komunikacije, da sprostite avtobus I2C s funkcijo Wire.endTransmission ().

    5. Zahtevajte, da naprava pošlje določeno količino podatkov, ki ustreza zahtevani operaciji (v tem primeru datum in čas) s funkcijo Wire.requestFrom(naslov, znesek).

    6. Počakajte, da bodo podatki, zahtevani s funkcijo, na voljo za branje Wire.available (), ki vrne število podatkov, ki so že bili prejeti in jih je mogoče prebrati.

    7. Preberite podatke, ki jih pošlje naprava ( ura realnega časa, v tem primeru) z uporabo funkcije Wire.read() tolikokrat, kot je navedenih bajtov Wire.available () ki so na voljo.

    8. Običajno se podatki pošiljajo v zelo kompaktnih formatih, zato je zelo verjetno, da bo treba prejete podatke interpretirati na način, ki ustreza predstavitvi podatkov, izdelanih v programu, ki uporablja napravo.

    Kar zadeva DS3231 (in združljive v isti seriji, kot je DS3232) in razlago podatkov, v skladu s specifikacijami integriranega, na primer vrednosti različnih števk, ki predstavljajo čas, so predstavljene v binarno kodirano decimalno (BCD) kar bo bolj priročno izraziti kot decimalno vrednost (a bajt) za uporabo v Arduino

    V isti vrstici je temperatura izražena kot bajt in komplement dveh za celoštevilski del in dva bita za korak decimalnega dela z ločljivostjo četrtine stopinje. Ti in drugi vidiki predstavitve podatkov na uri so bili izčrpno obravnavani v spodnji kodi knjižnice. DS3231

    Če želite preveriti temperaturo s to knjižnico, preprosto uporabite metodo read_temperature() objekta DS3231 instancirano na začetku. Za branje datuma in ure se najprej naložita in nato zahtevata v enem od formatov (kompaktni, človeški ...), ki so na voljo za različne uporabe in so dokumentirani v dokumentu glave knjižnice kod spodaj.

    Sledi primer kode, ki prikazuje, kako uporabljati knjižnico. Kot je navedeno zgoraj, se temperatura preprosto odčita s funkcijo read_temperature() predmeta razreda DS3231 vendar se za preziranje napak pri odčitavanju uporabljata dve konstanti, ki shranjujeta najvišjo in najnižjo temperaturo naprave v skladu s podatkovnim listom in ki se bereta z ustreznimi funkcijami.

    Odčitavanje temperature poteka v dveh stopnjah: najprej se naloži vrednost, tako da bodo različne uporabe datuma ali časa dosledne (v neugodnih primerih ne bodo prikazali višje vrednosti) in drugič se uporabi v skladu s formatom, ki je potrebno. Primer programa (ki ni zelo praktičen, čeprav pojasnjuje vse možnosti) prikazuje vse razpoložljive formate

    • Funkcija datum_čas_vrednost() ki vrne kazalec na matriko kočija (bajtov), ​​ki vsebuje sedem številskih vrednosti, ki predstavljajo datum in čas na uri DS3231 pretvorjeni v decimalno (so v BCD na napravi)

    • Uporaba funkcije številka_dneva_v tednu() Dobi se vrednost, ki ustreza številki dneva v tednu, ki se začne v nedeljo. Za prikaz kot besedilo se uporabi niz in ena se odšteje, da se začne pri indeksu nič, nedelja.

    • Če si želite ogledati datum v "lokalni" (španski) obliki, uporabite funkcijo človeški_datum(), ki vrne kazalec na niz, v katerem je datum predstavljen v formatu DD/MM/LLLL, kjer je DD dan, predstavljen z 2 števkama, MM je mesec z 2 števkama in LLLL leto s 4 števkami.

    • Funkcija človeška_ura() vrne čas v obliki zapisa hh:mm:ss, pri čemer je hh ura (v formatu 24), predstavljena z 2 števkama, mm so minute z 2 števkama in ss so sekunde z 2 števkama.

    • Za preprosto uporabo datuma in ure dnevniške datoteke funkcija je bila programirana kompaktni_datum_čas(), ki prikaže vrednost datuma in časa v obliki YYMMDDhhmmss, pri čemer je AA leto, predstavljeno z zadnjima 2 števkama, MM mesec z 2 števkama, DD dan z 2 števkama, hh ura (v obliki 24) z 2 števke, mm minute z 2 števkama in ss sekunde z 2 števkama. Ta oblika, čeprav je besedilo, zavzame malo prostora in omogoča zelo preprosto abecedno razvrščanje.

    • Funkcija datum_čas_MySQL() služi za predstavitev datuma in ure v obliki, ki jo uporablja upravljalnik baze podatkov MySQL (ali novo in svobodnejše MariaDB) LLLL-MM-DD hh:mm:ss, kjer je LLLL leto, predstavljeno s 4 števkami, MM je mesec z 2 števkama, DD je dan z 2 števkama, hh je ura (v formatu 24) z 2 števkama , mm so minute z 2 števkama in sekunde z 2 števkama.

    Čeprav obstaja veliko formatov za predstavitev datuma in časa, tistega, ki ga potrebujete, morda ni, vendar bo zagotovo na podlagi enega od obstoječih in z uporabo tega kot primera enostavno dodati novo metodo v skladu z druge specifikacije. Prosimo, če dodajate nove funkcije, delite kodo (sprostite jo!) in nam razložite, kako deluje, da bomo knjižnico postopoma izboljšali. Hvala!

    Rezultat zgornjega vzorčnega programa je lahko nekaj podobnega temu, kar je prikazano na naslednji sliki: seznam 7 vrednosti (sekunde, minute, ura, dan v tednu, dan v mesecu, mesec in leto), datum in čas, izražen na "človeški" način (po špansko) čas kot celo število v štirimestnem formatu ure, datum in čas v formatu baze podatkov MySQL, datum in čas v strnjeni obliki (za dnevniki) in notranjo temperaturo DS3231.

    Izhodna knjižnica konzole Arduino, ura realnega časa (RTC) in temperatura DS3231 prek vodila I2C

    po Komentar

    Morda ste zamudili