Biblioteca Arduino pentru a verifica data și temperatura DS3231 integrat prin I2C

Biblioteca Arduino pentru a verifica data și temperatura DS3231 integrat prin I2C

Biblioteca Arduino pentru a verifica data și temperatura DS3231 integrat prin I2C

ACTUALIZAT: Vizitați și noul bibliotecă pentru a gestiona data și ora cu modulul DS3231 RTC și Arduino cu îmbunătățiri precum timpul sezonier.

Funcționarea IC de ceasuri în timp real (RTC) cele mai populare care sunt controlate folosind autobuzul I2C De obicei este foarte asemănător. În plus, cel Biblioteca de fir de Arduino simplifică foarte mult comunicațiile cu dispozitivele Interfață serială cu două fire (TWI), I2C, specific.

Cuprins

    În linii mari, procesul constă în

    1. Inițiază comunicațiile ca slave sau master (setat implicit) cu funcția Wire.begin(adresă). Dacă „adresa” este omisă, comunicările încep cu μC profesorul de autobuzul I2C.

    2. Activați comunicarea I2C cu dispozitivul prin adresa de memorie unde se află, folosind comanda Wire.beginTransmission(adresă).

    3. Scrieți o comandă în autobuzul I2C pentru a spune dispozitivului operația pe care doriți să o efectueze, folosind Wire.write(comandă), în care „comanda” este codul operației.

    4. Dezactivați comunicațiile pentru a elibera autobuzul I2C cu funcție Wire.endTransmission ().

    5. Solicitați dispozitivului să trimită o anumită cantitate de date care să corespundă operațiunii care a fost solicitată (în acest caz, data și ora) cu funcția Wire.requestFrom (adresă, sumă).

    6. Așteptați ca datele solicitate cu funcția să fie disponibile pentru citire Wire.available (), care returnează numărul de date care au fost deja primite și care pot fi citite.

    7. Citiți datele trimise de dispozitiv (the ceas în timp real, în acest caz) folosind funcția Wire.read() de câte ori indică octeții Wire.available () care sunt disponibile.

    8. In mod normal datele sunt trimise in formate foarte compacte deci este foarte probabil ca va fi necesara interpretarea datelor primite intr-un mod care sa corespunda reprezentarii datelor realizate in programul care foloseste dispozitivul.

    În ceea ce privește DS3231 (și cele compatibile din aceeași serie, cum ar fi DS3232) și interpretarea datelor, conform specificațiilor integratului, de exemplu, valorile diferitelor cifre care reprezintă timpul sunt reprezentate în zecimală codificată binar (BCD) care va fi mai convenabil de exprimat ca valoare zecimală (a octet) a folosi în Arduino

    Pe aceeași linie, temperatura este exprimată ca un octet in complementul a doi pentru partea întreagă și doi biți pentru pasul, cu o rezoluție de un sfert de grad, a părții zecimale. Acestea și alte aspecte ale reprezentării datelor pe ceas au fost discutate exhaustiv în codul bibliotecii de mai jos. DS3231

    Pentru a verifica temperatura cu această bibliotecă, trebuie doar să utilizați metoda citire_temperatura() a obiectului DS3231 instanţiat la început. Pentru a citi data și ora, acestea sunt mai întâi încărcate și apoi solicitate într-unul din formatele (compact, uman...) disponibile pentru diferite utilizări, documentate în documentul antet al bibliotecii de coduri de mai jos.

    Următorul este exemplu de cod pentru a arăta cum să utilizați biblioteca. După cum am menționat mai sus, temperatura este pur și simplu citită cu funcția citire_temperatura() a obiectului clasei DS3231 dar, pentru a ignora erorile de citire, se folosesc doua constante care memoreaza, respectiv, temperatura maxima si minima a aparatului conform fisei tehnice si care se citesc cu functiile corespunzatoare.

    Citirea temperaturii se realizează în două etape: în primul rând se încarcă valoarea, astfel încât diferitele utilizări ale datei sau orei să fie consecvente (nu vor arăta o valoare mai mare în cazuri nefavorabile) și în al doilea rând este utilizată conform formatului care Este nevoie. Programul exemplu (care nu este foarte practic, deși explică toate posibilitățile) arată toate formatele disponibile

    • Funcția data_time_value() care returnează un pointer către o matrice car de război (octeți) care conțin cele șapte valori numerice care reprezintă data și ora pe un ceas DS3231 convertite în zecimală (sunt în BCD pe dispozitiv)

    • Utilizarea funcției număr_zile săptămânii() Se obține o valoare care corespunde numărului zilei săptămânii începând de duminică. Pentru a-l afișa ca text, se folosește o matrice și se scade una pentru a începe cu indicele zero, duminică.

    • Pentru a consulta data într-un format „local” (spaniol), utilizați funcția data_omanului(), care returnează un indicator către un șir în care data este reprezentată în format ZZ/LL/AAAA, unde ZZ este ziua reprezentată cu 2 cifre, MM este luna cu 2 cifre și AAAA este anul cu 4 cifre.

    • Funcția ora_umana() returnează ora în formatul hh:mm:ss, hh fiind ora (în format 24) reprezentată cu 2 cifre, mm fiind minutele cu 2 cifre și ss fiind secundele cu 2 cifre.

    • Pentru a utiliza cu ușurință data și ora fișiere jurnal functia a fost programata compact_date_time(), care livrează valoarea datei și orei în formatul YYMMDDhhmmss cu AA fiind anul reprezentat cu ultimele 2 cifre, MM luna cu 2 cifre, DD ziua cu 2 cifre, hh ora (în format 24) cu 2 cifre, mm minutele cu 2 cifre și ss secundele cu 2 cifre. Acest format, deși este text, ocupă puțin spațiu și permite o ordonare alfabetică foarte simplă.

    • Funcția data_time_MySQL() servește la prezentarea datei și orei în formatul utilizat de managerul bazei de date MySQL (sau cel nou și mai liber MariaDB) AAAA-LL-ZZ hh:mm:ss, unde AAAA este anul reprezentat cu 4 cifre, MM este luna cu 2 cifre, DD este ziua cu 2 cifre, hh este ora (în format 24) cu 2 cifre , mm sunt minutele cu 2 cifre și secundele cu 2 cifre.

    Deși există multe formate cu care să reprezinte data și ora, cel de care aveți nevoie poate să nu fie acolo, dar cu siguranță pe baza unuia dintre cele existente și folosindu-l ca exemplu, va fi ușor să adăugați o nouă metodă conform alte specificatii. Vă rugăm, dacă adăugați funcții noi, distribuiți codul (eliberați-l!) și explicați-ne cum funcționează, astfel încât să putem îmbunătăți biblioteca puțin câte puțin. Vă mulțumim!

    Ieșirea programului exemplu de mai sus ar putea fi ceva asemănător cu ceea ce este afișat în următoarea imagine: o listă de 7 valori (secunde, minute, oră, ziua săptămânii, ziua lunii, luna și anul) data și ora exprimată într-un mod „uman” (după stilul spaniol) ora ca număr întreg în formatul de ceas cu patru cifre, data și ora în format de bază de date MySQL, data și ora în format compact (pentru busteni) și temperatura internă a DS3231.

    Biblioteca de ieșire a consolei Arduino, ceas în timp real (RTC) și temperatură DS3231 prin magistrala I2C

    Posteaza un comentariu

    S-ar putea să fi ratat