有个官方的资料,可以了解到是ST7735,屏幕的分辨率
https://doc.openluat.com/wiki/21?wiki_page_id=2672

有个库但是这个库是LuatOS的,所以我这边没啥用
https://gitee.com/openLuat/LuatOS/tree/master/demo/lvgl/Air101
想要驱动,需要安装一个库,下载后放在Arduino的Library文件夹下面
https://github.com/adafruit/Adafruit-ST7735-Library

但是选择会出现这个情况,找不到文件 fatal error: Adafruit_SPITFT.h: No such file or directory

原因是Arduino IDE自带的这个Adafruit-GFX-Library库不完整,缺少很多文件,所以,我们要完整的库文件
下载并覆盖文件夹中的库

然后就可以正常的编译了

试一下DEMO代码
- #include
-
- #include
-
-
- #define TFT_SCLK 2 //SCL
-
- #define TFT_MOSI 3 //SDA
-
- #define TFT_RST 10 //RES
-
- #define TFT_DC 6 //DC
-
- #define TFT_CS 7 //CS
-
-
-
- Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
-
-
- void setup(void) {
-
- tft.initR(INITR_BLACKTAB);
-
- tft.fillScreen(ST7735_RED);
-
- tft.setTextColor(ST7735_YELLOW);
-
- tft.setTextSize(2);
-
- tft.setCursor(24,0);
-
- tft.print("Hello");
-
- }
-
-
- void loop(void) {
-
- }
不过这个库配合下直接驱动,显示x坐标需要偏移24

那么通常是因为烧录设置有问题,主要注意Flash Mode设置为 DIO

首先要了解,五轴方向键的左,上,中心,下这五个分别对应IO为IO6,IO8,IO4,IO5,右是IO13

直接上测试代码,这里我发现RKEY有点问题
- #include
- #include
-
- #define TFT_SCLK 2 //SCL
- #define TFT_MOSI 3 //SDA
- #define TFT_RST 10 //RES
- #define TFT_DC 6 //DC
- #define TFT_CS 7 //CS
-
- #define SCREEN_WIDTH 128
- #define SCREEN_HEIGHT 64
- #define BUTTON_LEFT 13
- #define BUTTON_UP 8
- #define BUTTON_CENTER 4
- #define BUTTON_DOWN 5
- #define BUTTON_RIGHT 9
-
- Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
-
- int scroll_delay = 100; // 滚动速度,单位毫秒
- void testpin();
- void setup(void) {
- // 初始化左上中下按键
- pinMode(BUTTON_LEFT, INPUT);
- pinMode(BUTTON_UP, INPUT);
- pinMode(BUTTON_CENTER, INPUT);
- pinMode(BUTTON_DOWN, INPUT);
- pinMode(BUTTON_RIGHT, INPUT);
-
-
- Serial.begin(9600);
-
- tft.initR(INITR_BLACKTAB);
- tft.setRotation(3); // 竖屏显示
- tft.fillScreen(ST7735_RED);
- tft.setTextColor(ST7735_YELLOW);
- tft.setTextSize(2);
- tft.setCursor(24,0);
- tft.print("Hello");
- Serial.print("Begin");
- //delay(100);
- }
-
- int pointX = SCREEN_WIDTH / 2;
- int pointY = SCREEN_HEIGHT / 2;
- void drawpin()
- {
- int leftState = digitalRead(BUTTON_LEFT);
- int upState = digitalRead(BUTTON_UP);
- int centerState = digitalRead(BUTTON_CENTER);
- int downState = digitalRead(BUTTON_DOWN);
- int rightState = digitalRead(BUTTON_RIGHT);
-
- // 根据按键状态改变小点位置
- if (leftState == LOW) {
- pointX--;
- }
- if (rightState == LOW) {
- pointX++;
- }
- if (upState == LOW) {
- pointY--;
- }
- if (downState == LOW) {
- pointY++;
- }
- if(centerState == LOW)
- {
- tft.fillScreen(ST7735_BLACK);
- }
- // 边界检查,防止小点移出屏幕
- if (pointX < 0) {
- pointX = 0;
- }
- if (pointX > SCREEN_WIDTH - 1) {
- pointX = SCREEN_WIDTH - 1;
- }
- if (pointY < 0) {
- pointY = 0;
- }
- if (pointY > SCREEN_HEIGHT - 1) {
- pointY = SCREEN_HEIGHT - 1;
- }
-
- // 清空屏幕
- //tft.fillScreen(ST7735_BLACK);
-
- // 绘制小点
- tft.drawPixel(pointX, pointY, ST7735_WHITE);
-
- delay(50); // 延时一段时间,防止过快刷新屏幕
- }
-
-
- void testpin()
- {
- Serial.print("LEFT: ");
- Serial.print(digitalRead(BUTTON_LEFT));
- Serial.print("\tUP: ");
- Serial.print(digitalRead(BUTTON_UP));
- Serial.print("\tCENTER: ");
- Serial.print(digitalRead(BUTTON_CENTER));
- Serial.print("\tDOWN: ");
- Serial.print(digitalRead(BUTTON_DOWN));
- Serial.print("\tRIGHT: ");
- Serial.println(digitalRead(BUTTON_RIGHT));
-
- delay(100);
- }
-
- void testpinlcd()
- {
- tft.setTextSize(1); // 设置文本大小为1
- // tft.fillRect(0, 10, SCREEN_WIDTH, SCREEN_HEIGHT-10, ST7735_BLACK);
-
- tft.setCursor(0, 24);
- tft.setTextColor(ST7735_WHITE);
- tft.setTextSize(1);
- tft.println("Button Status:");
- tft.print("LEFT_BUTTON: ");
- tft.println(digitalRead(BUTTON_LEFT));
- tft.print("UP_BUTTON: ");
- tft.println(digitalRead(BUTTON_UP));
- tft.print("CENTER_BUTTON: ");
- tft.println(digitalRead(BUTTON_CENTER));
- tft.print("DOWN_BUTTON: ");
- tft.println(digitalRead(BUTTON_DOWN));
- tft.print("RIGHT_BUTTON: ");
- tft.println(digitalRead(BUTTON_RIGHT));
- delay(100);
- }
- void loop(void) {
-
- testpinlcd();
- }