Arduino raamatukogu integreeritud DS3231 kuupäeva ja temperatuuri kontrollimiseks I2C kaudu

Arduino raamatukogu integreeritud DS3231 kuupäeva ja temperatuuri kontrollimiseks I2C kaudu

Arduino raamatukogu integreeritud DS3231 kuupäeva ja temperatuuri kontrollimiseks I2C kaudu

VÄRSKENDATUD: külastage ka uut teek, et hallata kuupäeva ja kellaaega mooduli DS3231 RTC ja Arduino abil täiustustega, nagu hooajaline aeg.

Operatsioon IC de reaalajas kellad (RTC) kõige populaarsemad, mida juhitakse kasutades buss I2C Tavaliselt on see väga sarnane. Pealegi, Juhtmete raamatukogu de Arduino lihtsustab oluliselt seadmetega suhtlemist Kahejuhtmeline jadaliides (TWI), I2C, konkreetne.

Sisukord

    Laias laastus koosneb protsess sellest

    1. Alustage sidet funktsiooniga alam- või ülemana (vaikimisi määratud). Wire.begin(aadress). Kui "aadress" on välja jäetud, algab suhtlus tähega μC aasta õpetaja buss I2C.

    2. Aktiveerige suhtlus I2C seadmega mäluaadressi kaudu, kus see asub, kasutades käsku Wire.beginTransmission(aadress).

    3. Kirjutage tellimus sisse buss I2C et anda seadmele teada toimingust, mida soovite, kasutades Wire.write(käsk), milles "järjestus" on operatsioonikood.

    4. Keelake side vabastamiseks buss I2C funktsiooniga Wire.endTransmission().

    5. Paluge seadmel saata teatud hulk andmeid, mis vastavad funktsiooniga taotletud toimingule (antud juhul kuupäevale ja kellaajale). Wire.requestFrom(aadress,summa).

    6. Oodake, kuni funktsiooniga nõutud andmed on lugemiseks saadaval Wire.available(), mis tagastab juba vastuvõetud ja loetavate andmete arvu.

    7. Lugege seadme saadetud andmeid ( reaalajas kell, antud juhul), kasutades funktsiooni Wire.read() nii palju kordi, kui baitidel näidatud Wire.available() mis on saadaval.

    8. Tavaliselt saadetakse andmed väga kompaktses vormingus, mistõttu on väga tõenäoline, et saadud andmeid tuleb tõlgendada viisil, mis vastab seadet kasutavas programmis tehtud andmete esitusviisile.

    Seoses DS3231-ga (ja sama seeria ühilduvatega, näiteks DS3232) ja andmete tõlgendamine, vastavalt integreeritud spetsifikatsioonidele, näiteks erinevate numbrite väärtused, mis tähistavad aega, on esitatud kahendkoodiga kümnendkoht (BCD) mida on mugavam väljendada kümnendväärtusena (a bait) kasutamiseks Arduino

    Samal real väljendatakse temperatuuri baitidena kahe täiend täisarvulise osa jaoks ja kaks bitti kümnendosa astme jaoks veerandkraadi eraldusvõimega. Neid ja teisi kellas andmete esitamise aspekte on ammendavalt käsitletud allolevas raamatukogu koodis. DS3231

    Temperatuuri kontrollimiseks selle teegiga kasutage lihtsalt meetodit loe_temperatuur() objekti DS3231 instantseeritud alguses. Kuupäeva ja kellaaja lugemiseks laaditakse need esmalt alla ja seejärel taotletakse ühes vormingus (kompaktne, inimlik...), mis on saadaval erinevateks kasutusteks, mis on dokumenteeritud alloleva kooditeegi päisdokumendis.

    Järgmine on teegi kasutamise näidiskood. Nagu eespool mainitud, loetakse temperatuuri lihtsalt funktsiooniga loe_temperatuur() klassi objektist DS3231 kuid lugemisvigade ignoreerimiseks kasutatakse kahte konstanti, mis salvestavad vastavalt andmelehele vastavalt seadme maksimaalse ja minimaalse temperatuuri ning mida loetakse koos vastavate funktsioonidega.

    Temperatuuri lugemine toimub kahes etapis: esiteks laaditakse väärtus, nii et kuupäeva või kellaaja erinevad kasutusviisid oleksid järjepidevad (ebasoodsamatel juhtudel ei näita suuremat väärtust) ja teiseks kasutatakse seda vastavalt vormingule, on vaja. Näidisprogramm (mis pole kuigi praktiline, kuigi selgitab kõiki võimalusi) näitab kõiki saadaolevaid vorminguid

    • Funktsioon date_time_value() mis tagastab osuti massiivile sõjavanker (baiti), mis sisaldavad seitset numbrilist väärtust, mis tähistavad kella kuupäeva ja kellaaega DS3231 teisendatakse kümnendkohaks (need on in BCD seadmes)

    • Funktsiooni kasutamine nädalapäeva_number() Saadakse väärtus, mis vastab pühapäevast algava nädalapäeva numbrile. Selle tekstina kuvamiseks kasutatakse massiivi ja üks lahutatakse, et alustada indeksist nullist, pühapäevast.

    • Kuupäeva vaatamiseks "kohalikus" (hispaania) vormingus kasutage funktsiooni inimese_kuupäev(), mis tagastab kursori stringile, milles kuupäev on esitatud vormingus PP/MM/YYYY, kus DD on 2 numbriga tähistatud päev, KK on 2 numbriga kuu ja AAAA on 4 numbriga aasta.

    • Funktsioon inimese_tund() tagastab kellaaja vormingus hh:mm:ss, kus hh on tund (24-vormingus), mis on esitatud kahekohalise numbriga, mm on 2-kohalised minutid ja ss on kahekohalised sekundid.

    • Kuupäeva ja kellaaja hõlpsaks kasutamiseks logifailid funktsioon on programmeeritud kompaktne_kuupäev_aeg(), mis esitab kuupäeva ja kellaaja väärtuse vormingus YYMMDDhhmmss, kus AA on aasta, mis on esitatud kahe viimase numbriga, MM kuu 2 numbriga, DD päev 2 numbriga, hh tund (2-vormingus) 24-ga. numbrid, mm minutid 2 numbriga ja ss sekundid 2 numbriga. See formaat, kuigi tegemist on tekstiga, võtab vähe ruumi ja võimaldab väga lihtsat tähestikulist järjestust.

    • Funktsioon date_time_MySQL() kasutatakse kuupäeva ja kellaaja esitamiseks andmebaasihalduri kasutatavas vormingus MySQL (või uus ja vabam MariaDB) YYYY-MM-DD hh:mm:ss, kus YYYY on aasta, mis on esitatud 4 numbriga, MM on kuu 2 numbriga, DD on päev 2 numbriga, hh on tund (24-vormingus) 2 numbriga , mm on 2-kohalised minutid ja 2-kohalised sekundid.

    Kuigi kuupäeva ja kellaaja esitamiseks on palju vorminguid, ei pruugi vajalikku seal olla, kuid kindlasti on mõne olemasoleva põhjal ja seda näitena kasutades lihtne lisada uus meetod vastavalt muud spetsifikatsioonid. Palun, kui lisate uusi funktsioone, jagage koodi (vabastage see!) ja selgitage meile, kuidas see töötab, et saaksime teeki vähehaaval paremaks muuta. Aitäh!

    Ülaltoodud näidisprogrammi väljund võib olla midagi sellist, nagu on näidatud järgmisel pildil: 7 väärtuse loend (sekundid, minutid, tund, nädalapäev, kuupäev, kuu ja aasta), kuupäev ja "inimlikult" väljendatud aeg (vastavalt hispaania stiilile) kellaaeg täisarvuna neljakohalise kella formaadis, kuupäev ja kellaaeg andmebaasi formaadis MySQL, kuupäev ja kellaaeg kompaktsel kujul (ehk logisid) ja sisetemperatuur DS3231.

    Arduino konsooli väljundteek reaalajas kella (RTC) ja temperatuuri DS3231 kaudu I2C siini kaudu

    Postita kommentaar

    Võib-olla jäite vahele