Arduinoでエアコンの1時間タイマーを自作する

Arduino UNOでUTC時刻をJST時刻に変換する

この記事は別ブログ(2021/04/08投稿)から移行したものです。

UTC時刻をJST時刻(+9時間)に変換します。
完全に自分用メモです。

GPSロガーを自作した際にログファイルのタイムスタンプを生成するために見つけた方法です。
めちゃ簡単ですので。

以下がプログラムです(ループで"12時間進める"を繰り返します)
#include <TimeLib.h>
const int offset = 12;//UTCをJSTに変換するなら"9"を入れる
void setup() {
  Serial.begin(115200);
  setTime(2, 1, 1, 25, 1, 2020);//hour,minute,second,day,month,year
}

void loop() {
  delay(100);
  adjustTime(offset * SECS_PER_HOUR);//システム時刻を変換
  Serial.println(String(year()) + "/" + month() + "/" + day() + "," + hour() + ":" + minute() + ":" + second());
}

TimeLib.hライブラリを使用します。
"setTime"でArduinoのシステム時刻にGPS等から取得した時刻を設定します(上記のプログラムは検証用なので適当な日時が入っています。)

次に"adjustTime"でシステム時刻を補正します(UTC→JSTなら9時間進めたいので"const int offset= 12;"の値を9に)

あとは"year()""month()"などで時刻を読み込むと、補正された時刻が得られます。


もちろん閏(うるう)年にも対応しているので複雑な計算式を組み込む必要もありません。


先ほどのプログラムを実行してみました。
2021年は閏年ではないので2月は28日まで。

2020年は閏年ですので2月は29日まであります。