Arduino-kirjasto integroidun DS3231:n päivämäärän ja lämpötilan tarkistamiseksi I2C:n kautta

Arduino-kirjasto integroidun DS3231:n päivämäärän ja lämpötilan tarkistamiseksi I2C:n kautta

Arduino-kirjasto integroidun DS3231:n päivämäärän ja lämpötilan tarkistamiseksi I2C:n kautta

PÄIVITETTY: Käy myös uudessa kirjasto päivämäärän ja ajan hallintaan DS3231 RTC -moduulilla ja Arduinolla parannuksilla, kuten kausiajalla.

Laitteen käyttö IC de reaaliaikakellot (RTC) suosituimpia, joita ohjataan käyttämällä bussi I2C Se on yleensä hyvin samanlainen. Sitä paitsi, Wire kirjasto de Työläs yksinkertaistaa huomattavasti viestintää laitteiden kanssa Kaksijohtiminen sarjaliitäntä (TWI), I2C, erityistä.

Sisällysluettelo

    Yleisesti ottaen prosessi koostuu

    1. Aloita tiedonsiirto orjana tai isäntänä (asetettu oletuksena) toiminnon kanssa Wire.begin(osoite). Jos "osoite" jätetään pois, viestintä alkaa μC opettaja bussi I2C.

    2. Aktivoi viestintä I2C laitteen kanssa sen muistiosoitteen kautta, jossa se sijaitsee, komennolla Wire.beginTransmission(osoite).

    3. Kirjoita tilaus bussi I2C kertoaksesi laitteelle toiminnon, jonka haluat sen suorittavan, käyttämällä Wire.write(komento), jossa "järjestys" on toimintakoodi.

    4. Poista viestintä käytöstä vapauttaaksesi bussi I2C toiminnolla Wire.endTransmission ().

    5. Pyydä laitetta lähettämään tietty määrä dataa, joka vastaa toiminnolla pyydettyä toimintoa (tässä tapauksessa päivämäärä ja kellonaika) Wire.requestFrom(osoite,summa).

    6. Odota, että toiminnolla pyydetyt tiedot ovat luettavissa Wire.available (), joka palauttaa jo vastaanotettujen ja luettavissa olevien tietojen määrän.

    7. Lue laitteen lähettämät tiedot ( reaaliaikainen kello, tässä tapauksessa) käyttämällä toimintoa Wire.read() niin monta kertaa kuin tavuja on ilmoitettu Wire.available () jotka ovat käytettävissä.

    8. Normaalisti tiedot lähetetään erittäin kompakteissa muodoissa, joten on erittäin todennäköistä, että vastaanotettu data on tulkittava tavalla, joka vastaa laitetta käyttävän ohjelman esittämää dataa.

    Mitä tulee DS3231:een (ja saman sarjan yhteensopiviin laitteisiin, kuten DS3232) ja tietojen tulkinta, integroidun spesifikaatioiden mukaan, esimerkiksi aikaa edustavien eri numeroiden arvot esitetään binäärikoodattu desimaali (BCD) joka on helpompi ilmaista desimaaliarvona (a tavu) käytettäväksi Työläs

    Samalla rivillä lämpötila ilmaistaan ​​tavuna tuumaa kahden komplementti kokonaislukuosalle ja kaksi bittiä desimaaliosan askeleelle neljännesasteen resoluutiolla. Näitä ja muita kellon datan esittämisen näkökohtia on käsitelty tyhjentävästi alla olevassa kirjastokoodissa. DS3231

    Voit tarkistaa lämpötilan tällä kirjastolla käyttämällä menetelmää lue_lämpötila() esineen DS3231 instantoitu alussa. Päivämäärän ja kellonajan lukemista varten ne ladataan ensin ja sitten niitä pyydetään jossakin muodossa (kompakti, ihminen...), joka on saatavilla eri käyttötarkoituksiin, dokumentoitu alla olevan koodikirjaston otsikkoasiakirjassa.

    Seuraavassa on esimerkkikoodi, joka näyttää kuinka kirjastoa käytetään. Kuten edellä mainittiin, lämpötila luetaan yksinkertaisesti toiminnolla lue_lämpötila() luokan objektista DS3231 mutta lukuvirheiden huomiotta jättämiseksi käytetään kahta vakiota, jotka tallentavat vastaavasti laitteen maksimi- ja minimilämpötilan datalehden mukaan ja jotka luetaan vastaavien toimintojen kanssa.

    Lämpötilan mittaus suoritetaan kahdessa vaiheessa: ensin ladataan arvo, jotta päivämäärän tai kellonajan eri käyttötavat ovat yhdenmukaisia ​​(eivät näytä korkeampaa arvoa epäsuotuisissa tapauksissa) ja toiseksi sitä käytetään sen muodon mukaan, joka tarvitaan. Esimerkkiohjelma (joka ei ole kovin käytännöllinen, vaikka se selittää kaikki mahdollisuudet) näyttää kaikki käytettävissä olevat muodot

    • Toiminto päivämäärä_aika_arvo() joka palauttaa osoittimen taulukkoon sotavaunut (tavua), jotka sisältävät seitsemän numeroarvoa, jotka edustavat kellon päivämäärää ja aikaa DS3231 muunnetaan desimaaliksi (ne ovat in BCD laitteessa)

    • Toiminnon käyttäminen viikonpäivän_numero() Saadaan arvo, joka vastaa sunnuntaista alkavan viikonpäivän numeroa. Sen näyttämiseksi tekstinä käytetään taulukkoa ja yksi vähennetään alkaen indeksistä nolla, sunnuntai.

    • Käytä toimintoa nähdäksesi päivämäärän "paikallisessa" (espanjankielisessä) muodossa ihmisen_päivämäärä(), joka palauttaa osoittimen merkkijonoon, jossa päivämäärä esitetään muodossa PP/KK/VVVV, jossa PP on päivä, joka on esitetty 2 numerolla, MM on kuukausi 2 numerolla ja VVVV on vuosi 4 numerolla.

    • Toiminto ihmisen_tunti() palauttaa ajan muodossa tt:mm:ss, jossa hh on tunti (24-muodossa), joka esitetään 2 numerolla, mm on minuutit 2 numerolla ja ss on sekunnit 2 numerolla.

    • Päivämäärän ja ajan käyttäminen on helppoa lokitiedostot toiminto on ohjelmoitu kompakti_päivämäärä_aika(), joka toimittaa päivämäärän ja kellonajan arvon muodossa VVKKPPhhmmss, jossa AA on vuosi, joka on esitetty kahdella viimeisellä numerolla, MM kuukausi 2 numerolla, DD päivä 2 numerolla, hh tunti (2-muodossa) 24 numeroa, mm minuutit 2 numerolla ja ss sekunnit 2 numerolla. Tämä muoto, vaikka se on tekstiä, vie vähän tilaa ja mahdollistaa erittäin yksinkertaisen aakkosjärjestyksen.

    • Toiminto päivämäärä_aika_MySQL() näyttää päivämäärän ja kellonajan tietokannan hallinnan käyttämässä muodossa MySQL (tai uusi ja vapaampi MariaDB) VVVV-KK-PP tt:mm:ss, jossa VVVV on vuosi 4 numerolla, MM on kuukausi 2 numerolla, PP on päivä 2 numerolla, hh on tunti (24 muodossa) 2 numerolla , mm on minuutit 2 numerolla ja sekunnit 2 numerolla.

    Vaikka päivämäärän ja kellonajan esittämiseen on monia muotoja, tarvitsemaasi ei välttämättä löydy, mutta varmasti jonkin olemassa olevan muodon perusteella ja käyttämällä sitä esimerkkinä, on helppo lisätä uusi menetelmä. muut tekniset tiedot. Ole hyvä ja jos lisäät uusia toimintoja, jaa koodi (vapauta se!) ja kerro meille miten se toimii, jotta voimme parantaa kirjastoa pikkuhiljaa Kiitos!

    Yllä olevan esimerkkiohjelman tulos voisi olla jotain seuraavan kuvan kaltaista: luettelo 7 arvosta (sekunnit, minuutit, tunti, viikonpäivä, kuukauden päivä, kuukausi ja vuosi) päivämäärä ja "inhimillisesti" ilmaistu aika (espanjalaisen tyylin mukaan) aika kokonaislukuna nelinumeroisessa kellomuodossa, päivämäärä ja aika tietokantamuodossa MySQL, päivämäärä ja aika kompaktissa muodossa (for lokit) ja laitteen sisäinen lämpötila DS3231.

    Arduino-konsolin lähtökirjaston reaaliaikainen kello (RTC) ja lämpötila DS3231 I2C-väylän kautta

    Post Comment

    Olet ehkä missannut