はじめに
先日、M5StackC PLUS2を購入しました。今回は練習のため、時刻と日付を表示する時計を作成してみました。
スケッチ
Arduino IDEのライブラリマネージャで「M5StickC PLUS2 by M5Stack」をインストールした後、以下のスケッチをM5StackC PLUS2に書き込み実行しました。
#include "M5StickCPlus2.h"
#include "time.h"
#include <WiFi.h>
#include <M5Unified.h>
// wifiの設定
const char* ssid = "********"; //自宅等のWiFiの情報を入力
const char* password = "********"; //自宅等のWiFiの情報を入力
void setup()
{
// put your setup code here, to run once:
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
// connect to WiFi
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
// Set ntp time to local
configTime(3600L * 9, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
// 起動ごとに時刻同期するために同期タイミングを一時的に変更
auto default_interval = sntp_get_sync_interval(); // ミリ秒単位
sntp_set_system_time(1, 0); // 1秒
// Set RTC
struct tm timeInfo;
if (getLocalTime(&timeInfo))
{
M5.Rtc.setDateTime(timeInfo);
}
sntp_set_system_time(default_interval * 1000, 0); // 同期タイミングを戻す
// disconnect WiFi
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
}
void loop()
{
M5.Lcd.setTextColor(GREEN, BLACK);
M5.Lcd.setTextSize(1.5);
M5.Lcd.setCursor(0, 10, 7);
M5.Lcd.printf("%02d:%02d\n", M5.Rtc.getTime().hours, M5.Rtc.getTime().minutes);
M5.Lcd.setTextFont(1);
M5.Lcd.setCursor(210, 10, 1);
M5.Lcd.printf("%02d\n", M5.Rtc.getTime().seconds);
M5.Lcd.setTextColor(WHITE, BLACK);
M5.Lcd.setCursor(25, 100, 1);
M5.Lcd.printf("Date:%04d.%02d.%02d\n", M5.Rtc.getDate().year, M5.Rtc.getDate().month, M5.Rtc.getDate().date);
M5.Lcd.setCursor(25, 120, 1);
M5.Lcd.printf("Battery Level:%3d%%\n", M5.Power.getBatteryLevel());
delay(500);
}
時計表示
時刻と秒は緑色、日付とバッテリ残量は白色で表示します。
参考
スケッチ全般に関して
テキストフォントの種類、大きさなどの設定について