M5STACK(11) 時計に挑戦
WiFiの設定ができましたので、ネットから日付と時刻のデータを取得して、表示してみました。
スケッチ
#include <M5Stack.h>
#include <WiFi.h>
#include "time.h"
// Wi-FiのSSID
char *ssid = "XXXXXXXXXXXXXXX";
// Wi-Fiのパスワード
char *password = "XXXXXXXXXXXXXXX";
#define JST 3600* 9
void setup_wifi(){
Serial.println("Connecting to ");
Serial.print(ssid);
// WiFi接続性改善のため、いったん切断
WiFi.disconnect( true, true ); //WiFi OFF, eraseAP=true
delay(500);
// WiFi開始
WiFi.begin(ssid, password);
// Wi-Fi接続待ち
while (WiFi.status() != WL_CONNECTED){
delay(500);
M5.Lcd.print(".");
}
// WiFi接続成功メッセージの表示
M5.Lcd.setCursor(0, 10);
M5.Lcd.setTextSize(2);
M5.Lcd.println("WiFi Connected.");
// M5StackのIPアドレスを表示
M5.Lcd.print("IP address: ");
M5.Lcd.println(WiFi.localIP());
}
void printLocalTime(){
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
M5.Lcd.println("Failed to obtain time");
return;
}
// テキストサイズ指定
M5.Lcd.setTextSize(4);
// カーソル位置を設定
M5.Lcd.setCursor(40,100);
M5.Lcd.printf("%04d-%02d-%02d ", timeinfo.tm_year+1900, timeinfo.tm_mon+1, timeinfo.tm_mday);
// テキストサイズ指定
M5.Lcd.setTextSize(5);
// カーソル位置を設定
M5.Lcd.setCursor(40,150);
M5.Lcd.printf("%02d:%02d:%02d",timeinfo.tm_hour,timeinfo.tm_min,timeinfo.tm_sec);
}
void setup(){
// M5Stack objectの初期化
M5.begin();
// Wi-Fi処理の開始
setup_wifi();
configTime(9 * 3600L, 0, "ntp.nict.jp", "time.google.com", "ntp.jst.mfeed.ad.jp");//NTPの設定
//configTime(JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
printLocalTime();
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
}
void loop(){
delay(1000);
printLocalTime();
}
実行結果











