2021年1月9日土曜日

CODE06 ~日付と時刻の表示、参考元コピペとちょっとした苦労~

  忙しい人のための最低限の分割したバージョンの記事Part5

~日付と時刻の表示、参考元コピペとちょっとした苦労~

 まずは、参考元様のコードをコピペしてテスト動作。
 これは、もちろん正常に動作しましたよ。そりゃ。

 次に、私はsetup関数内で実行したいので、そのように改造。
 …とはいっても、知識ゴミカスの私にはどれを消してどれを残せば予定通りに動くのかなんてわかんないので、実際に稼働しているVer2.0のコードだったりWiFiのテストコードだったりと見比べて、あとはいきあたりばったりで改造しました。
 なので、何回もコードがおかしいとArduinoIDEに怒られるし当たり前のように予定通り動かないしでちょっとだけ苦労。
 でも前よりは多少の知識・経験があるのでなんとかなりました。
 というのが下記のコードです。多分誰もいらないだろうけど。
 なにせsetup関数内でしか動かないように、つまりntpから取得した時刻のみを表示するだけとかいう謎コードですから…

 あ、あと、このコードに関しては動作中の写真はありません。
 だって表示全部参考元様のまんまだもん…

code:1 Clock_TEST
#include <M5StickC.h>
#include <WiFi.h>
#include <time.h>

const char* ssid     = "YOUR SSID"; // WiFiのSSID
const char* password = "YOUR PASSWORD"; // WiFiのパスワード

const char* ntpServer = "ntp.jst.mfeed.ad.jp"; // NTPサーバー
const long  gmtOffset_sec = 9 * 3600;          // 時差9時間
const int   daylightOffset_sec = 0;            // サマータイム設定なし

RTC_TimeTypeDef RTC_TimeStruct; // 時刻
RTC_DateTypeDef RTC_DateStruct; // 日付

void setup() {
  M5.begin(); //Initialize M5StickC M5StickCを初期化
  delay(50); //Wait 50msecs 50ミリ秒待機

  WiFi.begin(ssid, password); //Starting connection of WiFi WiFi接続開始

  M5.Lcd.fillScreen(BLACK); //Fill Screen Black 背景色を黒に
  M5.Lcd.setRotation(3); //Set Lcd's Direction 画面を横向き(左上)に
  M5.Lcd.setCursor(0, 2, 2); //Set Cursor to (0,2) and Assign Fonts 2 カーソルを(0,2)へ、フォントは2を指定

  while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        M5.Lcd.print("."); //WiFi接続待ちの間500ミリ秒ごとに"."を表示
  }

  M5.Lcd.println("Successed!!");
  M5.Lcd.println("IP: "); //Print IPaddress IPアドレスを表示
  M5.Lcd.println(WiFi.localIP());

  delay(3000); //Wait 3000msecs 3000ミリ秒待機
  
  static const char *wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
  M5.Rtc.GetTime(&RTC_TimeStruct); // 時刻の取り出し
  M5.Rtc.GetData(&RTC_DateStruct); // 日付の取り出し

  M5.Lcd.fillScreen(BLACK); //Fill Screen Black 背景色を黒に
  M5.Lcd.setTextColor(GREEN); //Set text color to green 文字色を緑に
  M5.Lcd.setCursor(0, 10, 7); //Set cursor to (0,10) and assign fonts 7 カーソルを(0,10)に、フォントは7を指定
  M5.Lcd.printf("%02d:%02d", RTC_TimeStruct.Hours, RTC_TimeStruct.Minutes); // 時分を表示

  M5.Lcd.setTextFont(1); //Assign fonts 1 フォントは1を指定
  M5.Lcd.printf(":%02d\n",RTC_TimeStruct.Seconds); // 秒を表示

  M5.Lcd.setTextColor(WHITE); //Set text color to white 文字色を白に
  M5.Lcd.setCursor(25, 65, 1); //Set cursor to (25,65) and assign fonts 1 カーソルを(25,65)に、フォントは1を指定
  M5.Lcd.printf("Date:%04d.%02d.%02d %s\n", RTC_DateStruct.Year, RTC_DateStruct.Month, RTC_DateStruct.Date, wd[RTC_DateStruct.WeekDay]);

}

void loop() {
  
}

0 件のコメント:

コメントを投稿