首先,上效果图


你可能需要的准备


连线&安装NTPClient库

安装NTPClient库

这次我们选择NTPClient库,联网获取ntp时间。

项目地址

1#获取UNIX时间戳
2getEpochTime();
3
4#获取当前时间
5getFormattedTime()
6
7#获取星期,0是星期日
8getDay()

连线

  • D1 — SDA
  • D2 — SCL
  • 3V — VCC
  • G — GND

2089953529.png


代码

 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}