114浏览
查看: 114|回复: 5

[项目] 【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动

[复制链接]
【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图2

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图1

驴友花雕  中级技神
 楼主|

发表于 2025-4-10 20:38:10

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图1

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-10 20:44:48

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目之五十九:GC9A01园屏之显示一个绿色圆形从左向右循环滚动
  5. */
  6. //       GC9A01---------- ESP32
  7. //       RST ------------ NC(复位引脚,此处未连接)
  8. //       CS ------------- D4(片选引脚,连接到ESP32的D4引脚)
  9. //       DC ------------- D2(数据/命令选择引脚,连接到ESP32的D2引脚)
  10. //       SDA ------------ D23 (green)(主数据输出引脚,连接到ESP32的D23引脚,绿色线)
  11. //       SCL ------------ D18 (yellow)(时钟信号引脚,连接到ESP32的D18引脚,黄色线)
  12. //       GND ------------ GND(接地引脚,连接到ESP32的接地端)
  13. //       VCC -------------3V3(电源引脚,连接到ESP32的3.3V电源)
  14. // **包含必要的库文件**
  15. #include "SPI.h"                      // SPI 库,支持 TFT 屏幕通信
  16. #include "Adafruit_GFX.h"             // Adafruit 图形库,用于绘制文本和图形
  17. #include "Adafruit_GC9A01A.h"         // GC9A01A 屏幕驱动库
  18. // **屏幕连接引脚**
  19. #define TFT_CS 4                      // 片选引脚
  20. #define TFT_DC 2                      // 数据/命令选择引脚
  21. #define TFT_RST -1                    // 复位引脚(-1 表示未使用)
  22. // **创建 TFT 屏幕对象**
  23. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
  24. #define SCREEN_WIDTH 240
  25. #define SCREEN_HEIGHT 240
  26. #define CIRCLE_DIAMETER 80  // **圆形直径**
  27. #define SCROLL_SPEED 5      // **滚动速度**
  28. int circleX = -CIRCLE_DIAMETER;  // **从屏幕左侧开始滚动**
  29. int circleY = SCREEN_HEIGHT / 2; // **圆形垂直居中**
  30. uint16_t circleColor = tft.color565(0, 255, 0); // **绿色**
  31. void setup() {
  32.     Serial.begin(115200);
  33.     tft.begin();
  34.     tft.setRotation(2);
  35.     tft.fillScreen(tft.color565(0, 0, 0));  // **黑色背景**
  36. }
  37. void loop() {
  38.     tft.fillScreen(tft.color565(0, 0, 0));  // **清屏,避免残影**
  39.    
  40.     // **绘制填充的绿色圆形**
  41.     tft.fillCircle(circleX, circleY, CIRCLE_DIAMETER / 2, circleColor);
  42.     circleX += SCROLL_SPEED;  // **圆形向右滚动**
  43.     // **循环滚动**
  44.     if (circleX > SCREEN_WIDTH + CIRCLE_DIAMETER) {
  45.         circleX = -CIRCLE_DIAMETER;  // **当圆形移出屏幕后,重新回到左侧**
  46.     }
  47.     delay(30);  // **控制滚动速度**
  48. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-10 20:50:43

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动

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

代码解读

1️⃣ 初始化

  1. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC,
  2. TFT_RST);
复制代码


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

2️⃣ 定义参数

  1. #define SCREEN_WIDTH 240
  2. #define SCREEN_HEIGHT 240
  3. #define CIRCLE_DIAMETER 70
  4. #define SCROLL_SPEED 3
复制代码


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

3️⃣ 设置初始圆形位置

  1. int circleX =
  2. -CIRCLE_DIAMETER;
  3. int circleY = SCREEN_HEIGHT / 2;
复制代码


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

4️⃣ 循环滚动

  1. circleX += SCROLL_SPEED;
  2. if (circleX > SCREEN_WIDTH + CIRCLE_DIAMETER)
  3. {
  4.     circleX =
  5. -CIRCLE_DIAMETER;
  6. }
复制代码


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

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

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-10 20:52:51

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动

实验场景图  动态图

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图2

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-10 20:54:48

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动

【花雕学编程】Arduino动手做(249)---GC9A01绿圆循环滚动图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail