I3231C 経由で統合 DS2 の日付と温度をチェックするための Arduino ライブラリ

I3231C 経由で統合 DS2 の日付と温度をチェックするための Arduino ライブラリ

I3231C 経由で統合 DS2 の日付と温度をチェックするための Arduino ライブラリ

更新: 新しいページにもアクセスしてください DS3231 RTC モジュールと Arduino で日付と時刻を管理するライブラリ 季節限定時間などの改善が加えられました。

の操作 IC de リアルタイムクロック (RTC) を使用して制御される最も一般的なもの バスI2C 通常は非常によく似ています。さらに、 ワイヤーライブラリ de Arduinoの デバイスとの通信を大幅に簡素化します XNUMX 線式シリアル インターフェイス (TWI), I2C、 特定の。

目次

    大まかに言うと、このプロセスは次のとおりです。

    1. 関数を使用してスレーブまたはマスター (デフォルトで設定) として通信を開始します。 Wire.begin(アドレス)。 「アドレス」を省略した場合は、アドレスから通信が開始されます。 μC の先生 バスI2C.

    2. コミュニケーションを活性化する I2C コマンドを使用して、デバイスが配置されているメモリアドレスを介してデバイスと接続します。 Wire.beginTransmission(アドレス).

    3. に注文を書きます バスI2C を使用して、デバイスに実行させたい操作を伝えます。 Wire.write(コマンド)ここで、「order」は操作コードです。

    4. 通信を無効にして解除します。 バスI2C 機能付き Wire.endTransmission().

    5. 関数を使用して、要求された操作に対応する一定量のデータ (この場合は日付と時刻) の送信をデバイスに要求します。 Wire.requestFrom(アドレス,金額).

    6. 関数で要求されたデータが読み取り可能になるまで待ちます Wire.available()、すでに受信されており、読み取ることができるデータの数を返します。

    7. デバイスから送信されたデータを読み取ります ( リアルタイムクロック、この場合) 関数を使用する Wire.read() 指定されたバイト数だけ Wire.available() 利用可能です。

    8. 通常、データは非常にコンパクトな形式で送信されるため、デバイスを使用するプログラムで作成されたデータの表現に対応する方法で受信したデータを解釈する必要がある可能性が非常に高くなります。

    DS3231(および同シリーズの互換品、 DS3232)および統合された仕様に従ってデータの解釈が行われます。たとえば、時間を表すさまざまな桁の値は次のように表されます。 XNUMX進化XNUMX進数(BCD) これは XNUMX 進数値 (a バイト) で使用する Arduinoの

    同じ行で、温度はバイトとして表されます。 XNUMXの補数 整数部分に XNUMX ビット、小数部分の XNUMX 分の XNUMX 度の分解能でステップに XNUMX ビット。クロック上のデータ表現のこれらおよびその他の側面については、以下のライブラリ コードで徹底的に説明されています。 DS3231

    このライブラリで温度を確認するには、次のメソッドを使用するだけです 読み取り温度() オブジェクト DS3231 初めにインスタンス化されます。日付と時刻を読み取るには、まず日付と時刻がロードされ、次にさまざまな用途に使用できる形式 (コンパクト、ヒューマンなど) の XNUMX つで要求されます。これは、以下のコード ライブラリのヘッダー ドキュメントに記載されています。

    以下は、ライブラリの使用方法を示すサンプルコードです。前述したように、関数で温度を読み取るだけです。 読み取り温度() クラスオブジェクトの DS3231 ただし、読み取りエラーを無視するために、データシートに従ってデバイスの最高温度と最低温度をそれぞれ保存し、対応する関数で読み取られる XNUMX つの定数が使用されます。

    温度の読み取りは XNUMX 段階で実行されます。まず、日付または時刻のさまざまな使用が一貫するように値がロードされます (不利な場合にはより高い値が表示されなくなります)。次に、次の形式に従って使用されます。が必要です。サンプル プログラム (すべての可能性を説明していますが、あまり実用的ではありません) は、利用可能なすべての形式を示しています。

    • 関数 date_time_value() 配列へのポインタを返します チャリオット 時計の日付と時刻を表すXNUMXつの数値を含む(バイト) DS3231 XNUMX 進数に変換されます (それらは BCD デバイス上)

    • 機能を使用する 曜日番号() 日曜日から始まる曜日の番号に対応する値が取得されます。テキストとして表示するには、配列が使用され、インデックス XNUMX、つまり日曜日から始まるように XNUMX が減算されます。

    • 「ローカル」(スペイン語)形式で日付を参照するには、関数を使用します。 人間の日付()は、日付が DD/MM/YYYY 形式で表される文字列へのポインタを返します。DD は 2 桁で表される日、MM は 2 桁で月、YYYY は 4 桁で年です。

    • 関数 human_hour() hh:mm:ss の形式で時刻を返します。hh は 24 桁で表される時 (2 形式)、mm は 2 桁の分、ss は 2 桁の秒です。

    • 日付と時刻を簡単に使用するには ログファイル 機能はプログラムされています コンパクト_日付_時間()これは、日付と時刻の値を YYMMDDhhmmss の形式で返します。AA は最後の 2 桁で表される年、MM は 2 桁の月、DD は 2 桁の日、hh は 24 で表される時間 (2 形式) です。桁、mm は 2 桁の分、ss は 2 桁の秒です。この形式は、テキストではありますが、占有スペースがほとんどなく、非常に簡単なアルファベット順の順序が可能です。

    • 関数 date_time_MySQL() データベース管理者が使用する形式で日付と時刻を表示するために使用されます。 MySQL (または新しくてより自由な MariaDB) YYYY-MM-DD hh:mm:ss、YYYY は 4 桁で表される年、MM は 2 桁の月、DD は 2 桁の日、hh は 24 桁の時 (2 形式) , mmは2桁の分と2桁の秒です。

    日付と時刻を表す形式は多数あり、必要な形式が存在しない可能性もありますが、既存の形式の XNUMX つに基づいてそれを例として使用すると、次のような新しいメソッドを簡単に追加できます。その他の仕様。新しい機能を追加した場合は、コードを共有 (リリースしてください) し、それがどのように機能するかを説明して、ライブラリを少しずつ改良してください。ありがとうございます!

    上記のプログラム例の出力は、次の図に示すようなものになります。7 つの値 (秒、分、時、曜日、日、月、年) のリスト、日付、および(スペイン風に)「人間的」に表現された時刻 XNUMX 桁の時計形式の整数としての時刻、データベース形式の日付と時刻 MySQL、コンパクト形式の日付と時刻 ( ログ) と内部温度 DS3231.

    I3231C バス経由の Arduino コンソール出力ライブラリ リアルタイム クロック (RTC) および温度 DS2

    コメントを投稿

    見逃したかもしれません