Arduino入門
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 は以下のドキュメントを参照してください: