橙汁小窝

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注