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

[项目] 【花雕学编程】Arduino动手做(252)---Matrix显示文本字符

[复制链接]
【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图2

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图1

驴友花雕  中级技神
 楼主|

发表于 2025-4-29 15:44:44

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图1

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图3

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-29 15:46:25

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百五十二:ESP32-S3 RGB-LED矩阵开发板 Matrix陀螺仪QMI8658C模块
  项目之六:ESP32S3矩阵Matrix开发板之循环显示文本字符

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百五十二:ESP32-S3 RGB-LED矩阵开发板 Matrix陀螺仪QMI8658C模块
  4.   项目之六:ESP32S3矩阵Matrix开发板之循环显示文本字符
  5. */
  6. #include <Adafruit_NeoPixel.h>
  7. #define LED_PIN 14
  8. #define LED_COUNT 64  // 8x8矩阵,共64个LED
  9. #define BRIGHTNESS 50  // 设置亮度
  10. Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
  11. // 定义 A-B-C-E-F-G 的 LED 点阵(正常显示)
  12. const uint8_t alphabet[][8] = {
  13.   {0x3E, 0x09, 0x09, 0x09, 0x3E, 0x00, 0x00, 0x00}, // A
  14.   {0x3F, 0x25, 0x25, 0x25, 0x1A, 0x00, 0x00, 0x00}, // B
  15.   {0x1E, 0x21, 0x21, 0x21, 0x12, 0x00, 0x00, 0x00}, // C
  16.   {0x3F, 0x21, 0x21, 0x21, 0x1E, 0x00, 0x00, 0x00}, // E
  17.   {0x3F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00, 0x00}, // F
  18.   {0x1E, 0x21, 0x29, 0x29, 0x3A, 0x00, 0x00, 0x00}  // G
  19. };
  20. char textArray[] = {'A', 'B', 'C', 'E', 'F', 'G'};
  21. int textIndex = 0;
  22. void setup() {
  23.   strip.begin();
  24.   strip.setBrightness(BRIGHTNESS);
  25.   strip.show();
  26. }
  27. void loop() {
  28.   strip.clear();
  29.   displayCharacter(textArray[textIndex]);  // 显示当前字符
  30.   textIndex = (textIndex + 1) % 6;  // 循环切换字符
  31.   delay(1000);  // 延时
  32. }
  33. void displayCharacter(char character) {
  34.   int index = getCharacterIndex(character);
  35.   if (index == -1) return;
  36.   for (int row = 0; row < 8; row++) {
  37.     uint8_t line = alphabet[index][row];  // 获取当前行数据
  38.     line = reverseBits(line);  // **镜像翻转行数据**
  39.     for (int col = 0; col < 8; col++) {
  40.       if (line & (1 << col)) { // 判断该像素是否应该亮起
  41.         int ledIndex = row * 8 + col;
  42.         strip.setPixelColor(ledIndex, strip.Color(255, 255, 255)); // 显示白色
  43.       }
  44.     }
  45.   }
  46.   strip.show();
  47. }
  48. // **新增:左右翻转位数据**
  49. uint8_t reverseBits(uint8_t b) {
  50.   uint8_t reversed = 0;
  51.   for (int i = 0; i < 8; i++) {
  52.     reversed <<= 1;
  53.     reversed |= (b & 1);
  54.     b >>= 1;
  55.   }
  56.   return reversed;
  57. }
  58. int getCharacterIndex(char character) {
  59.   for (int i = 0; i < 6; i++) {
  60.     if (textArray[i] == character) return i;
  61.   }
  62.   return -1;
  63. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-29 15:48:42

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符

这段代码的作用是让 WS2812 LED矩阵 按 A-B-C-D-F-G 的顺序循环显示字符。它的主要逻辑如下:


1、初始化LED矩阵:

设置 LED 的引脚和数量 (LED_PIN, LED_COUNT)。

设置 LED 亮度 (BRIGHTNESS)。

strip.begin() 开启 LED 控制。


2、定义要显示的字符:

使用 textArray 存储需要循环展示的字符:{'A', 'B', 'C', 'D', 'F', 'G'}。


3、循环显示字符:

每次进入 loop():

清除 LED (strip.clear())。

调用 displayCharacter() 显示当前字符。

更新索引 (textIndex) 以显示下一个字符,确保循环。


4、显示字符逻辑:

displayCharacter(char character) 让 LED 矩阵展示某个字符。

shouldLightUp(char character, int ledIndex) 计算哪些 LED 需要点亮,展示不同字符。


5、优化点:

shouldLightUp() 只是个简单示例,实际应用中需要定义具体 LED 点亮位置,使字符更清晰。

你可以修改 delay(1000) 调整字符切换速度。

可以增加颜色变换效果,让显示更丰富。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-29 15:55:45

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符

实验场景图  动态图

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图2

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-4-29 15:58:26

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图1

【花雕学编程】Arduino动手做(252)---Matrix显示文本字符图2
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail