pdf-icon

Arduino入門

2. デバイス&サンプル

Air Quality リアルタイムクロック

Air Quality の RTC クロックに関する API とサンプルプログラム。

サンプルプログラム

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

#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);
}

アップロード完了後、以下のように表示されます:

API

Air Quality の RTC クロック部分では M5Unified ライブラリの RTC8563_Class を使用しています。その他の関連 API は以下のドキュメントを参照してください:

On This Page