c++趣味编程&玩转物联网:树莓派Pico控制 LED点阵屏

8×8 LED点阵屏是一种常见的数字显示设备,被广泛应用于电子时钟、公交车显示屏和游戏设备中。在本项目中,我们使用树莓派Pico开发板,通过I2C协议驱动HT16K33芯片,实现点阵屏显示心形图案、倒计时、动态矩形和动态圆等内容。本文详细介绍硬件连接、库的使用以及C++代码实现,帮助开发者掌握点阵屏控制技术。
一、项目目标与硬件清单
1. 项目目标
通过树莓派Pico控制8×8点阵屏实现:
2. 所需硬件

二、8×8点阵屏与HT16K33简介
1. HT16K33芯片特点
2. 通信地址
HT16K33模块的I2C地址由拨码开关决定,本文使用的模块地址固定为 0x70。
三、电路连接
1. 接线说明
2. 电路图和接线图
根据模块与Pico的引脚定义,完成硬件连接,确保模块与开发板的电源、电平兼容。


四、代码实现与解析
1. 必要的库安装
本项目使用了 Matrix 库来控制点阵屏,安装步骤如下:
- 打开Arduino IDE。
- 点击“项目” → “加载库” → “添加 .ZIP 库”。
- 选择
Matrix.ZIP文件并导入。
2. 完整代码实现
以下是实现动态显示功能的完整代码:
#include "Matrix.h"
// 定义I2C引脚
Matrix matrix(20, 21);
void setup() {
matrix.begin(0x70); // 初始化点阵屏
matrix.setBrightness(8); // 设置亮度(0-15)
}
const int LED_ON = 1;
// 心形图案定义
uint8_t heart[8] = {
0b01100110, // ## ##
0b10011001, // # ## #
0b10000001, // # #
0b10000001, // # #
0b01000010, // # #
0b00100100, // # #
0b00011000, // ##
0b00000000 //
};
void loop() {
// 倒计时数字
for (int i = 9; i >= 0; i--) {
matrix.clear();
matrix.setCursor(2, 0);
matrix.print(i);
matrix.writeDisplay();
delay(500);
}
// 动态矩形
for (int size = 6; size > 0; size -= 2) {
matrix.clear();
matrix.drawRect((8 - size) / 2, (8 - size) / 2, size, size, LED_ON);
matrix.writeDisplay();
delay(500);
}
// 动态圆
for (int radius = 1; radius <= 3; radius++) {
matrix.clear();
matrix.drawCircle(3, 3, radius, LED_ON);
matrix.writeDisplay();
delay(500);
}
// 显示心形图案
matrix.clear();
for (uint8_t y = 0; y < 8; y++) {
for (uint8_t x = 0; x < 8; x++) {
if (heart[y] & (1 << (7 - x))) {
matrix.drawPixel(x, y, LED_ON);
}
}
}
matrix.writeDisplay();
delay(1000);
// 显示文本
matrix.clear();
matrix.drawStr("I Love Coding!!");
delay(1000);
}
五、代码解析与关键知识点
1. 显示心形图案
通过按行定义图案的二进制数据实现:
uint8_t heart[8] = { ... };
2. 倒计时
通过循环从 9 倒数到 0:
for (int i = 9; i >= 0; i--) { matrix.print(i); }
3. 动态图案
4. 文本显示
直接调用 drawStr() 显示字符串内容。
六、项目现象
代码上传并运行后,8×8点阵屏将按以下顺序动态显示:
- 倒计时数字。
- 动态变化的矩形。
- 动态增长的圆形。
- 心形图案。
- 字符串 “I Love Coding!!”。
七、技术扩展与优化
- 实时交互:通过按钮切换显示内容。
- 动态亮度调节:实现根据环境光线调节亮度。
- 复杂图案设计:扩展显示更复杂的动态图案。
- 增加语音交互:结合语音识别模块,用语音指令控制图案切换。
八、学习意义
本项目帮助开发者:
结语
通过树莓派Pico和8×8 LED点阵屏的结合,本项目展示了如何用编程语言控制硬件实现复杂图案显示。希望本文能帮助您进一步掌握C++编程与硬件结合的开发技能。
如果您喜欢这篇文章,请点赞、收藏并分享,让更多人了解嵌入式开发的乐趣!
动手实践学习套件
LED点阵屏演示视频
欢迎加V交流

作者:邓校长的编程课堂