#topicpath ** ezTime [#kdc46226] *** はじめに [#x93984ef] - 背景~ NTP の情報は、1秒以下の情報もあるのに、それが有効に活用されていない。~ いろいろなサイトを参照して、それを実装しようとしたがうまくいかない。~ ([[NTP_SampleProgram>../NTP_SampleProgram]]参照)~ C言語の時刻の扱いにはいくつかの系統があるようで面倒だ(個人の感想)。~ 最近になって、ezTime というライブラリができたことを知った。~ ~ - 参照URL -- github : https://github.com/ropg/ezTime -- Arduino CC : https://forum.arduino.cc/index.php?topic=568903.0 *** 導入 [#u195c13e] - Arduino IDE から~ ++ ツール > ライブラリを管理 > 「検索をフィルタ」に milli NTP を入力してライブラリを検索 ++ 表示部分にマウスのポインタを合わせて、最新バージョンを選択して、インストール *** 使い方 [#f30aecba] - サンプルプログラムを示す。~ ※ マニュアルを読むと、結構、いい感じの方針で仕事をしているように思った。~ ~ #include <ezTime.h> #include <WiFi.h> Timezone myTZ; void setup() { Serial.begin(115200); while (!Serial) { ; } // wait for Serial port to connect. Needed for native USB port only // WiFi 接続を入れる Serial.println("WiFi connected"); Serial.print ("SSID : "); Serial.println(WiFi.SSID()); Serial.print ("IP address set: "); Serial.println(WiFi.localIP()); setDebug(INFO); // デバッグ情報をシリアルポートへ。 NONE で表示しなくなる。 myTZ.setLocation(F("Asia/Tokyo")); // Timezone の設定。日本時間 myTZ.setDefault(); // setServer("ntp.jst.mfeed.ad.jp"); // サーバーの設定 setInterval(60); // NTPデータの更新の時間間隔 60s waitForSync(); // 最初の時刻の取得。 Serial.println(myTZ.dateTime()); } void loop() { // バックグラウンドでは動かないので、これを毎回 loop() で動かす。動作状況は setDebug() してあるので表示される。 events(); if( secondChanged() ){ Serial.println(myTZ.dateTime()); if( secondChanged() ){ // 1秒おきの実行 Serial.println(myTZ.dateTime()); // 日時の表示 } }