Arduino-Bibliothek zur Überprüfung des Datums und der Temperatur des integrierten DS3231 über I2C

Arduino-Bibliothek zur Überprüfung des Datums und der Temperatur des integrierten DS3231 über I2C

Arduino-Bibliothek zur Überprüfung des Datums und der Temperatur des integrierten DS3231 über I2C

AKTUALISIERT: Besuchen Sie auch die neue Bibliothek zur Verwaltung von Datum und Uhrzeit mit dem DS3231 RTC-Modul und Arduino mit Verbesserungen wie der Saisonzeit.

Der Betrieb der IC de Echtzeituhren (RTC) am beliebtesten, die mit dem gesteuert werden Bus I2C Normalerweise ist es sehr ähnlich. Neben dem Wire-Bibliothek de Arduino Vereinfacht die Kommunikation mit Geräten erheblich Zweidrahtige serielle Schnittstelle (TWI), I2C, Spezifisch.

Inhaltsverzeichnis

    Im Großen und Ganzen besteht der Prozess aus

    1. Initiieren Sie mit der Funktion die Kommunikation als Slave oder Master (standardmäßig eingestellt). Wire.begin(Adresse). Wenn „Adresse“ weggelassen wird, beginnt die Kommunikation mit dem μC der Lehrer von Bus I2C.

    2. Kommunikation aktivieren I2C mit dem Gerät über die Speicheradresse, an der es sich befindet, mithilfe des Befehls Wire.beginTransmission(Adresse).

    3. Schreiben Sie eine Bestellung in die Bus I2C um dem Gerät mitzuteilen, welchen Vorgang es ausführen soll Wire.write(Befehl), wobei „order“ der Operationscode ist.

    4. Deaktivieren Sie die Kommunikation, um die freizugeben Bus I2C mit Funktion Wire.endTransmission ().

    5. Fordern Sie das Gerät mit der Funktion auf, eine bestimmte Datenmenge zu senden, die dem angeforderten Vorgang entspricht (in diesem Fall Datum und Uhrzeit). Wire.requestFrom(Adresse,Betrag).

    6. Warten Sie, bis die mit der Funktion angeforderten Daten zum Lesen verfügbar sind Wire.available (), der die Anzahl der bereits empfangenen und lesbaren Daten zurückgibt.

    7. Lesen Sie die vom Gerät gesendeten Daten (die Echtzeituhr, in diesem Fall) mit der Funktion Wire.read() so oft wie in Bytes angegeben Wire.available () das sind verfügbar.

    8. Normalerweise werden die Daten in sehr kompakten Formaten gesendet, daher ist es sehr wahrscheinlich, dass die empfangenen Daten so interpretiert werden müssen, dass sie der Darstellung der Daten im Programm entsprechen, das das Gerät verwendet.

    Bezüglich des DS3231 (und kompatibler Modelle derselben Serie, z. B DS3232) und die Interpretation der Daten gemäß den Spezifikationen des Integrators, beispielsweise werden die Werte der verschiedenen Ziffern dargestellt, die die Zeit darstellen binär codierte Dezimalzahl (BCD) was sich bequemer als Dezimalwert ausdrücken lässt (a Byte) zur Verwendung in Arduino

    In derselben Zeile wird die Temperatur als Byte ausgedrückt Zweierkomplement für den ganzzahligen Teil und zwei Bits für den Schritt mit einer Auflösung von einem Viertel Grad des Dezimalteils. Diese und andere Aspekte der Datendarstellung auf der Uhr wurden im folgenden Bibliothekscode ausführlich besprochen. DS3231

    Um die Temperatur mit dieser Bibliothek zu überprüfen, verwenden Sie einfach die Methode read_temperature() Objekt DS3231 am Anfang instanziiert. Um Datum und Uhrzeit zu lesen, werden sie zunächst geladen und dann in einem der für verschiedene Zwecke verfügbaren Formate (kompakt, menschlich ...) angefordert, die im Header-Dokument der Codebibliothek unten dokumentiert sind.

    Im Folgenden finden Sie Beispielcode, der die Verwendung der Bibliothek zeigt. Wie oben erwähnt, wird mit der Funktion einfach die Temperatur abgelesen read_temperature() des Klassenobjekts DS3231 Um jedoch Fehler beim Ablesen zu ignorieren, werden zwei Konstanten verwendet, die jeweils die maximale und minimale Temperatur des Geräts gemäß Datenblatt speichern und mit den entsprechenden Funktionen gelesen werden.

    Die Temperaturablesung erfolgt in zwei Schritten: Erstens wird der Wert geladen, damit unterschiedliche Verwendungen des Datums oder der Uhrzeit konsistent sind (in ungünstigen Fällen wird kein höherer Wert angezeigt) und zweitens wird er entsprechend dem Format verwendet, das wird gebraucht. Das Beispielprogramm (das nicht sehr praktisch ist, obwohl es alle Möglichkeiten erklärt) zeigt alle verfügbaren Formate

    • Die Funktion date_time_value() was einen Zeiger auf ein Array zurückgibt verkohlen (Bytes) mit den sieben numerischen Werten, die Datum und Uhrzeit einer Uhr darstellen DS3231 in Dezimalzahlen umgewandelt (sie sind in BCD auf dem Gerät)

    • Verwendung der Funktion Wochentagsnummer() Man erhält einen Wert, der der Nummer des Wochentags entspricht, der am Sonntag beginnt. Um es als Text anzuzeigen, wird ein Array verwendet und eins subtrahiert, um bei Index Null, Sonntag, zu beginnen.

    • Um das Datum in einem „lokalen“ (spanischen) Format abzufragen, verwenden Sie die Funktion human_date(), der einen Zeiger auf eine Zeichenfolge zurückgibt, in der das Datum im Format TT/MM/JJJJ dargestellt wird, wobei TT der Tag mit zwei Ziffern, MM der Monat mit zwei Ziffern und JJJJ das Jahr mit vier Ziffern ist.

    • Die Funktion human_hour() gibt die Zeit im Format hh:mm:ss zurück, wobei hh die Stunde (im 24-Format) mit zwei Ziffern, mm die Minuten mit zwei Ziffern und ss die Sekunden mit zwei Ziffern ist.

    • Zur einfachen Nutzung von Datum und Uhrzeit Protokolldateien Die Funktion wurde programmiert compact_date_time(), das den Wert von Datum und Uhrzeit im Format YYMMDDhhmmss liefert, wobei AA das Jahr mit den letzten 2 Ziffern ist, MM der Monat mit 2 Ziffern, DD der Tag mit 2 Ziffern, hh die Stunde (im 24-Format) mit 2 Ziffern, mm die Minuten mit 2 Ziffern und ss die Sekunden mit 2 Ziffern. Obwohl es sich um Text handelt, nimmt dieses Format wenig Platz ein und ermöglicht eine sehr einfache alphabetische Sortierung.

    • Die Funktion date_time_MySQL() dient der Darstellung von Datum und Uhrzeit in dem vom Datenbankmanager verwendeten Format MySQL (oder das Neue und Freiere MariaDB) YYYY-MM-DD hh:mm:ss, wobei YYYY das Jahr mit 4 Ziffern ist, MM der Monat mit 2 Ziffern, DD der Tag mit 2 Ziffern und hh die Stunde (im 24-Format) mit 2 Ziffern , mm ist die Minute mit 2 Ziffern und die Sekunde mit 2 Ziffern.

    Obwohl es viele Formate gibt, mit denen Datum und Uhrzeit dargestellt werden können, ist das von Ihnen benötigte möglicherweise nicht vorhanden, aber wenn Sie auf einem der vorhandenen Formate basieren und es als Beispiel verwenden, ist es sicherlich einfach, eine neue Methode hinzuzufügen andere Spezifikationen. Wenn Sie neue Funktionen hinzufügen, teilen Sie uns bitte den Code mit (veröffentlichen Sie ihn!) und erklären Sie uns, wie er funktioniert, damit wir die Bibliothek nach und nach verbessern können. Vielen Dank!

    Die Ausgabe des obigen Beispielprogramms könnte etwa so aussehen, wie im folgenden Bild dargestellt: eine Liste mit 7 Werten (Sekunden, Minuten, Stunde, Wochentag, Tag des Monats, Monat und Jahr), dem Datum und die auf „menschliche“ Weise ausgedrückte Zeit (nach spanischem Stil), die Zeit als ganze Zahl im vierstelligen Uhrenformat, das Datum und die Uhrzeit im Datenbankformat MySQL, Datum und Uhrzeit im Kompaktformat (z Protokolle) und die Innentemperatur des DS3231.

    Arduino-Konsolenausgabebibliothek Echtzeituhr (RTC) und Temperatur DS3231 über I2C-Bus

    Geben Sie Anmerkung

    Sie können vermisst haben