時間をとる 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モジュールから値をとってきて入れる仕組み。
動作の様子
Post a Comment