Arduino biblioteka, kad patikrintų integruoto DS3231 datą ir temperatūrą per I2C

Arduino biblioteka, kad patikrintų integruoto DS3231 datą ir temperatūrą per I2C

Arduino biblioteka, kad patikrintų integruoto DS3231 datą ir temperatūrą per I2C

ATNAUJINTA: Taip pat aplankykite naują biblioteka, skirta valdyti datą ir laiką naudojant DS3231 RTC modulį ir Arduino su patobulinimais, pvz., sezoniniu laiku.

Operacija IC de realaus laiko laikrodžiai (RTC) populiariausi, kurie valdomi naudojant autobusas I2C Paprastai jis yra labai panašus. Be to, Laidų biblioteka de Arduino labai supaprastina ryšį su įrenginiais Dviejų laidų nuoseklioji sąsaja (TWI), I2C, konkretus.

Turinys

    Apskritai, procesas susideda iš

    1. Pradėkite ryšius kaip pavaldūs arba valdantys asmenys (nustatyta pagal numatytuosius nustatymus) su funkcija Wire.begin(adresas). Jei „adresas“ praleistas, ryšiai prasideda nuo μC mokytojas autobusas I2C.

    2. Suaktyvinkite bendravimą I2C su įrenginiu per atminties adresą, kuriame jis yra, naudodami komandą Wire.beginTransmission(adresas).

    3. Parašykite užsakymą į autobusas I2C norėdami pasakyti įrenginiui operaciją, kurią norite atlikti, naudodami Wire.write (komanda), kuriame „tvarka“ yra operacijos kodas.

    4. Išjunkite ryšius, kad paleistumėte autobusas I2C su funkcija „Wire.endTransmission“ ().

    5. Paprašykite įrenginio išsiųsti tam tikrą duomenų kiekį, atitinkantį operaciją, kurios buvo prašoma (šiuo atveju datą ir laiką) naudojant funkciją Wire.questFrom(adresas,suma).

    6. Palaukite, kol duomenys, kurių prašoma naudojant funkciją, bus prieinami skaitymui Wire.available (), kuris grąžina jau gautų ir perskaitytų duomenų skaičių.

    7. Skaitykite įrenginio siunčiamus duomenis ( realaus laiko laikrodis, šiuo atveju) naudodami funkciją Wire.read() tiek kartų, kiek nurodyta baitų Wire.available () kurie yra prieinami.

    8. Paprastai duomenys siunčiami labai kompaktiškais formatais, todėl labai tikėtina, kad gautus duomenis reikės interpretuoti taip, kad jie atitiktų įrenginį naudojančioje programoje padarytų duomenų atvaizdavimą.

    Dėl DS3231 (ir suderinamų tos pačios serijos, pvz., DS3232) ir duomenų interpretavimas, atsižvelgiant į integruoto specifikacijas, pavyzdžiui, skirtingų skaitmenų, žyminčių laiką, reikšmės pateikiamos dvejetainis koduotas dešimtainis (BCD) kurią bus patogiau išreikšti kaip dešimtainę reikšmę (a baitas) naudoti Arduino

    Toje pačioje eilutėje temperatūra išreiškiama baitais coliais dviejų papildymas sveikajai daliai ir du bitai žingsniui, kurio skiriamoji geba yra ketvirčio laipsnio dešimtainė dalis. Šie ir kiti duomenų atvaizdavimo laikrodyje aspektai buvo išsamiai aptarti toliau pateiktame bibliotekos kode. DS3231

    Norėdami patikrinti temperatūrą naudodami šią biblioteką, tiesiog naudokite šį metodą skaitymo_temperatūra() Objektas DS3231 pradžioje įvedamas momentas. Kad būtų galima perskaityti datą ir laiką, jie pirmiausia įkeliami, o tada pateikiami vienu iš formatų (kompaktiškas, žmogiškasis...), kurie yra prieinami įvairiems tikslams, aprašyti toliau pateiktos kodų bibliotekos antraštės dokumente.

    Toliau pateikiamas kodo pavyzdys, rodantis, kaip naudotis biblioteka. Kaip minėta aukščiau, temperatūra tiesiog nuskaitoma naudojant funkciją skaitymo_temperatūra() klasės objekto DS3231 tačiau, norint nepaisyti skaitymo klaidų, naudojamos dvi konstantos, kurios atitinkamai išsaugo maksimalią ir mažiausią įrenginio temperatūrą pagal duomenų lapą ir kurios nuskaitomos su atitinkamomis funkcijomis.

    Temperatūros nuskaitymas atliekamas dviem etapais: pirmiausia įkeliama reikšmė, kad skirtingi datos ar laiko naudojimo būdai būtų nuoseklūs (nepalankiais atvejais nerodys didesnės reikšmės), o antra – naudojama pagal formatą, yra reikalingas. Pavyzdinėje programoje (kuri nėra labai praktiška, nors paaiškina visas galimybes) rodo visus galimus formatus

    • Funkcija date_time_value() kuris grąžina žymeklį į masyvą bakas (baitai), kuriuose yra septynios skaitinės reikšmės, kurios rodo datą ir laiką laikrodyje DS3231 konvertuoti į dešimtainį skaičių (jie yra BCD įrenginyje)

    • Funkcijos naudojimas savaitės dienos_numeris() Gaunama reikšmė, atitinkanti savaitės dienos, prasidedančios sekmadienį, skaičių. Kad jis būtų rodomas kaip tekstas, naudojamas masyvas, o vienas atimamas pradedant nuo nulio, sekmadienį.

    • Norėdami sužinoti datą „vietiniu“ (ispanų) formatu, naudokite funkciją žmogaus_data(), kuris grąžina žymeklį į eilutę, kurioje data pavaizduota DD/MM/MMMM formatu, kur DD yra diena, pavaizduota 2 skaitmenimis, MM yra mėnuo su 2 skaitmenimis, o YYYY yra metai su 4 skaitmenimis.

    • Funkcija žmogaus_valanda() grąžina laiką formatu hh:mm:ss, kur hh yra valanda (24 formatu), pavaizduota 2 skaitmenimis, mm yra minutės su 2 skaitmenimis ir ss yra sekundės su 2 skaitmenimis.

    • Kad būtų lengviau naudoti datą ir laiką žurnalo failus funkcija buvo užprogramuota kompaktiškas_datos_laikas(), kuris pateikia datos ir laiko reikšmę formatu YYMMDDhhmmss, kai AA yra metai, pavaizduoti paskutiniais 2 skaitmenimis, MM mėnuo su 2 skaitmenimis, DD diena su 2 skaitmenimis, hh valanda (24 formatu) su 2 skaitmenys, mm minutės su 2 skaitmenimis ir ss sekundės su 2 skaitmenimis. Šis formatas, nors ir yra tekstas, užima mažai vietos ir leidžia labai paprastai išdėstyti abėcėlę.

    • Funkcija data_time_MySQL() padeda pateikti datą ir laiką duomenų bazės tvarkyklės naudojamu formatu MySQL (arba naujas ir laisvesnis MariaDB) YYYY-MM-DD hh:mm:ss, kur YYYY yra metai, pavaizduoti 4 skaitmenimis, MM yra mėnuo su 2 skaitmenimis, DD yra diena su 2 skaitmenimis, hh yra valanda (24 formatu) su 2 skaitmenimis , mm yra minutės su 2 skaitmenimis ir sekundės su 2 skaitmenimis.

    Nors yra daug formatų, kuriais galima pavaizduoti datą ir laiką, reikiamo gali ir nebūti, bet tikrai remiantis vienu iš esamų ir naudojant jį kaip pavyzdį, bus nesunku pridėti naują metodą pagal kitos specifikacijos. Prašau, jei pridėsite naujų funkcijų, pasidalinkite kodu (išleiskite!) ir paaiškinkite, kaip jis veikia, kad galėtume po truputį gerinti biblioteką Ačiū!

    Aukščiau pateiktos pavyzdinės programos išvestis gali būti panaši į tai, kas parodyta šiame paveikslėlyje: 7 reikšmių sąrašas (sekundės, minutės, valanda, savaitės diena, mėnesio diena, mėnuo ir metai), data ir laikas, išreikštas „žmogišku“ būdu (pagal ispanų stilių), laikas kaip sveikas skaičius keturių skaitmenų laikrodžio formatu, data ir laikas duomenų bazės formatu MySQL, data ir laikas kompaktišku formatu (skirta žurnalai) ir vidinė temperatūra DS3231.

    Arduino konsolės išvesties bibliotekos realaus laiko laikrodis (RTC) ir temperatūra DS3231 per I2C magistralę

    Rašyti komentarą

    Galbūt praleidote