Air Quality の RTC クロックに関する API とサンプルプログラム。
#include <WiFi.h>#include "time.h"#include <M5Unified.h> const char* ssid = "YOUR WIFI SSID NAME"; const char* password = "YOUR WIFI PASSWORD"; const char* ntpServer = "pool.ntp.org";const long gmtOffset_sec = 0;const int daylightOffset_sec = 8 * 3600; void setup(){ // —— M5Unified を初期化 auto cfg = M5.config(); cfg.serial_baudrate = 115200; // シリアル出力を有効に保つ M5.begin(cfg); // ディスプレイ、RTC、ボタンなどを初期化 // —— 画面レイアウトの初期設定 —— M5.Display.fillScreen(TFT_WHITE); M5.Display.setTextSize(2); M5.Display.setTextColor(TFT_BLACK); // —— Wi-Fi に接続 —— Serial.printf("Connecting to %s\n", ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi connected."); // —— NTP で時刻同期 —— configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); Serial.print("Syncing time"); #if SNTP_ENABLED while (sntp_get_sync_status() != SNTP_SYNC_STATUS_COMPLETED) { delay(500); Serial.print("."); } #else delay(1500); #endif Serial.println(" done."); // —— 省電力のため Wi-Fi を切断 —— WiFi.disconnect(true); WiFi.mode(WIFI_OFF);} void loop(){ M5.update(); // ボタン/タッチ/RTC の状態を更新 struct tm timeinfo; if(!getLocalTime(&timeinfo)){ Serial.println("Failed to obtain time"); return; } Serial.println(&timeinfo, "%Y/%m/%d %H:%M:%S"); M5.Display.fillRect(0, 0, 240, 48, TFT_WHITE); M5.Display.setCursor(0, 0); M5.Display.printf("%04d/%02d/%02d", timeinfo.tm_year + 1900, timeinfo.tm_mon + 1, timeinfo.tm_mday); M5.Display.setCursor(0, 24); M5.Display.printf("%02d:%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec); delay(1000);}
アップロード完了後、以下のように表示されます:
Air Quality の RTC クロック部分では M5Unified ライブラリの RTC8563_Class
を使用しています。その他の関連 API は以下のドキュメントを参照してください: