695 字
3 分钟
Esp32(Arduino) TFT_eSPI库学习

使用软硬件及环境#

软件#

Vscode 1.84.2
PlatformIO IDE 3.3.1

硬件#

ESP-WROOM-32(Arduino)
1.8 128X160 RGB_TFT 显示屏(驱动IC ST7735S)

环境#

TFT_eSPI 2.5.33

TFT_eSPI库配置#

修改User_Setup.h

#define USER_SETUP_INFO "User_Setup"
#define ST7735_DRIVER //显示屏驱动
#define TFT_RGB_ORDER TFT_RGB //驱动颜色顺序
#define TFT_WIDTH 128 //屏幕宽度
#define TFT_HEIGHT 160 //屏幕高度
#define ST7735_REDTAB //驱动色彩模式
// GND
// VCC
#define TFT_SCLK 18 //SPI时钟
#define TFT_MOSI 23 //SPI数据
#define TFT_RST 25 //SPI重置引脚
#define TFT_DC 14 //SPI命令/数据选择引脚
#define TFT_CS 15 //SPI片选引脚
//#define TOUCH_CS 11 //触摸引脚
#define SPI_FREQUENCY 40000000 // SPI速度 不建议大于27M
#define LOAD_GLCD // 字体1 8像素 占用1820字节
#define LOAD_FONT2 // 字体2 16像素 占用3534字节 96字符
#define LOAD_FONT4 // 字体4 26像素 占用5848字节 96字符
#define LOAD_FONT6 // 字体6 48像素 占用2666字节 仅包含1234567890:-.
#define LOAD_FONT7 // 字体7 七段 48像素 占用2438字节 仅包含1234567890:-.
#define LOAD_FONT8 // 字体8 75像素 占用3256字节 仅包含1234567890:-.
//#define LOAD_FONT8N // 字体8N 75像素略窄
#define LOAD_GFXFF // FreeFonts。48像素Adafruit_GFX免费字体FF1到FF48和自定义字体
#define SMOOTH_FONT // 平滑字体 注释掉将节省20kb

在main.cpp/main.h中创建tftespi对象

TFT_eSPI tft = TFT_eSPI(TFT_WIDTH, TFT_HEIGHT);

TFT_eSPI使用#

初始化屏幕

tft.init();

字符类操作#

TFT_eSPI中字符操作和一般的OLED屏幕操作有巨大差别
TFT_eSPI库将使用游标作为字符串打印位置而非在打印字符串时提供坐标位置

设置游标/字体

tft.setCursor(x,y); //仅操作游标
tft.setCursor(x,y,font);//操作游标并修改字体大小
tft.setTextSize(font); //修改字体

打印字符

tft.println("hello"); //打印字符串后自动换行
tft.print("world\n"); //普通打印字符串
tft.printf("Esp%d",nub);//格式化打印字符串
tft.drawString("Moonbeam ",x,y);//打印时同时指定游标

图形类#

TODO

图片类#

TODO

杂项#

覆盖屏幕

tft.fillScreen(Color);//Color RGB565色彩

已定义色彩

#define TFT_BLACK 0x0000 /* 0, 0, 0 */
#define TFT_NAVY 0x000F /* 0, 0, 128 */
#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */
#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */
#define TFT_MAROON 0x7800 /* 128, 0, 0 */
#define TFT_PURPLE 0x780F /* 128, 0, 128 */
#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */
#define TFT_LIGHTGREY 0xD69A /* 211, 211, 211 */
#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */
#define TFT_BLUE 0x001F /* 0, 0, 255 */
#define TFT_GREEN 0x07E0 /* 0, 255, 0 */
#define TFT_CYAN 0x07FF /* 0, 255, 255 */
#define TFT_RED 0xF800 /* 255, 0, 0 */
#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */
#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */
#define TFT_WHITE 0xFFFF /* 255, 255, 255 */
#define TFT_ORANGE 0xFDA0 /* 255, 180, 0 */
#define TFT_GREENYELLOW 0xB7E0 /* 180, 255, 0 */
#define TFT_PINK 0xFE19 /* 255, 192, 203 */ //Lighter pink, was 0xFC9F
#define TFT_BROWN 0x9A60 /* 150, 75, 0 */
#define TFT_GOLD 0xFEA0 /* 255, 215, 0 */
#define TFT_SILVER 0xC618 /* 192, 192, 192 */
#define TFT_SKYBLUE 0x867D /* 135, 206, 235 */
#define TFT_VIOLET 0x915C /* 180, 46, 226 */

未定义色彩使用方法
方法1.自己找Rgb565色

NULL

方法2.使用函数转换

tft.color565(red,green,blue);RGB888 ->RGB565
Esp32(Arduino) TFT_eSPI库学习
https://fuwari.vercel.app/posts/esp32arduino-tft_espi库学习/
作者
橙橙橙汁
发布于
2023-12-09
许可协议
CC BY-NC-SA 4.0