Arduino には RTC が載っていないので、Arduino の電源を切っても時刻を保持したいといった場合、外部の RTC 機構を使うことになります。
今回使ってみたのは、秋月で売っていた SainSmart の "SainSmart I2C RTC DS1307 AT24C32 Real Time Clock Module Board for Arduino AVR ARM PIC" という RTC モジュール。名前長過ぎというか、思い付くままに単語を製品名に入れてしまった感が否めない…。これを選んだのは特にこだわりがあったわけではなく、秋月電子で別のパーツと一緒に注文したときに在庫があったからです。LIR2032 が付属しているので、電池を別途買う必要がないのは良いですね。
この RTC モジュールに乗っている DS1307 のライブラリに次のものがあり、今回使いました。
両方、Github から zip で落として、 Arduino IDE からライブラリに登録しておきます。
Arduino との接続ピンに関しては、
Arduino | RTC Module |
---|---|
A4 | Sda |
A5 | Scl |
5V | Vcc |
GND | Gnd |
これだけ接続すれば、時刻の読み書きはできました。
時刻設定は、ライブラリの examples ディレクトリの中にある SetTime.ino というファイルを Arduino IDE から書き込むと、PC の時刻と RTC の時刻が同期されます。
時刻の読み取りも、サンプルファイル そのままで実行できました。実行すると、
Ok,ate (D/M/Y) = 3/9/2016 DS1307RTC Read Test ------------------- Ok, Time = 22:14:26, Date (D/M/Y) = 3/9/2016 Ok, Time = 22:14:27, Date (D/M/Y) = 3/9/2016 Ok, Time = 22:14:29, Date (D/M/Y) = 3/9/2016 ...
のような表示がでます。