587浏览
楼主: 驴友花雕

[项目] 【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏27个特色案例

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目实验之二十七:五彩动态圆环动画
  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. #include "SPI.h"
  15. #include "Adafruit_GFX.h"
  16. #include "Adafruit_GC9A01A.h"
  17. // 定义屏幕引脚
  18. #define TFT_CS 4        // 片选引脚
  19. #define TFT_DC 2        // 数据/命令引脚
  20. #define TFT_RST -1      // 重置引脚(若未连接请设置为 -1)
  21. // 初始化屏幕对象
  22. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
  23. // 定义颜色数组
  24. uint16_t colors[] = {GC9A01A_RED, GC9A01A_GREEN, GC9A01A_BLUE, GC9A01A_YELLOW, GC9A01A_MAGENTA, GC9A01A_CYAN, GC9A01A_WHITE};
  25. int numColors = sizeof(colors) / sizeof(colors[0]);
  26. // 屏幕中心和圆环范围
  27. #define SCREEN_CENTER_X 120
  28. #define SCREEN_CENTER_Y 120
  29. #define MAX_RADIUS 120    // 最大圆环半径
  30. #define DELAY_MS 50       // 每帧延迟
  31. void setup() {
  32.     Serial.begin(115200);          // 初始化串口通信
  33.     Serial.println("Colorful Dynamic Animation");
  34.     tft.begin();                   // 初始化屏幕
  35.     tft.setRotation(0);            // 设置屏幕方向
  36.     tft.fillScreen(GC9A01A_BLACK); // 清屏设置为黑色
  37. }
  38. void loop() {
  39.     static int frame = 0;  // 动画帧数
  40.     // 绘制多层动态圆环
  41.     for (int i = 0; i < 10; i++) { // 控制多层圆环
  42.         int radius = (frame + i * 12) % MAX_RADIUS; // 动态半径变化
  43.         uint16_t color = colors[(frame / 12 + i) % numColors]; // 循环获取颜色
  44.         tft.drawCircle(SCREEN_CENTER_X, SCREEN_CENTER_Y, radius, color);
  45.     }
  46.     // 帧延迟
  47.     delay(DELAY_MS);
  48.     // 清除上一帧
  49.     tft.fillScreen(GC9A01A_BLACK);
  50.     // 更新帧数
  51.     frame++;
  52. }
复制代码



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏27个特色案例

代码说明

1、五彩渐变效果:

使用颜色数组 colors[],包括红、绿、蓝、黄、品红、青色和白色,圆环按顺序变化颜色。

每一帧圆环会动态增长,同时交替不同的颜色。

2、动态扩展圆环:

半径 radius 随动画帧数动态变化,实现不断扩展的环形动画。

圆环从中心点依次展开,超出屏幕范围时重置,形成循环效果。

3、高效刷新机制:

使用 fillScreen() 快速清除上一帧内容,保证动画的流畅显示。

控制帧速率的延迟时间 DELAY_MS 提供平滑视觉效果。

4、环形层叠设计:

每一帧绘制多层圆环,内外交错,增强立体层次感和动感。

5、效果描述

屏幕中央绘制五彩的动态扩展圆环,每一层圆环具有不同的颜色。

圆环逐渐从小到大扩展,超出屏幕范围后重新从中心开始。

整个动画五彩斑斓,变化流畅,适合展示动态效果和吸引注意力。


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏27个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图2

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏27个特色案例

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏28个特色案例

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目实验之二十八:多彩随机图形叠加
  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. #include "SPI.h"
  15. #include "Adafruit_GFX.h"
  16. #include "Adafruit_GC9A01A.h"
  17. // 定义屏幕引脚
  18. #define TFT_CS 4        // 片选引脚
  19. #define TFT_DC 2        // 数据/命令引脚
  20. #define TFT_RST -1      // 重置引脚(若未连接请设置为 -1)
  21. // 初始化屏幕对象
  22. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
  23. // 定义颜色数组
  24. uint16_t colors[] = {GC9A01A_RED, GC9A01A_GREEN, GC9A01A_BLUE, GC9A01A_YELLOW, GC9A01A_MAGENTA, GC9A01A_CYAN, GC9A01A_WHITE};
  25. int numColors = sizeof(colors) / sizeof(colors[0]);
  26. void setup() {
  27.     Serial.begin(115200);          // 初始化串口
  28.     Serial.println("Dynamic Colorful Shapes Animation");
  29.     tft.begin();                   // 初始化屏幕
  30.     tft.setRotation(0);            // 设置屏幕方向
  31.     tft.fillScreen(GC9A01A_BLACK); // 清屏设置为黑色
  32. }
  33. void loop() {
  34.     // 随机选择形状类型
  35.     int shapeType = random(0, 3); // 0: 三角形, 1: 圆形, 2: 正方形
  36.     // 随机生成尺寸、位置和颜色
  37.     int x = random(0, 240);
  38.     int y = random(0, 240);
  39.     int size = random(20, 60); // 随机大小
  40.     uint16_t color = colors[random(0, numColors)];
  41.     if (shapeType == 0) {
  42.         // 绘制随机三角形
  43.         int x2 = x + size;
  44.         int y2 = y;
  45.         int x3 = x + size / 2;
  46.         int y3 = y + size;
  47.         tft.fillTriangle(x, y, x2, y2, x3, y3, color);
  48.     } else if (shapeType == 1) {
  49.         // 绘制随机圆形
  50.         tft.fillCircle(x, y, size / 2, color);
  51.     } else if (shapeType == 2) {
  52.         // 绘制随机正方形
  53.         tft.fillRect(x, y, size, size, color);
  54.     }
  55.     delay(100); // 每帧延迟,用于控制刷新速度
  56. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏28个特色案例

代码说明

1、随机形状类型:

random(0, 3) 决定生成三角形、圆形或正方形,形状多样化,增强视觉层次感。

2、随机颜色和大小:

colors[] 提供丰富的颜色选择,每个图形随机应用不同的颜色。

图形尺寸通过 random(20, 60) 生成,保证大小的随机变化。

3、动态叠加效果:

每次生成新图形时直接叠加到屏幕上,不清除之前的内容,形成炫目的图形堆叠动画。

4、适配圆形屏幕:

屏幕分辨率为 240x240,所有图形的生成位置和大小随机且适配屏幕区域。

5、效果描述

屏幕上会不断生成多彩的随机图形,包括三角形、圆形和正方形。

图形大小、颜色和位置随机变化,形成丰富多彩的动态叠加效果。

动画流畅且色彩鲜艳,视觉效果非常吸引人。



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏28个特色案例

实验串口返回情况

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏28个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图2

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏28个特色案例

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏29个特色案例

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目实验之二十九:彩色随机圆环动画
  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. #include "SPI.h"
  15. #include "Adafruit_GFX.h"
  16. #include "Adafruit_GC9A01A.h"
  17. // 定义屏幕引脚
  18. #define TFT_CS 4        // 片选引脚
  19. #define TFT_DC 2        // 数据/命令引脚
  20. #define TFT_RST -1      // 重置引脚(未使用时设置为 -1)
  21. // 初始化屏幕对象
  22. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
  23. // 定义颜色数组
  24. uint16_t colors[] = {GC9A01A_RED, GC9A01A_GREEN, GC9A01A_BLUE, GC9A01A_YELLOW, GC9A01A_MAGENTA, GC9A01A_CYAN, GC9A01A_WHITE};
  25. int numColors = sizeof(colors) / sizeof(colors[0]);
  26. void setup() {
  27.     Serial.begin(115200);          // 初始化串口通信
  28.     Serial.println("Dynamic Colorful Circles Animation");
  29.     tft.begin();                   // 初始化屏幕
  30.     tft.setRotation(0);            // 设置屏幕方向
  31.     tft.fillScreen(GC9A01A_BLACK); // 清屏设置为黑色背景
  32. }
  33. void loop() {
  34.     // 随机生成圆环的参数
  35.     int x = random(20, 220);             // 圆心X坐标(适配屏幕大小,避免超出边界)
  36.     int y = random(20, 220);             // 圆心Y坐标
  37.     int outerRadius = random(10, 100);   // 随机外圆半径
  38.     int innerRadius = random(outerRadius / 2, outerRadius - 1); // 随机内圆半径
  39.     uint16_t color = colors[random(0, numColors)]; // 随机颜色
  40.     // 绘制外圆(填充颜色)
  41.     tft.fillCircle(x, y, outerRadius, color);
  42.     // 绘制内圆(清除为背景色,形成圆环效果)
  43.     tft.fillCircle(x, y, innerRadius, GC9A01A_BLACK);
  44.     delay(200); // 延迟一段时间,控制动画节奏
  45. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏29个特色案例

代码说明

1、随机圆环效果:

每次迭代生成随机位置、大小和颜色的圆环。

外圆和内圆结合形成动态圆环效果。

2、丰富的颜色选择:

使用 colors[] 数组提供多种颜色,随机分配给每个圆环。

3、适配屏幕范围:

通过 random() 函数限定圆环中心点和半径,确保图形始终在屏幕范围内。

4、流畅动画:

使用 delay(200) 控制动画节奏,每秒约生成 5 个圆环。

5、效果描述

屏幕上不断生成随机颜色的圆环,每个圆环具有不同的半径和位置。

圆环以动态方式叠加在屏幕上,形成绚丽的视觉效果。

黑色背景进一步突出了五彩斑斓的动画。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏29个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏30个特色案例

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图2

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏30个特色案例

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目实验之三十:炫彩旋转光束特效动画
  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. #include "SPI.h"
  15. #include "Adafruit_GFX.h"
  16. #include "Adafruit_GC9A01A.h"
  17. // 定义屏幕引脚
  18. #define TFT_CS 4        // 片选引脚
  19. #define TFT_DC 2        // 数据/命令引脚
  20. #define TFT_RST -1      // 重置引脚(若未连接请设置为 -1)
  21. // 初始化屏幕对象
  22. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
  23. // 定义颜色数组
  24. uint16_t colors[] = {GC9A01A_RED, GC9A01A_GREEN, GC9A01A_BLUE, GC9A01A_YELLOW, GC9A01A_MAGENTA, GC9A01A_CYAN, GC9A01A_WHITE};
  25. int numColors = sizeof(colors) / sizeof(colors[0]);
  26. // 动画参数
  27. #define SCREEN_CENTER_X 120
  28. #define SCREEN_CENTER_Y 120
  29. #define RADIUS 100                 // 光束的最大长度
  30. #define BEAM_WIDTH 20              // 光束宽度
  31. #define NUM_BEAMS 12               // 光束数量
  32. #define ROTATION_SPEED 10          // 旋转角度步进
  33. #define DELAY_MS 30                // 每帧延迟(毫秒)
  34. void drawBeam(float angle, uint16_t color) {
  35.     // 计算光束的起点和终点
  36.     float radian = angle * 3.14159 / 180;
  37.     int x1 = SCREEN_CENTER_X + RADIUS * cos(radian);
  38.     int y1 = SCREEN_CENTER_Y + RADIUS * sin(radian);
  39.     int x2 = SCREEN_CENTER_X + (RADIUS - BEAM_WIDTH) * cos(radian + 3.14159 / 36);
  40.     int y2 = SCREEN_CENTER_Y + (RADIUS - BEAM_WIDTH) * sin(radian + 3.14159 / 36);
  41.     int x3 = SCREEN_CENTER_X + (RADIUS - BEAM_WIDTH) * cos(radian - 3.14159 / 36);
  42.     int y3 = SCREEN_CENTER_Y + (RADIUS - BEAM_WIDTH) * sin(radian - 3.14159 / 36);
  43.     // 绘制光束(三角形表示)
  44.     tft.fillTriangle(x1, y1, x2, y2, x3, y3, color);
  45. }
  46. void setup() {
  47.     Serial.begin(115200);           // 初始化串口
  48.     Serial.println("Blinding Rotating Beam Animation");
  49.     tft.begin();                    // 初始化屏幕
  50.     tft.setRotation(0);             // 设置屏幕方向
  51.     tft.fillScreen(GC9A01A_BLACK);  // 清屏设置为黑色
  52. }
  53. void loop() {
  54.     static int angle = 0;           // 旋转角度初始化
  55.     // 绘制每一帧的光束特效
  56.     tft.fillScreen(GC9A01A_BLACK);  // 清屏,准备绘制新帧
  57.     for (int i = 0; i < NUM_BEAMS; i++) {
  58.         // 每束光束不同颜色,不同角度
  59.         uint16_t color = colors[(angle / 10 + i) % numColors];
  60.         drawBeam(angle + i * 360 / NUM_BEAMS, color);
  61.     }
  62.     // 更新角度,形成旋转效果
  63.     angle += ROTATION_SPEED;
  64.     if (angle >= 360) {
  65.         angle = 0; // 重置角度
  66.     }
  67.     delay(DELAY_MS);                // 帧间延迟
  68. }
复制代码



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏30个特色案例

代码说明

1、多束彩色旋转光束:

使用 drawBeam() 绘制多个光束,每束光束由三角形模拟,颜色和角度动态变化。

光束颜色从 colors[] 中循环选择,形成多彩效果。

2、旋转动画:

每帧更新光束的角度,模拟光束围绕屏幕中心快速旋转的效果。

3、光束特效:

光束宽度和长度可调,通过 BEAM_WIDTH 和 RADIUS 参数自定义光束的形状和范围。

4、平滑刷新:

通过清屏和动态绘制每帧,确保动画运行流畅无卡顿。

5、效果描述

屏幕中央以五彩斑斓的光束旋转,光束在运动中交替闪烁和变化颜色。

动画流畅自然,光束色彩鲜艳明亮,极具视觉冲击力。

无论是旋转的动态感还是丰富的色彩,都堪称“亮瞎眼”级别。


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏30个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图2

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏30个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏31个特色案例

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目实验之三十一:动态多彩波纹
  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. #include "SPI.h"
  15. #include "Adafruit_GFX.h"
  16. #include "Adafruit_GC9A01A.h"
  17. // 定义屏幕引脚
  18. #define TFT_CS 4        // 片选引脚
  19. #define TFT_DC 2        // 数据/命令引脚
  20. #define TFT_RST -1      // 重置引脚(未使用时设置为 -1)
  21. // 初始化屏幕对象
  22. Adafruit_GC9A01A tft = Adafruit_GC9A01A(TFT_CS, TFT_DC, TFT_RST);
  23. // 定义颜色数组
  24. uint16_t colors[] = {GC9A01A_RED, GC9A01A_ORANGE, GC9A01A_YELLOW, GC9A01A_GREEN, GC9A01A_CYAN, GC9A01A_BLUE, GC9A01A_MAGENTA};
  25. int numColors = sizeof(colors) / sizeof(colors[0]);
  26. void setup() {
  27.     Serial.begin(115200);          // 初始化串口通信
  28.     Serial.println("Dynamic Ripple Animation");
  29.     tft.begin();                   // 初始化屏幕
  30.     tft.setRotation(0);            // 设置屏幕方向
  31.     tft.fillScreen(GC9A01A_BLACK); // 清屏设置为黑色背景
  32. }
  33. void loop() {
  34.     static int radius = 0;          // 当前波纹半径
  35.     static int colorIndex = 0;      // 当前颜色索引
  36.     // 清屏并绘制新的波纹
  37.     tft.fillScreen(GC9A01A_BLACK);  // 清屏
  38.     for (int i = 0; i < 5; i++) {   // 绘制多层波纹
  39.         int currentRadius = radius - i * 20; // 每层波纹间隔
  40.         if (currentRadius > 0) {
  41.             uint16_t color = colors[(colorIndex + i) % numColors]; // 循环颜色选择
  42.             tft.drawCircle(120, 120, currentRadius, color);        // 绘制波纹圆环
  43.         }
  44.     }
  45.     // 更新半径和颜色索引
  46.     radius += 5;                     // 波纹扩展速度
  47.     if (radius > 120) {              // 重置波纹
  48.         radius = 0;
  49.         colorIndex++;
  50.         if (colorIndex >= numColors) {
  51.             colorIndex = 0;          // 颜色循环
  52.         }
  53.     }
  54.     delay(50);                       // 控制动画帧速率
  55. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏31个特色案例

代码说明

1、多彩波纹扩展:

每帧生成多层波纹,以屏幕中心为起点向外扩展。

波纹的颜色从 colors[] 数组中循环选择,形成渐变效果。

2、层次感增强:

波纹之间具有固定的半径间隔,通过 currentRadius = radius - i * 20 实现。

波纹扩展超出屏幕范围后重置为新的波纹动画。

3、动态刷新:

使用 fillScreen() 清除上一帧内容,确保动画流畅。

控制帧速率的延迟通过 delay(50),实现平滑的扩展效果。

4、颜色循环:

波纹颜色通过颜色索引动态更新,确保视觉效果不单一。

5、效果描述

屏幕中心生成动态扩展的多彩波纹,波纹从小到大扩展至屏幕边缘。

波纹具有层次感,每层波纹的颜色渐变变化,增强视觉冲击力。

动画流畅自然,色彩鲜艳,适合演示动态特效。


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏31个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图2

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 天前

【花雕学编程】Arduino动手做(249)--GC9A01屏31个特色案例

实验场景图  动态图

【花雕学编程】Arduino动手做(249)--GC9A01屏39个特色案例图1
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail