眠ってたM5StickC Plusを有効活用できないかと思い、時計を作ってみました。
プログラムもそんなに大きくならなかったので、全文掲載します。
#include <WiFi.h> #include <M5StickCPlus.h> #include <time.h> const char* ssid = "(Wi-fiアクセスポイントのSSID)"; const char* password = "(Wi-fiアクセスポイントのパスワード)"; const char *wd[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; // NTPサーバのURL const char* ntpServer = "ntp.jst.mfeed.ad.jp"; // GMT+9(日本時間) const long gmtOffset_sec = 9 * 3600; // サマータイム時差(無し) const int daylightOffset_sec = 0; void setup() { M5.begin(); M5.Lcd.fillScreen(TFT_BLACK); M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); M5.Lcd.setRotation(1); adjust(); } void loop() { struct tm t; if (getLocalTime(&t)) { M5.Lcd.setTextSize(5); M5.Lcd.setCursor(20, 25); M5.Lcd.printf("%02d:%02d", t.tm_hour, t.tm_min); M5.Lcd.setTextSize(3); M5.Lcd.setCursor(175, 38); M5.Lcd.printf(":%02d", t.tm_sec); M5.Lcd.setTextSize(3); M5.Lcd.setCursor(10, 90); M5.Lcd.printf("%04d/%02d/%02d", (1900 + t.tm_year), (t.tm_mon + 1), t.tm_mday); M5.Lcd.setTextSize(2); M5.Lcd.setCursor(197, 97); M5.Lcd.printf("%s", wd[t.tm_wday]); if (t.tm_hour == 4 && t.tm_min == 0 && t.tm_sec == 0) { adjust(); } } delay(100); } void adjust() { WiFi.begin(ssid, password); // 500ms*120回なので、1分でタイムアウト for (int i = 0; i < 120 && WiFi.status() != WL_CONNECTED; i++) { delay(500); } if (WiFi.status() != WL_CONNECTED) { // Wifi接続エラー } if (WiFi.status() == WL_CONNECTED) { configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); struct tm t; if (!getLocalTime(&t)) { // NTPサーバ接続エラー } } WiFi.disconnect(true); WiFi.mode(WIFI_OFF); }