M5NanoC6でOLED時計。(SSD1306)(SNTP)


参考


https://qiita.com/caa45040/items/4842915974b371ad64dd


https://qiita.com/caa45040/items/14bfe0025f52b476fa26



x 過去ログを見よ!!!


部品

![o_coq794.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/bfda9892-b07e-0fb7-450d-817a74392a3a.jpeg)

![o_coq795.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a661e2c6-44cb-2373-c088-09350102ebaf.jpeg)


![o_coq796.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/05434201-6cee-27f8-5168-c8e844df613e.jpeg)

![o_coq797.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/6cd9f815-4c85-ca26-156c-723e0385dc2e.jpeg)

![o_coq798.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/3c49d320-e7de-9b4c-9009-14307278fc3c.jpeg)


![o_coq799.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/622d9c02-ad1e-e2e1-f3ff-39cb6be44f45.jpeg)


![o_coq800.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/348fafde-5e8e-d716-61d3-d66c72d1879e.jpeg)



配線(配線は、各自、データシートを参照)

SDA - SDA
SCL - SCL
5V  - 5V
GND - GND


![o_coq456.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/ecbaf217-8967-adba-c729-77fbb949fc1c.jpeg)



書き換える

```c++

const char *ssid = "ご自宅のSSID";
const char *password = "ご自宅のパスワード";

````


結果
----

![o_coq793.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/f1db123d-1272-4d90-eb65-b5f161a60e12.jpeg)


プログラム
----


```c++


//SSD1306_SNTP_M5NanoC6_1


//ヘッダーファイル
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <time.h>


//定義
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define JST 3600 * 9
const char *ssid = "ご自宅のSSID";
const char *password = "ご自宅のパスワード";


//初期化
void setup() {

  // I2Cアドレスは使用するディスプレイに合わせて変更する
  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

  //WiFiの初期化
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  delay(3000);//決め打ちなので、おかしかったら調整してね! wifiの待ち0.5*6
  configTime(JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");

}//setup


//メインループ
void loop() {

  // 画面表示をクリア
  display.clearDisplay();

  // テキストサイズを設定
  display.setTextSize(2);
  // テキスト色を設定
  display.setTextColor(WHITE);
  // テキストの開始位置を設定
  display.setCursor(0, 10);

  //時計の処理 ↓ここから
  time_t t;      //経過秒
  struct tm *tm; //時間の実体とポインター
  //static const char *wd[7] = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" };

  t = time(NULL);     //経過秒を取得する
  tm = localtime(&t); //経過秒を時間の構造体に変換する
  //Serial.printf(" %04d/%02d/%02d(%s) %02d:%02d:%02d\n",
  //              tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
  //              wd[tm->tm_wday],
  //              tm->tm_hour, tm->tm_min, tm->tm_sec);

  //表示変換する パック二進化十進を文字列にする
  char cn1[16];  //桁
  cn1[0] = '0' + (tm->tm_hour) / 10; //0 時 上位
  cn1[1] = '0' + (tm->tm_hour) % 10; //1 時 下位
  cn1[2] = ':';
  cn1[3] = '0' + (tm->tm_min) / 10; //2 分 上位
  cn1[4] = '0' + (tm->tm_min) % 10; //3 分 下位
  cn1[5] = ':';
  cn1[6] = '0' + (tm->tm_sec) / 10; //4 秒 上位
  cn1[7] = '0' + (tm->tm_sec) % 10; //5 秒 下位
  cn1[8] = 0;
  //時計の処理　↑ここまで
  
  display.println(cn1); //時刻を表示する

  // 描画バッファの内容を画面に表示
  display.display();

  delay(1000); //1秒待つ

}//loop



```