硬件
1)esp32 c3
2)ILI9488 驱动电阻屏
3)面包板
4)杜邦线若干个
使用的 arduino ide 里面的库 tft_espi
示例图
接线示例图
代码部分
先修改 User_Setup.h定义
#define ILI9488_DRIVER // 模板应该只负责将状态映射到UI。避免在模板中放置有副作用的标记,如<script>,因为它们不会被解析。警告:如果其他设备共享SPI总线,请不要将ILI9488显示器SDO连接到MISO(TFT SDO不是三态 #define TFT_CS 7 #define TFT_RST 10 #define TFT_DC 6 #define TFT_MOSI 3 #define TFT_SCLK 2 #define TFT_MISO 4 #define TOUCH_CS 12 //以上更具自己的开发版来更改 这是 esp32 c3 的定义也可以更改
#include <SPI.h> #include <TFT_eSPI.h> // 导入TFT屏幕的特定库 TFT_eSPI tft = TFT_eSPI(); // 初始化TFT屏幕对象 /* Sketch用于生成设置校准值,这些值将报告给串口监视器。 QQ496631085 */ void setup() { // 初始化串口通信 // Use serial port Serial.begin(115200); // 初始化TFT屏幕 // Initialise the TFT screen tft.init(); // 设置屏幕旋转,-4到4 ,根据项目需求调整镜像可为负数 tft.setRotation(1); // 执行屏幕校准 // 清空屏幕并显示测试信息 tft.fillScreen(TFT_BLACK); tft.drawCentreString("Touch screen to test!",tft.width()/2, tft.height()/2, 2); } void loop() { // 存储触摸坐标 uint16_t x = 0, y = 0; // To store the touch coordinates // 检测屏幕是否被触摸 bool pressed = tft.getTouch(&x, &y); // 如果屏幕被触摸,画一个白点 if (pressed) { tft.fillCircle(x, y, 2, TFT_WHITE); } } /* 执行触摸屏校准程序。 该函数通过引导用户触摸屏幕的四个角来收集校准数据, 然后将这些数据通过串口发送到主机,以供在设置函数中使用。 */ void touch_calibrate() { uint16_t calData[5]; uint8_t calDataOK = 0; // 屏幕清空并显示校准指示 // Calibrate tft.fillScreen(TFT_BLACK); tft.setCursor(20, 0); tft.setTextFont(2); tft.setTextSize(1); tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.println("Touch corners as indicated"); tft.setTextFont(1); tft.println(); // 执行校准操作,收集校准数据 tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15); // 通过串口发送校准数据代码片段,供复制到setup()中使用 Serial.println(); Serial.println(); Serial.println("// Use this calibration code in setup():"); Serial.print(" uint16_t calData[5] = "); Serial.print("{ "); for (uint8_t i = 0; i < 5; i++) { Serial.print(calData[i]); if (i < 4) Serial.print(", "); } Serial.println(" };"); Serial.print(" tft.setTouch(calData);"); Serial.println(); Serial.println(); // 校准完成,提示用户并等待 tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_GREEN, TFT_BLACK); tft.println("Calibration complete!"); tft.println("Calibration code sent to Serial port."); delay(4000); }