ESP32 と 小型128x32OLED液晶ディスプレイ(時計表示)

#はじめに
[前回の記事](https://qiita.com/nori-dev-akg/items/72f70a52f534b979e683)の続きです。ライブラリ付属のサンプルを動かしてみましたが、ESP32に繋げているので NTP サーバより時刻を取得して表示させたいと思います。

![esp32-SSD1306-clock1.jpg](https://qiita-image-store.s3.amazonaws.com/0/203949/e2fc236d-c02c-c54d-e59f-04963ae0905b.jpeg)

#ハード、ソフト、組み立て
  [前回と同じ](https://qiita.com/nori-dev-akg/items/72f70a52f534b979e683)

#スケッチ
NTP1に関するところは[h_nari](https://qiita.com/h_nari/items/d0374d1e1e36b9d988c0)氏のところから頂きました。m(_ _)m

```cpp:esp32-SSD1306-clock.ino
#include <WiFi.h>
#include <time.h>

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// OLED Setting
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

// WiFi Setting
#define WIFI_SSID   "your-ssid"
#define WIFI_PASSWORD   "ssid-pass"
#define JST     3600*9

void setup() {
  Serial.begin(115200);
  delay(100);
  Serial.print("\n\nReset:\n");
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
  // Clear the buffer.
  display.clearDisplay();
  display.setTextColor(WHITE);

  // WiFi starting
  drawLog("WiFi connecting...");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while(WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(500);
  }
  Serial.println();
  Serial.printf("Connected, IP address: ");
  Serial.println(WiFi.localIP());
  drawLog("WiFi connected!");

  // NTP start
  configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
  delay(1000);
}

void loop() {
  time_t t;
  struct tm *tm;
  static const char *wd[7] = {"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};
  char rdate[30], rtime[30];

  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);
  sprintf(rdate, " %04d/%02d/%02d(%s)",
        tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, wd[tm->tm_wday]);
  sprintf(rtime, " %02d:%02d:%02d", 
        tm->tm_hour, tm->tm_min, tm->tm_sec);
  drawClock(rdate, rtime);      
  delay(1000 - millis()%1000);
}

void drawClock(const char* rdate, const char* rtime) {
  display.clearDisplay();
  display.setCursor(0,0);
  
  display.setTextSize(1);
  drawText(rdate);
  
  display.setCursor(0,13);
  
  display.setTextSize(2);
  drawText(rtime);
  
  display.display();
  delay(1);
}

void drawText(const char* text) {
  for (uint8_t i=0; i < strlen(text); i++) {
    display.write(text[i]);
  }    
}

void drawLog(const char* msg) {
  display.clearDisplay();
  display.setCursor(0,0);
  display.setTextSize(1);
  drawText(msg);
  
  display.display();
  delay(1);
}

```

#結果

<blockquote class="twitter-tweet" data-lang="ja"><p lang="cs" dir="ltr">ESP32とSSD1306–OLED<a href="https://twitter.com/hashtag/ESP32?src=hash&amp;ref_src=twsrc%5Etfw">#ESP32</a><a href="https://twitter.com/hashtag/SSD1306?src=hash&amp;ref_src=twsrc%5Etfw">#SSD1306</a><a href="https://twitter.com/hashtag/Arduino?src=hash&amp;ref_src=twsrc%5Etfw">#Arduino</a> <a href="https://t.co/f55sPSMB8j">pic.twitter.com/f55sPSMB8j</a></p>&mdash; nori.dev.akg (@nori_dev_akg) <a href="https://twitter.com/nori_dev_akg/status/926901157716361216?ref_src=twsrc%5Etfw">2017年11月4日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



#SpecialThanks!!
https://qiita.com/h_nari/items/d0374d1e1e36b9d988c0
https://qiita.com/exabugs/items/b1b7430d185b268a1abf