Arduino könyvtár az integrált DS3231 dátumának és hőmérsékletének ellenőrzéséhez az I2C-n keresztül

Arduino könyvtár az integrált DS3231 dátumának és hőmérsékletének ellenőrzéséhez az I2C-n keresztül

Arduino könyvtár az integrált DS3231 dátumának és hőmérsékletének ellenőrzéséhez az I2C-n keresztül

FRISSÍTVE: Látogassa meg az újat is könyvtár a dátum és idő kezeléséhez a DS3231 RTC modullal és az Arduino-val olyan fejlesztésekkel, mint a szezonális idő.

A IC de valós idejű órák (RTC) legnépszerűbbek, amelyeket a busz I2C Általában nagyon hasonló. Mellett Vezetékkönyvtár de Arduino nagyban leegyszerűsíti az eszközökkel való kommunikációt Kétvezetékes soros interfész (TWI), I2C, konkrét.

Tartalomjegyzék

    Nagy vonalakban a folyamat abból áll

    1. Kommunikáció kezdeményezése szolgaként vagy mesterként (alapértelmezés szerint) a funkcióval Wire.begin(cím). Ha a "cím" ki van hagyva, a kommunikáció a következővel kezdődik μC a tanára busz I2C.

    2. Aktiválja a kommunikációt I2C az eszközzel azon a memóriacímen keresztül, ahol az található, a paranccsal Wire.beginTransmission(cím).

    3. Írjon megrendelést a busz I2C segítségével elmondja az eszköznek a végrehajtani kívánt műveletet Wire.write(parancs), amelyben a "sorrend" a műveleti kód.

    4. Kapcsolja ki a kommunikációt a felszabadításához busz I2C funkcióval Wire.endTransmission().

    5. Kérje meg a készüléket, hogy küldjön egy bizonyos mennyiségű adatot, amely megfelel a kért műveletnek (ebben az esetben a dátum és az idő) a funkcióval Wire.requestFrom(cím,összeg).

    6. Várja meg, amíg a funkcióval kért adatok olvashatók lesznek Wire.available(), amely visszaadja a már beérkezett és kiolvasható adatok számát.

    7. Olvassa el a készülék által küldött adatokat (a valós idejű óra, ebben az esetben) a függvény használatával Wire.read() ahány bájt jelezte Wire.available() amelyek rendelkezésre állnak.

    8. Általában az adatok nagyon kompakt formátumban kerülnek elküldésre, így nagyon valószínű, hogy a kapott adatokat úgy kell értelmezni, hogy az megfeleljen az eszközt használó programban készített adatok megjelenítésének.

    Ami a DS3231-et (és az azonos sorozatba tartozó kompatibiliseket, mint pl DS3232) és az adatok értelmezése, az integrált specifikációi szerint például az időt jelző különböző számjegyek értékeit ábrázoljuk binárisan kódolt decimális (BCD) amelyet kényelmesebb decimális értékként kifejezni (a byte) használni Arduino

    Ugyanezen a sorban a hőmérsékletet egy bájtban fejezzük ki kettő komplementere az egész részhez és két bit a lépéshez, negyed fokos felbontással a decimális részhez. Az adatok órajelen történő megjelenítésének ezeket és más szempontjait az alábbi könyvtári kód kimerítően tárgyalja. DS3231

    A hőmérséklet ellenőrzéséhez ezzel a könyvtárral egyszerűen használja a módszert read_temperature() az objektum DS3231 az elején példányosítva. A dátum és az idő leolvasásához először betöltődnek, majd lekérik azokat a különböző felhasználási célokra elérhető formátumok (kompakt, emberi...) egyikében, az alábbi kódkönyvtár fejléc dokumentumában dokumentálva.

    A következő példakód bemutatja a könyvtár használatát. Mint fentebb említettük, a hőmérséklet egyszerűen leolvasható a funkcióval read_temperature() osztály objektumának DS3231 de a leolvasási hibák figyelmen kívül hagyására két olyan állandót használnak, amelyek az adatlap szerint tárolják a készülék maximális és minimális hőmérsékletét, és a megfelelő függvényekkel kerülnek kiolvasásra.

    A hőmérséklet leolvasása két lépésben történik: először az érték betöltése történik, így a dátum vagy az idő különböző felhasználásai konzisztensek lesznek (kedvezőtlen esetekben nem mutatnak magasabb értéket), másodszor pedig a formátum szerint kerül felhasználásra. szükség van rá. A példaprogram (ami nem túl praktikus, bár minden lehetőséget elmagyaráz) megmutatja az összes elérhető formátumot

    • A funkció dátum_idő_érték() amely mutatót ad vissza egy tömbhöz faszén (bájt), amely azt a hét számértéket tartalmazza, amelyek a dátumot és az időt jelentik egy órán DS3231 decimálisra konvertálva (benne vannak BCD a készüléken)

    • A funkció használata hétköznap_szám() Olyan értéket kapunk, amely megfelel a hét vasárnaptól kezdődő napjának számának. Szövegként való megjelenítéséhez a rendszer egy tömböt használ, és az egyiket kivonja a nulla indextől kezdve, vasárnap.

    • A dátum "helyi" (spanyol) formátumban történő lekérdezéséhez használja a függvényt emberi_dátum(), amely egy mutatót ad vissza egy olyan karakterláncra, amelyben a dátum NN/HH/ÉÉÉÉ formátumban van ábrázolva, ahol DD a 2 számjeggyel ábrázolt nap, HH a 2 számjegyű hónap és ÉÉÉÉ az év 4 számjeggyel.

    • A funkció emberi_óra() visszaadja az időt óó:pp:ss formátumban, ahol az ó az óra (24 formátumban) 2 számjeggyel, a mm a 2 számjegyű perc, az ss pedig a 2 számjegyű másodperc.

    • A dátum és az idő egyszerű használatához naplófájlok a funkció be van programozva kompakt_dátum_idő(), amely a dátum és az idő értékét YYMMDDhhhmmss formátumban adja meg, ahol az AA az év utolsó 2 számjeggyel, MM a hónap 2 számjeggyel, DD a nap 2 számjeggyel, óó az óra (24 formátumban) 2 számjeggyel. számjegyek, mm a percek 2 számjeggyel és ss a másodpercek 2 számjeggyel. Ez a formátum, annak ellenére, hogy szöveges, kis helyet foglal, és nagyon egyszerű ábécé sorrendet tesz lehetővé.

    • A funkció dátum_idő_MySQL() a dátum és az idő megjelenítésére szolgál az adatbázis-kezelő által használt formátumban MySQL (vagy az új és szabadabb MariaDB) ÉÉÉÉ-HH-NN óó:pp:ss, ahol ÉÉÉÉ az év 4 számjeggyel, MM a hónap 2 számjeggyel, DD a nap 2 számjeggyel, óó az óra (24 formátumban) 2 számjeggyel , mm a perc 2 számjegyből és a másodperc 2 számjegyből áll.

    Bár sokféle formátum létezik a dátum és az idő ábrázolására, előfordulhat, hogy nincs meg az, amelyre szüksége van, de a meglévők valamelyike ​​alapján és példaként használva biztosan könnyű lesz új metódust hozzáadni a egyéb specifikációk. Kérjük, ha új funkciókat ad hozzá, ossza meg a kódot (adja ki!) és magyarázza el nekünk, hogyan működik, hogy apránként jobbá tegyük a könyvtárat. Köszönjük!

    A fenti példaprogram kimenete a következő képen láthatóhoz hasonló lehet: 7 értékből álló lista (másodperc, perc, óra, a hét napja, a hónap napja, hónap és év), a dátum és a az "emberi" módon kifejezett idő (spanyol stílus szerint) az idő egész számként négyjegyű óraformátumban, a dátum és az idő adatbázis formátumban MySQL, dátum és idő kompakt formátumban (az naplók) és a belső hőmérséklet DS3231.

    Arduino konzol kimeneti könyvtár valós idejű óra (RTC) és hőmérséklet DS3231 I2C buszon keresztül

    Hozzászólás Comment

    Lehet, hogy lemaradtál