【得捷Follow me第4期】进阶任务:从NTP服务器同步时间送显示屏显示
[复制链接]
【得捷Follow me第4期】进阶任务:从NTP服务器(注意数据交互格式的解析)同步时间,获取时间送显示屏(串口)显示。
在arduino IDE中,在完成前面代码的基础上,完成显示屏和以太网的初始化后,可以在IDE中的库管理中直接下载NTPClient,引入库中自带的basic示例中的代码,并根据时区调用setTimeOffset进行时区偏移即可输出正确的时间。
#include <SPI.h>
#include <TFT_eSPI.h>
#include <Ethernet.h>
#include <NTPClient.h>
EthernetUDP ntpUDP;
NTPClient timeClient(ntpUDP);
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192,168,0,7);
IPAddress dns(192,168,0,1);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);
#define TFT_GREY 0x5AEB
TFT_eSPI tft = TFT_eSPI();
TFT_eSprite stext1 = TFT_eSprite(&tft);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Ethernet.init(17);
Ethernet.begin(mac, ip, dns, gateway, subnet);
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_GREY);
tft.setCursor(0, 0, 2);
tft.setTextColor(TFT_WHITE);
tft.setTextSize(3);
timeClient.begin();
timeClient.setTimeOffset(3600*8);//设置偏移时间
}
void loop() {
timeClient.update();
String time1="";
time1=timeClient.getFormattedTime();
tft.fillScreen(TFT_GREY);
tft.setCursor(0, 0, 2);
tft.println(time1);
Serial.println(time1);
delay(2000);
// put your main code here, to run repeatedly:
}
运行效果
这个任务对于使用arduino平台现成的库文件实现起来还是比较简单的。
|