arduinoにRTC接続
以前ESP32で試したRTC_DS1307について、arduino NANO にSDcardへのデータ記録が出来ることが確認できたことから、データ記録には時刻が必要ではと思い試してみた。
ネットワークへの接続が出来ればNTPによる時刻の取得も出来るがNANOにはそれもない。
接続はI2Cのため他のI2Cセンサーと同じように接続する。
I2C RTC Arduino
GND GND GND
VCC VCC 5V
SCL SCL A5
SDA SDA A4
------------------------------------------------------------------------------------
#include
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}
-------------------------------------------------------------------------------------------
時刻がずれている場合は、下のように時刻調整部分をブロックの外に出して再コンパイル&転送する。
現在時刻がコンパイルした時刻で設定される。 (理屈上数秒の遅れが出ます)。
-------------------------------------------------------------------------------------------
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
// RTC.adjust(DateTime(__DATE__, __TIME__));
}
RTC.adjust(DateTime(__DATE__, __TIME__)); // ここに出す
}
------------------------------------------------------------------------------------------
シリアルモニターの表示、1秒毎に時間が表示される。