M5Stamp C3で時計
7セグメントLEDを使った時計を作ります。M5Stamp C3はWi-Fi経由でインターネットにアクセスできるのでntpサーバから時間を持ってきます。
表示器はHT16K33ドライバ
アマゾンでも入手可能な、4桁の7セグメントLEDを使います。インターフェースはI2Cです。コントローラはいろいろありますが、ここではHT16K33を選びました。
ライブラリを入れます。一番上に見えているHT16K33です。14セグメントには対応していないようです。
ntpライブラリを入れる
NTPClientライブラリを入れます。
スケッチ
WiFiMulti.addAP("Buffalo-G-20EA", "********");
は、Wi-Fiルータへのアクセスです。
// AUTHOR: Rob Tillaart
// URL: https://github.com/RobTillaart/HT16K33
#include "HT16K33.h"
HT16K33 seg(0x70);
#include <WiFi.h>
#include <WiFiMulti.h>
#include <NTPClient.h>
WiFiMulti WiFiMulti;
//const char* ntpServer = "ntp.nict.jp";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);
void setup(){
Serial.begin(115200);
WiFiMulti.addAP("Buffalo-G-20EA", "********");
//Serial.print("\nWaiting for WiFi... ");
while(WiFiMulti.run() != WL_CONNECTED) {
// Serial.print(".");
delay(500);
}
/* Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
*/
timeClient.begin();
delay(500);
seg.begin();
Wire.setClock(100000);
seg.displayOn();
seg.setDigits(4);
}
void loop(){
delay(1000);
timeClient.update();
String TIME = timeClient.getFormattedTime();
String Hr = TIME.substring(0, 2);
String Mini = TIME.substring(3, 5);
//Serial.println(TIME);
//Serial.print(Hr);Serial.print(":");Serial.println(Mini);
seg.displayTime(Hr.toInt()+9, Mini.toInt(), true, false); // do not display leading zero.
seg.displayColon(1);
}
Windows10は、デフォルトで1週間「604800秒」でNTPサーバにアクセスしに行っているようです。上記のように毎秒アクセスするのはあくまでも実験運用いうことで。長期運用時には、アクセス頻度を下げるべきでしょう。しかし、ローカルに時計を持っていない場合は、面倒です。下記記事に具体的な手法が掲載されています。
ESP32 の 時刻取得のオフライン時の挙動
JSTに修正するのに、Hr.toInt()+9
とインチキをやっています。朝4時に見ると、28時という表示でした。プログラムは暴走していたわけではないようです。
修正
NTPClient timeClient(ntpUDP);
を NTPClient timeClient(ntpUDP, "ntp.nict.jp", 3600*9, 60000);
に
seg.displayTime(Hr.toInt()+9, Mini.toInt(), true, false);
を seg.displayTime(Hr.toInt(), Mini.toInt(), true, false);
に変更します。
3600*9
はオフセットで、秒単位です。60000
は更新のインターバルです。GitHubにアクセスして、使い方がわかりました。
Author And Source
この問題について(M5Stamp C3で時計), 我々は、より多くの情報をここで見つけました https://qiita.com/jamjam/items/a5252890b8e04ba46448著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .