• Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台(实验三)折腾 TFT_eSPI 库


    Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台_姜戈12的博客-CSDN博客_arduino st7735https://blog.csdn.net/jiangge12/article/details/123971499?spm=1001.2014.3001.5502

     折腾TFT_eSPI.h 

    很早知道 TFT_eSPI.h 库,在本系列实验之前中为什么一直用 Adafruit_ST7735.h 这个库呢?那是走了些弯路,毕竟ST7735S相对来说不是最广泛使用,进入我的视线也是 合宙 这款 1.8‘ TFT只卖9.9 包邮。到手后测试发现用 Adafruit_ST7735.h 这个库显示很正常,但是用  TFT_eSPI.h 屏幕显示错位,按说明改参数后无法修复。再加上看了很多网文说 TFT_eSPI.h 接线需要按硬件SPI连线,当时用ESP8266测试的确也是,我又喜欢直接插这种自定义引脚的方式,正好 Adafruit_ST7735.h 就是支持的,那么就先这么用吧。

    今天无聊又翻出 ESP32 来测试  TFT_eSPI , 依然还是显示错位,依然还是改参数无效,正准备又放弃时,发现参数列表后面还有一个看起来可能的没试,一试果然OK了。原来下图这种事真的有可能发生。

     TFT_eSPI 库首次使用,需要配置库安装目录里的 User_Setup.h  (不同屏和开发板引脚配置不同。。。省略1万字)

    把该文件改个名字做个备份,然后用下面内容替换里面所有文字。我只是配置测试通过后删除了注释和其他开发板的内容。只在 合宙1.8’ TFT 验证通过,其他的自己看着办。

    1. #define USER_SETUP_INFO "User_Setup"
    2. #define ST7735_DRIVER
    3. #define TFT_RGB_ORDER TFT_RGB
    4. #define TFT_WIDTH 128
    5. #define TFT_HEIGHT 160
    6. #define ST7735_REDTAB
    7. // GND
    8. // VCC
    9. #define TFT_SCLK 2
    10. #define TFT_MOSI 3
    11. #define TFT_RST 10
    12. #define TFT_DC 6
    13. #define TFT_CS 7
    14. #define SPI_FREQUENCY 40000000 // 不建议大于27M
    15. #define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
    16. #define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
    17. #define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
    18. #define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
    19. #define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
    20. #define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
    21. //#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
    22. #define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
    23. #define SMOOTH_FONT // Comment out this will save ~20kbytes of FLASH

    于是打开任意 TFT_eSPI 自带例程即可愉快的玩耍了。

    ESP32 引脚略不同,看着引脚图, 确定 GND 3.3V 位置后 按上面配置修改其余5个引脚号即可。

    比如我手里的 ESP32 这样改:

    1. #define USER_SETUP_INFO "User_Setup"
    2. #define ST7735_DRIVER
    3. #define TFT_RGB_ORDER TFT_RGB
    4. #define TFT_WIDTH 128
    5. #define TFT_HEIGHT 160
    6. #define ST7735_REDTAB
    7. #define SPI_FREQUENCY 40000000 // 不建议大于27M
    8. // GND
    9. // VCC
    10. #define TFT_SCLK 15
    11. #define TFT_MOSI 2
    12. #define TFT_RST 4
    13. #define TFT_DC 16
    14. #define TFT_CS 17
    15. #define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
    16. #define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
    17. #define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
    18. #define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
    19. #define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
    20. #define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
    21. //#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
    22. #define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
    23. #define SMOOTH_FONT // Comment out this will save ~20kbytes of FLASH

    最后实测,引脚不变,单次清屏,用  TFT_eSPI.h 比  Adafruit_ST7735.h 竟然快50倍。一下子对合宙这块屏兴趣大增,以前因为太慢不敢想的图片视频类应用也排上了实验清单。

    录了个视频,没必要长传优酷了,视频转Gif  意思意思。

    -------------------------------------------------------------------------------------------------------------------------

     折腾 LVGL 

    LVGL是基于 TFT_eSPI 的多平台GUI。

    省略10万字。。。

    折腾好一阵子,终于让 LVGL 跑起来,显示出一个蓝色按钮,蛮漂亮。

    这里只开了个头,就不专文写了,因为这个可能要搁置了,暂时还没有用 arduino 玩大触摸屏的想法,而且SPI加触摸的大屏选择也不多。个人认为大触摸屏应用 android 或许要合适些。

    注意,LVGL 需要触摸屏,本文前面写的引脚定义并不包含,单用 TFT_eSPI 没问题,跑 LVGL 需要增加下面一行到 User_Setup.h , 实测不加一定报错。引脚号任意,反正也没有可连接的。

    #define TOUCH_CS 11

     参考了以下博文:

    arduino-esp32:使用LVGL_扶我起来我还有头发的博客-CSDN博客_esp32 lvglhttps://blog.csdn.net/unclejin_/article/details/123994267

  • 相关阅读:
    详解 SpringMVC 的 HttpMessageConverter
    两台服务器实现免密登录
    离散优化算法和连续优化算法
    反射、枚举和lambda表达式
    计算平均分数并将其分配给对象
    深度学习笔记之优化算法(四)Nesterov动量方法的简单认识
    Linux终端快捷键
    《Nature》STING 与 cGAMP 结合导致 TBK1 激酶募集和活化
    【opencv-c++】windows10系统VisualStudio2022配置opencv_contrib-4.6.0
    初始多线程
  • 原文地址:https://blog.csdn.net/jiangge12/article/details/126218280