本文主要是介绍ESP32使用TFT_eSPI库实现屏幕触摸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 软件准备
- 引脚连接
- 程序上传
软硬件:ESP-WROOM-32、Arduino、2.8寸240*320触摸屏(ILI9341驱动)
以下是开发板和屏幕实物
软件准备
1、在Arduino中搜索安装TFT_eSPI库。
2、找到TFT_eSPI的安装目录,个人根据电脑用户名、安装目录不同有所差异,可以参照我的路径寻找:C:\Users\ZJC\Documents\Arduino\libraries\TFT_eSPI。
3、打开User_Setup.h文件,首先选择屏幕驱动,这里用的屏幕驱动为ILI9341,那么将#define ILI9341_DRIVER
取消注释。
往下找到以下行,这是默认针对ESP8266的引脚定义,由于这里使用的是ESP32,将它们注释掉。
再往下,找到以下代码,这是针对ESP32的引脚定义,将它们取消注释。
最后记得保存。
4、打开User_Setup_Select.h文件,根据注释找到合适的include语句,取消其注释,比如这里屏幕使用的ILI9341和ESP32开发板,则将#include <User_Setups/Setup42_ILI9341_ESP32.h>
这行取消注释即可。
5、打开User_Setups文件夹,打开上一步选择的.h文件,这里就是Setup42_ILI9341_ESP32.h文件,因为将要同时实现显示和触摸功能,将框中的代码取消注释,这个定义的是触摸SPI片选引脚,即将触摸的T_CS引脚连接ESP32的D5引脚。
如果第5步没有完成,在Arduino编译时可能出现以下错误:'class TFT_eSPI' has no member named 'getTouch'
引脚连接
上面第5步的截图中定义了屏幕与ESP32的引脚连接,为什么触摸部分只有一个TOUCH_CS呢?因为触摸和显示是分为两个模块,它们都使用SPI与ESP32进行通信。
因为SPI通信的引脚在不同地方叫法比较多,在这里可按以下简单归为同一引脚:MISO(SDO)、MOSI(SDI)、SCLK(CLK)
因此触摸部分的T_CLK与TFT_SCKL连接,根据以上定义T_CS连接ESP32的D5,T_DIN连接SDI(MOSI),根据定义T_DO连接ESP32的D19,T_IRQ不连接。
显示部分按照上图中的引脚定义接线即可,但是SDO(MISO)不接线,否则后面会导致异常。
触摸和显示有两根线是共用的,这就是SPI中一个主设备对多个从设备,ESP32是通过控制触摸和显示的CS来选择控制哪个设备。
程序上传
打开示例程序TFT_eSPI—Generic—Touch_calibrate,编译上传。
如果一切正常,会先出现屏幕校准(因为是电阻屏),如果跳过会导致触摸位置偏移,校准完后就可进行触摸了。
代码中的x、y就是触摸的坐标,根据此坐标即可判断位置
这篇关于ESP32使用TFT_eSPI库实现屏幕触摸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!