【物联网初探】- 03 - ESP32 结合 TFT_eSPI 库标定 TFT 触摸屏 (Arduino IDE)

文章目录

      • 1. 硬件配置
        • 1.1 ESP32 + TFT 彩屏
      • 2. 触摸屏的参数标定
        • 2.1 例程编译烧录
        • 2.2 屏幕四角标定
      • 3. 触屏例程测试标定参数
        • 3.1 例程编译烧录

1. 硬件配置

1.1 ESP32 + TFT 彩屏

  • 本篇中的 ESP32 和 TFT 彩屏参见前两篇博客:

    • 【物联网初探】- 01 - ESP32 开发环境搭建 (Arduino IDE)
    • 【物联网初探】- 02 - ESP32 利用 SPI 联通 TFT 彩屏 (Arduino IDE)
  • 接线也参考上两篇细节。

2. 触摸屏的参数标定

触摸屏在初始化时需要传入一组标定参数,利用 TFT_eSPI 库中的例子可以进行标定。

2.1 例程编译烧录

  • 打开 File - Examples - TFT_eSPI - Generic 中的 Touch_calibrate例程,编译并烧录至 ESP32。

2.2 屏幕四角标定

  • 按屏幕上的提示依次触摸四个角,在串口监视器中输出如下信息。

    19:09:50.647 -> // Use this calibration code in setup():
    19:09:50.647 ->   uint16_t calData[5] = { 255, 3591, 315, 3457, 5 };
    19:09:50.647 ->   tft.setTouch(calData);
    
  • 完成后,屏幕上提示绿色字样 Touch screen to test !,此时触摸屏幕会产生白色小点,触屏功能正常。

3. 触屏例程测试标定参数

3.1 例程编译烧录

  • File - Examples - TFT_eSPI - 480x320 中打开 Keypad_480x320 这个例子,代码较多,仅截取关键部分如下:

    #include "FS.h"
    #include 
    #include 
    
    TFT_eSPI tft = TFT_eSPI(); 
    // 省略中间部分
    
    uint16_t calData[5] = { 255, 3591, 315, 3457, 5 };//定义标定参数
    
    void setup() 
    {
      Serial.begin(9600);
      tft.init();
      tft.setRotation(1);
      touch_calibrate(); // 标定参数读取
      tft.fillScreen(TFT_BLACK);
      tft.fillRect(0, 0, 240, 320, TFT_DARKGREY);
      tft.fillRect(DISP_X, DISP_Y, DISP_W, DISP_H, TFT_BLACK);
      tft.drawRect(DISP_X, DISP_Y, DISP_W, DISP_H, TFT_WHITE);
      drawKeypad();
    }
    
    void touch_calibrate() //利用标定后的参数
    {
      tft.setTouch(calData);
    }
    
  • 简单说明,将自行标定的参数放入有关触摸屏程序的 setup() 函数中,在 setup() 函数前定义标定参数 calData[5] ,在 setup() 函数中利用函数 tft.setTouch(calData); 来传入标定参数。

  • 这里我将原有例程中 touch_calibrate() 函数内全部删去,仅使用了 tft.setTouch(calData);

  • 编译并烧录,记得赋予串口权限,板子显示如下:

esp32 上 TFT

你可能感兴趣的:(嵌入式学习,物联网,esp32,arduino,单片机)