20浏览
查看: 20|回复: 6

[项目] 【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格

[复制链接]
【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图2

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图1

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图1

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图1

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格

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

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目之一百二十五:ESP32+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. #include <TFT_eSPI.h>
  15. TFT_eSPI tft =
  16.   TFT_eSPI
  17.   ();
  18. #define SCREEN_WIDTH 240
  19. #define SCREEN_HEIGHT 240
  20. #define SPACING 30 // 线条间距
  21. #define REFRESH_RATE 200 // 刷新率(毫秒),越小动画越流畅
  22. int frameCount = 0
  23.                  ;
  24. void setup()
  25. {
  26.   tft.
  27.   init
  28.   ();
  29.   tft.
  30.   setRotation(1);  // 设定屏幕方向(横屏)
  31.   tft.
  32.   fillScreen(TFT_BLACK); // 清空屏幕
  33.   randomSeed(analogRead(0));  // 初始化随机数种子
  34. }
  35. void loop()
  36. {
  37.   drawAlternatingGrid
  38.   ();
  39.   frameCount++;
  40.   delay(REFRESH_RATE); // 等待指定时间后刷新
  41. }
  42. /**
  43.    生成交替颜色的动态网格
  44. */
  45. void drawAlternatingGrid()
  46. {
  47.   tft.
  48.   fillScreen(TFT_BLACK); // 清除屏幕
  49.   uint16_t
  50.   verticalColors[] = {TFT_RED, TFT_BLUE, TFT_CYAN, TFT_MAGENTA};
  51.   uint16_t
  52.   horizontalColors[] = {TFT_GREEN, TFT_YELLOW, TFT_ORANGE, TFT_PURPLE};
  53.   int numVerticalColors = sizeof(verticalColors) / sizeof(verticalColors[0
  54.                                                                         ]);
  55.   int numHorizontalColors = sizeof(horizontalColors) / sizeof(horizontalColors[0
  56.                                                                               ]);
  57.   // 根据帧计数器改变颜色模式
  58.   int verticalOffset = (frameCount / 10) % numVerticalColors; // 每10帧变化一次
  59.   int horizontalOffset = (frameCount / 15) % numHorizontalColors; // 每15帧变化一次
  60.   // 绘制纵向线条
  61.   for (int x = 0
  62.                ; x < SCREEN_WIDTH; x += SPACING) {
  63.     int
  64.     colorIndex = (x / SPACING + verticalOffset) % numVerticalColors;
  65.     uint16_t
  66.     color = verticalColors[colorIndex];
  67.     tft.
  68.     drawLine(x, 0
  69.              , x, SCREEN_HEIGHT, color);
  70.   }
  71.   // 绘制横向线条
  72.   for (int y = 0
  73.                ; y < SCREEN_HEIGHT; y += SPACING) {
  74.     int
  75.     colorIndex = (y / SPACING + horizontalOffset) % numHorizontalColors;
  76.     uint16_t
  77.     color = horizontalColors[colorIndex];
  78.     tft.
  79.     drawLine(0
  80.              , y, SCREEN_WIDTH, y, color);
  81.   }
  82. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格

代码说明​​

​​1、颜色数组与索引计算​​
verticalColors 和 horizontalColors 数组分别存储纵向和横向线条的颜色。
numVerticalColors 和 numHorizontalColors 计算颜色数组的长度。
​​2、帧计数器与颜色偏移​​
frameCount 记录当前的帧数。
verticalOffset 和 horizontalOffset 根据帧数变化,每10帧和15帧分别变化一次,使颜色模式动态调整。
(x / SPACING + verticalOffset) % numVerticalColors 确保纵向线条的颜色随帧数变化而交替。
(y / SPACING + horizontalOffset) % numHorizontalColors 确保横向线条的颜色随帧数变化而交替。
​​3、绘制线条​​
先绘制所有纵向线条,再绘制所有横向线条,确保画面不会出现闪烁或撕裂。
​​4、刷新率调整​​
REFRESH_RATE 设置为 50ms,可以根据需要调整为更小或更大的值,以控制动画的流畅度和速度。

​​效果预览​​
运行上述代码后,将看到:
​​纵向线条​​:以红、蓝、青、品红四种颜色交替显示,颜色随时间动态变化。
​​横向线条​​:以绿、黄、橙、紫四种颜色交替显示,颜色同样随时间动态变化。
​​交替效果​​:由于颜色模式随帧数动态调整,纵向和横向的线条颜色交替更加明显和流畅。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图2

【花雕学编程】Arduino动手做(249)--GC9A01颜色交替的网格图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 4 小时前

【花雕学编程】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