syouwa-taro が 2022年08月24日22時03分20秒 に編集
コメント無し
本文の変更
概要 ntp(ネットワーク・タイム・プロトコル)はネット経由で時計を合わせるための通信規約で、ネットワーク上のタイムサーバと同期させることで正確な時刻を簡単に得ることができる。 内容は難しいが、時刻を得るソフトをコピペするだけでESP32で簡単に実現 時刻を得ることが出来たので、更に以前外部温度を表示させていたOLED(SSD1306)を流用し時計表示を行った。必要なソフトだけにすると(驚くほど)行数も少なかった。 ![キャプションを入力できます](https://camo.elchika.com/58a246767d09b49aef87e3c27fdaec0e11dcfc7d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f38376461636366622d643365352d343236642d386436312d3538383537333535363238662f64303232393364302d643435312d343239622d623366392d653862396565346630316137/) | 部品 | 備考 | |:---:|:---| | OLED SSD1306 | 0.96インチ128×64ドット有機ELディスプレイ。I2C接続、3~5.5V | | ESP32 | Arduinoで作成 タイムサーバーから時刻データ読み込み 3.3V | **動画がUP出来ないので、可能になったらUPします**
![キャプションを入力できます](https://camo.elchika.com/aa03b3b0bba49a1a94b5cee7f75c23265e71560e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f38376461636366622d643365352d343236642d386436312d3538383537333535363238662f35666164323036342d643735302d346337652d393066622d316663386332643538323863/)
```arduino:JSTClock #include <WiFi.h> #include <time.h> #include <Wire.h> // I2C interface #include <Adafruit_SSD1306.h> // SSD1306 display #include <Adafruit_GFX.h> // SSD1306 display /* OLEDディスプレイの設定 */ #define SCREEN_WIDTH 128 // 幅 (単位:ピクセル) #define SCREEN_HEIGHT 64 // 高さ(単位:ピクセル) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire); #define JST 3600* 9 const char* ssid = "aterm-585772-g"; const char* password = "340537c710ff2"; void setup() { WiFi.begin(ssid, password); while(WiFi.status() != WL_CONNECTED) configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp"); // OLEDディスプレイを初期化する if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); // 失敗したら処理を進ませない! } } void loop() { time_t t; struct tm *tm; t = time(NULL); tm = localtime(&t); display.clearDisplay(); display.setTextSize(2); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(0, 0); display.print(tm); display.display(); } ``` 参考資料 [ESP32で現在時刻を取得する]( https://www.autumn-color.com/archives/839) [ESP32でOLEDディスプレイ「SSD1306」にHello-world表示](https://wak-tech.com/archives/825)