Header Ads

時間をとる ZS-042リアルタイムクロックの使い方


ArduinoでRTCを使って日時を取得しましょう。ZS-04は、日付や時間を記録し時間を測り続けるモジュール。これらを総称してリアルタイムクロックモジュール(RTC)と呼んでいる。その中でもDS3231系のモジュールだ。



LIR2032のボタン電池を載せておけばArduinoから電源が途絶えても時を刻み続ける。(CR2032でも動くことは動くけど仕様上あんまりよくないかも)

#1:つなぎ方

I2C通信を使う。SCLをアナログ4番ピンに、SDAはアナログ5番ピンに。VCCは5V、GNDははGNDに繋ぐ。

#2:ライブラリの導入

解凍してドキュメント内のArduinoフォルダのLibrariesフォルダに入れる。

#3:ブロック図


コードブロックと関数ブロックは次のように

先にやっておく

  • [head]#include <DS3231.h>
  • [head]DS3231 rtc(SDA,SCL);
  • [head]Time t;
  • [先にやっておく]rtc.begin();
  • [仕事の名前]SetVal

くりかえす

  • [仕事の名前]GetTime
あとは最後に1秒待つとシリアルで好きなものを出力できる。
  • Year:年
  • Month:月
  • Date:日
  • Dow:曜日
  • Hour:時間
  • Min:分
  • Sec:秒

”仕事の名前 やる”

関数を2つ使っている。
SetVal
今回は名前をたくさん使うのでSetValにまとめてある。

GetTime
値をとってくるコードブロックGetTime

  • [ずっと]t =rtc.getTime();
  • [ずっと]_ABVAR_1_Year = t.year;
  • [ずっと]_ABVAR_2_Month= t.mon;
  • [ずっと]_ABVAR_3_Date = t.date;
  • [ずっと]_ABVAR_4_Dow= t.dow;
  • [ずっと]_ABVAR_5_Hour= t.hour;
  • [ずっと]_ABVAR_6_Min= t.min;
  • [ずっと]_ABVAR_7_Sec= t.sec;
ブロックで使う名前にRTCモジュールから値をとってきて入れる仕組み。

動作の様子

Powered by Blogger.