« 【独身の日】AliExpressで散財(?) | トップページ | ドライアイス不要の霧箱 (4) »

2023年11月18日 (土)

Arduinoで作ろう(62) ESP8266+SSD1306でNTP時計

Esp8266ssd1306

 昨日AliExpressから届いたマイコンボードのうち,OLEDディスプレイ付きのESP8266開発ボードでNTP時計を作ってみました。
OLEDはSSD1306なので,以前も使ったことのあるこのライブラリでいきます。
SSD1306はI2Cでつながってるのですが,よくある接続とは違っててSDAがGPIO14,SCLがGPIO12につながってるので,明示的に指定してやります。あとは,以前作ったNTP時計のスケッチをちょいと書き換えたら完成です。

Cimg8446

スケッチはコレ ↓ です。

//ESP8266+SSD1306(OLED display) NTP時計

 

#include "SSD1306Wire.h" //https://github.com/ThingPulse/esp8266-oled-ssd1306
#include "ESP8266WiFi.h"
#define SDA 14 //SDA-GPIO14
#define SCL 12 //SCL-GPIO12
#define JST 3600 * 9
SSD1306Wire display(0x3c, SDA, SCL);
const char* ssid = "無線LANのSSID";
const char* password = "パスワード";

 

void setup() {
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 0, "Wi-Fi connecting..." );
display.display();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(10);
}
display.clear();
display.drawString(0, 0, "Connected to ");
display.drawString(0, 13, "SSID: " + WiFi.SSID());
display.drawString(0, 24,"IP address: " + WiFi.localIP().toString());
display.display();
configTime(JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
delay(5000);
}

 

void loop() {
display.clear();
static const char *wd[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t t = time(NULL);
struct tm *tm = localtime(&t);
char buff[16];
sprintf( buff, "%04d/%02d/%02d(%s)",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,wd[tm->tm_wday] );
display.setFont(ArialMT_Plain_16);
display.drawString(0,0,buff);
sprintf( buff, "%02d:%02d:%02d",tm->tm_hour,tm->tm_min,tm->tm_sec );
display.setFont(ArialMT_Plain_24);
display.drawString(12,24,buff);
display.display();
}

| |

« 【独身の日】AliExpressで散財(?) | トップページ | ドライアイス不要の霧箱 (4) »

Arduino」カテゴリの記事

ESP8266 , ESP32」カテゴリの記事