前段时间在网上看见有关ESP系列的天气时钟,于是这几天决定复刻一个,材料非常简单, 1.54寸的TFT显示屏还有一块ESP32 。


由于我的TFT显示屏是8针TFT屏幕,因此我们首先要配置相关文件,我们打开Ardunio,在“库管理”中下载TFT_eSPI库,之后在项目库地址打开TFT_eSPI文件夹中的User_Setup.h进行配置

我们的屏幕信号为ST7789,因此我们需要将7789的宏注释解除掉。并且注释掉原有的宏定义。

往下滑动鼠标,可以看到有关 TFT 显示屏 大小的定义,我们也要选择相对应的高度以及宽度。

由于我们使用的是ESP32 ,所以需要将下面ESP8266的宏给去掉。

之后开启ESP32对应的宏并修改我们的引脚位置以对应 TFT 显示屏 .

最后在我们使用的时候,如果TFT显示屏是⑧针的话,一定记得要把BLO引脚接高!!!
商家给我的例程说这个不用接,最后整整浪费我六个小时的时间。

修改好设置后之后,我们输入以下的代码
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
void setup() {
pinMode(19, OUTPUT);//启动BLK背光
digitalWrite(19, HIGH);
Serial.begin(115200);
tft.init();//初始化
tft.fillScreen(TFT_WHITE);
}
烧录我们进的程序(注意引脚一定一定一定千万千万不要连错)

点亮成功!
连接Wifi
首先我们需要添加WiFi的头文件。
之后写入下面的代码
#include <TFT_eSPI.h>
#include <WiFi.h>
TFT_eSPI tft = TFT_eSPI();
const char * wifiname = "name";//wifi名称
const char * wifipass = "password";//wifi密码
void setup() {
pinMode(18, OUTPUT);//启动BLK背光
digitalWrite(18, HIGH);
Serial.begin(115200);
tft.init();//初始化
tft.fillScreen(TFT_WHITE);
WiFi.begin(wifiname,wifipass);
while (WiFi.status() != WL_CONNECTED) {//等待连接
delay(1000);
tft.fillScreen(TFT_BLACK); // 清空屏幕
tft.setCursor(10, 50);
tft.println("Connecting to WiFi...");
}
tft.fillScreen(TFT_BLACK); // 清空屏幕
tft.setCursor(10, 50);
tft.println("Connected to WiFi");
}
注意WiFi的头文件大小写不要写错了,然后烧录我们的代码。
接着我们在库管理中使用NTPClien这个库,连接上NTP服务器,并且导入WiFiUdp.h库,使得我们可以进行网络通信。
#include <TFT_eSPI.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
TFT_eSPI tft = TFT_eSPI();
const char * wifiname = "name";//wifi名称
const char * wifipass = "password";//wifi密码
const char* ntpServerName = "cn.pool.ntp.org";
const int utcOffset = 8; // 中国时区偏移量(+8小时为例)
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, ntpServerName, utcOffset * 3600);
void setup() {
pinMode(18, OUTPUT);//启动BLK背光
digitalWrite(18, HIGH);
Serial.begin(115200);
tft.init();//初始化
tft.fillScreen(TFT_WHITE);
WiFi.begin(wifiname,wifipass);
while (WiFi.status() != WL_CONNECTED) {//等待连接
delay(1000);
tft.fillScreen(TFT_BLACK); // 清空屏幕
tft.setCursor(10, 50);
tft.println("Connecting to WiFi...");
}
tft.fillScreen(TFT_BLACK); // 清空屏幕
tft.setCursor(10, 50);
tft.println("Connected to WiFi");
timeClient.begin();
timeClient.update();
// 打印当前时间
Serial.println(timeClient.getFormattedTime());
tft.setRotation(1); // 旋转一下屏幕不然看着难受
}
void loop() {
// put your main code here, to run repeatedly:
timeClient.update();
// 在循环中可以使用 timeClient 来获取当前时间
String currentTime = timeClient.getFormattedTime();
// 清空屏幕
tft.fillScreen(TFT_BLACK);
// 设置文本属性
tft.setTextSize(2);
tft.setTextColor(TFT_WHITE);
tft.setCursor(10, 50);
// 在屏幕上显示时间
tft.println(currentTime);
// 这里可以加入其他代码
delay(1000);
}
记得修改Wifi密码和账号。这样子我们就可以获取实时时间啦。


登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!