【花雕学编程】Arduino动手做(249)---ESP32 1.28寸 TFT GC9A01屏之显示一个绿色圆形从左向右循环滚动

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验开发板使用ESP32

在这里插入图片描述
在这里插入图片描述

实验模块接线示意图

在这里插入图片描述
在这里插入图片描述

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
项目之五十九:GC9A01园屏之显示一个绿色圆形从左向右循环滚动

实验开源代码

/*
  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  项目之五十九:GC9A01园屏之显示一个绿色圆形从左向右循环滚动
*/

//       GC9A01---------- ESP32
//       RST ------------ NC(复位引脚,此处未连接)
//       CS ------------- D4(片选引脚,连接到ESP32的D4引脚)
//       DC ------------- D2(数据/命令选择引脚,连接到ESP32的D2引脚)
//       SDA ------------ D23 (green)(主数据输出引脚,连接到ESP32的D23引脚,绿色线)
//       SCL ------------ D18 (yellow)(时钟信号引脚,连接到ESP32的D18引脚,黄色线)
//       GND ------------ GND(接地引脚,连接到ESP32的接地端)
//       VCC -------------3V3(电源引脚,连接到ESP32的3.3V电源)

// **包含必要的库文件**
#include "SPI.h"                      // SPI 库,支持 TFT 屏幕通信
#include "Adafruit_GFX.h"             // Adafruit 图形库,用于绘制文本和图形
#include "Adafruit_GC9A01A.h"         // GC9A01A 屏幕驱动库

// **屏幕连接引脚**
#define TFT_CS 4                      // 片选引脚
#define TFT_DC 2                      // 数据/命令选择引脚
#define TFT_RST -1                    // 复位引脚(-1 表示未使用)

// **创建 TFT 屏幕对象**
Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);

#define SCREEN_WIDTH 240
#define SCREEN_HEIGHT 240
#define CIRCLE_DIAMETER 80  // **圆形直径**
#define SCROLL_SPEED 5      // **滚动速度**

int circleX = -CIRCLE_DIAMETER;  // **从屏幕左侧开始滚动**
int circleY = SCREEN_HEIGHT / 2; // **圆形垂直居中**
uint16_t circleColor = tft.color565(0, 255, 0); // **绿色**

void setup() {
    
    
    Serial.begin(115200);
    tft.begin();
    tft.setRotation(2);
    tft.fillScreen(tft.color565(0, 0, 0));  // **黑色背景**
}

void loop() {
    
    
    tft.fillScreen(tft.color565(0, 0, 0));  // **清屏,避免残影**
    
    // **绘制填充的绿色圆形**
    tft.fillCircle(circleX, circleY, CIRCLE_DIAMETER / 2, circleColor);

    circleX += SCROLL_SPEED;  // **圆形向右滚动**

    // **循环滚动**
    if (circleX > SCREEN_WIDTH + CIRCLE_DIAMETER) {
    
    
        circleX = -CIRCLE_DIAMETER;  // **当圆形移出屏幕后,重新回到左侧**
    }

    delay(30);  // **控制滚动速度**
}

核心功能
• 初始化 TFT 屏幕,并设置背景为黑色。
• 绘制一个绿色圆形,初始位置在屏幕 左侧外部。
• 让圆形不断向右移动,实现滚动动画。
• 当圆形滚出右侧时,重新从左侧进入,实现无限循环。

代码解读

1️⃣ 初始化

Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);

• 创建 TFT 显示屏对象,用于控制屏幕。

2️⃣ 定义参数

#define SCREEN_WIDTH 240
#define SCREEN_HEIGHT 240
#define CIRCLE_DIAMETER 70
#define SCROLL_SPEED 3

• SCREEN_WIDTH / HEIGHT:设定屏幕宽度和高度(240×240)。
• CIRCLE_DIAMETER:圆形直径 70 像素。
• SCROLL_SPEED:滚动速度,每次移动 3 像素。

3️⃣ 设置初始圆形位置

int circleX = 
-CIRCLE_DIAMETER;
int circleY = SCREEN_HEIGHT / 2;

• circleX 初始值是 屏幕左侧外部,确保滚动时平滑进入。
• circleY 设定为 屏幕中央,保证居中显示。

4️⃣ 循环滚动

circleX += SCROLL_SPEED;

if (circleX > SCREEN_WIDTH + CIRCLE_DIAMETER) 
{
    
    
    circleX = 
-CIRCLE_DIAMETER;
}

• circleX += SCROLL_SPEED; 让圆形 每次循环右移 3 像素。
• 检查 是否滚出屏幕右侧,如果 完全超出,则 重新从左侧开始。

最终效果
绿色圆形平滑滚动,从左到右循环播放
视觉流畅,无卡顿
黑色背景 + 绿色圆形,增强对比度

实验场景图 动态图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/147125321
今日推荐