首先,上效果图

你可能需要的准备
- 配置ESP8266的Arduino IDE环境 - IDZD
- NodeMCU连接&固件烧录 - IDZD
- 半离线安装EPS8266支持到Arduino IDE
- NTPClient库
- 安装支持库 - IDZD
- ESP8266使用I2C连接OLDE屏幕
连线&安装NTPClient库
安装NTPClient库
这次我们选择NTPClient库,联网获取ntp时间。
1#获取UNIX时间戳
2getEpochTime();
3
4#获取当前时间
5getFormattedTime();
6
7#获取星期,0是星期日
8getDay();
连线
- D1 — SDA
- D2 — SCL
- 3V — VCC
- G — GND

代码
1#include <Arduino.h>
2#include <U8g2lib.h>
3#include <time.h>
4#include <SPI.h>
5#include <Wire.h>
6#include <NTPClient.h>
7// change next line to use with another board/shield
8#include <ESP8266WiFi.h>
9//#include <WiFi.h> // for WiFi shield
10//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
11#include <WiFiUdp.h>
12
13#define SDA 05 //ESP8266 D1 PIN 05
14#define SCL 04 //ESP8266 D2 PIN 04
15
16
17
18const char *ssid = "360 N7 Pro";
19const char *password = "123456780";
20char *week = "";
21
22
23//SSD1306,128x64,全屏缓冲模式,模拟I2C,I2C,u8g2(旋转0度,时钟,数据,重置)
24U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);
25
26WiFiUDP ntpUDP;
27NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);//设置访问的ntp服务器
28
29void setup(){
30 Serial.begin(115200);
31 WiFi.begin(ssid, password);
32
33 while ( WiFi.status() != WL_CONNECTED ) {
34 delay ( 500 );
35 Serial.print ( "." );
36 }
37
38 timeClient.begin();
39 u8g2.begin();
40 u8g2.enableUTF8Print();
41}
42
43void loop() {
44 timeClient.update();
45 u8g2.setFont(u8g2_font_unifont_t_chinese2);
46 u8g2.firstPage();
47 do {
48 u8g2.setCursor(0, 15);
49 u8g2.print("北京时间:=");
50 u8g2.setCursor(0, 35);
51 u8g2.print(timeClient.getFormattedTime());
52 u8g2.setCursor(75, 35);
53 switch(timeClient.getDay();){
54 case 0:
55 week = "Sun.";
56 break;
57 case 1:
58 week = "Mon.";
59 break;
60 case 2:
61 week = "Tues.";
62 break;
63 case 3:
64 week = "Wed.";
65 break;
66 case 4:
67 week = "Thur.";
68 break;
69 case 5:
70 week = "Fri.";
71 break;
72 case 6:
73 week = "Sat.";
74 break;
75 }
76 u8g2.print(week);
77 u8g2.setCursor(0, 55);
78 time_t t;
79 struct tm *p;
80 t=timeClient.getEpochTime();
81 p=gmtime(&t);
82 char s[100];
83 //strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p);
84 strftime(s, sizeof(s), "%Y年%m月%d日", p);
85 u8g2.print(s);
86 } while ( u8g2.nextPage() );
87 Serial.println(timeClient.getEpochTime());
88 delay(1000);
89}