#include <M5Unified.h>
#include <WiFi.h>
const char* ssid = "ics-ap";
const char* password = "jikkenics";
void setup() {
auto cfg = M5.config();
cfg.serial_baudrate = 115200; // ボーレートを115200に設定
M5.begin(cfg);
M5.Display.setRotation(3);
M5.Display.setFont(&fonts::lgfxJapanGothic_16);
M5.Display.println("NTP 01");
M5.Display.setTextScroll(true);
WiFi.begin(ssid, password); // 接続開始
while (WiFi.status() != WL_CONNECTED) { // 接続中...
M5.Display.print(".");
M5.delay(500);
}
char* ntpserver = "ntp.nict.jp" ;
configTime(9 * 3600, 0, ntpserver) ; //GMTとの時差(秒) が9*3600, サマータイムで進める時間(秒)が0
M5.Display.fillScreen(CYAN);
M5.Display.setCursor(0, 40);
M5.Display.setTextColor(BLACK, CYAN);
M5.Display.print(" Wifi Connected!\n ");
String gotip = WiFi.localIP().toString(); // m5デバイスのIPアドレス
M5.Display.println(gotip);
M5.delay(1500);
}
void loop() {
M5.update();
char buf[30];
getLocalC(buf); // bufに、Local(NTP)日時文字列を書き込む
M5.Display.setTextColor(GREEN,BLACK);
M5.Display.println(buf);
Serial.println(buf);
getRTC(buf); // bufに、日時文字列を書き込む
M5.Display.setTextColor(CYAN,BLACK);
M5.Display.println(buf);
Serial.println(buf);
if (M5.BtnA.wasPressed()) {
// NTPからRTCに時刻設定する
struct tm localTime;
getLocalTime(&localTime);
setRTCfromLT(localTime);
M5.Display.setTextColor(WHITE,RED);
M5.Display.println(" LocalTimeをRTCに設定! ");
}
M5.delay(1000);
}
void setRTCfromLT(struct tm lt) {
m5::rtc_date_t DateStruct;
DateStruct.year = lt.tm_year + 1900;
DateStruct.month = lt.tm_mon + 1;
DateStruct.date = lt.tm_mday;
DateStruct.weekDay = lt.tm_wday;
M5.Rtc.setDate(&DateStruct);
m5::rtc_time_t TimeStruct;
TimeStruct.hours = lt.tm_hour;
TimeStruct.minutes = lt.tm_min;
TimeStruct.seconds = lt.tm_sec+1;
M5.Rtc.setTime(&TimeStruct);
}
void getRTC(char* buf) {
m5::rtc_date_t DateStruct;
m5::rtc_time_t TimeStruct;
M5.Rtc.getDate(&DateStruct);
M5.Rtc.getTime(&TimeStruct);
sprintf(buf, "RTC %04d/%02d/%02d %02d:%02d:%02d",
DateStruct.year, DateStruct.month, DateStruct.date,
TimeStruct.hours, TimeStruct.minutes, TimeStruct.seconds
);
}
void getLocalC(char* buf) {
struct tm localTime;
getLocalTime(&localTime);
sprintf(buf, "LOC %04d/%02d/%02d %02d:%02d:%02d",
localTime.tm_year + 1900,
localTime.tm_mon + 1,
localTime.tm_mday,
localTime.tm_hour,
localTime.tm_min,
localTime.tm_sec
);
}