前段时间在网上看见有关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密码和账号。这样子我们就可以获取实时时间啦。


#include&lt;TFT_eSPI.h&gt;#
#include&lt;WiFiUdp.h&gt;#
嘉立创PCB

还没有评论,抢个沙发!