ESP32 및 소형 128x32OLED 액정 디스플레이 (시계 표시)
소개
마지막 기사 의 계속입니다. 라이브러리 부속의 샘플을 움직여 보았습니다만, ESP32에 연결하고 있으므로 NTP 서버로부터 시각을 취득해 표시시키고 싶습니다.
하드, 소프트, 조립
이전과 동일
스케치
NTP1에 관한 곳은 h_나리씨로부터 받았습니다. m(_ _)m
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);
}
결과
ESP32 및 SSD1306–OLED #ESP32 #SSD1306 #Arduino 피 c. 라고 r. 이 m/f55sPSMB8j — nori.dev.akg (@nori_dev_akg) 2017년 11월 4일
SpecialThanks!!
이전과 동일
스케치
NTP1에 관한 곳은 h_나리씨로부터 받았습니다. m(_ _)m
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);
}
결과
ESP32 및 SSD1306–OLED #ESP32 #SSD1306 #Arduino 피 c. 라고 r. 이 m/f55sPSMB8j — nori.dev.akg (@nori_dev_akg) 2017년 11월 4일
SpecialThanks!!
#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);
}
ESP32 및 SSD1306–OLED #ESP32 #SSD1306 #Arduino 피 c. 라고 r. 이 m/f55sPSMB8j — nori.dev.akg (@nori_dev_akg) 2017년 11월 4일
SpecialThanks!!
htps : // 이 m/h_나리/있어 ms/d0374d1에1에36b9d988c0
htps : // 이 m / 에우 gs / ms / b1b7430d185b268 a1 a bf
Reference
이 문제에 관하여(ESP32 및 소형 128x32OLED 액정 디스플레이 (시계 표시)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nori-dev-akg/items/bbe269d1d1bf1826532a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)