Arduino Nano 直驱 8×8 LED 点阵:无驱动芯片、无库文件
组件与材料
| Arduino Nano R3 | ×1 |
| 1088AS 共阴 8×8 LED 点阵 | ×1 |
| 330 Ω 电阻 | ×1 |
项目简介
教程演示如何不使用 MAX7219 等驱动芯片、不依赖任何库,直接用 Arduino Nano 的 16 个 GPIO 口通过行列扫描驱动 8×8 点阵。后续将对比 MAX7219 方案。
引脚映射
| 行 (阴极) | Arduino 引脚 | 列 (阳极) | Arduino 引脚 |
|---|---|---|---|
| R1-R8 | D2-D9 | C1-C4 | D10-D13 |
| C5-C8 | A0-A3 |
共阴极:行拉低、列拉高点亮对应 LED。
三个演示程序
1. 逐点扫描测试
// 依次点亮 64 个 LED
#define R1 2 ... #define R8 9
#define C1 10 ... #define C8 A3
void SelectRow(int r) { /* 拉低对应行,其余拉高 */ }
void SelectColumn(int c) { /* 拉高对应列,其余拉低 */ }
void loop() {
for (int i=1;i<=8;i++)
for (int j=1;j<=8;j++) {
SelectRow(i); SelectColumn(j); delay(100);
}
}
2. 显示静态图案(猫脸)
int Cat[8][8] = {
{1,0,0,0,1,0,0,0},
{1,1,1,1,1,0,0,0},
{1,0,1,0,1,0,0,0},
{0,1,1,1,0,0,0,1},
{0,0,1,0,0,0,0,1},
{0,1,1,1,1,0,0,1},
{0,1,1,1,1,1,0,1},
{1,0,1,1,1,1,1,0}
};
void loop() {
for (int row=0; row<8; row++) {
SelectRow(row+1);
for (int col=0; col<8; col++)
Set_LED_in_Active_Row(col+1, Cat[row][col]);
delay(2);
}
}
3. 文字滚动显示
// 8 行 × 54 列字模数组 Marios_ideas[8][54]
int position = 0;
void loop() {
for (int x=0; x<5; x++) { // 每帧刷新 5 次提高亮度
for (int row=0; row<8; row++) {
SelectRow(row+1);
for (int col=0; col<8; col++) {
int idx = (col + position) % 54;
Set_LED_in_Active_Row(col+1, Marios_ideas[row][idx]);
}
delay(2);
}
}
position = (position + 1) % 54;
}
原理图
进阶建议
- 若需更高亮度/更多级联,建议改用 MAX7219
- 可扩展为 16×16、32×32 等更大显示屏
制造工艺
- 发光二极管:从诞生到百年寿命
- Arduino复刻“棺材舞”旋律:蜂鸣器+三色LED灯光秀完整教程
- 用 Arduino Nano 与 MAX7219 制作 24×16 LED Pong 游戏机
- 互动 LED 矩阵门显:PIR 触发节日问候 + 待机特效
- 声控 8 路 LED 灯光秀:Arduino 入门项目
- 从零构建智能 Arduino 四足机器人:完整指南
- DIY 热熔胶棒 LED 矩阵灯 — 打造多彩显示屏
- Bolt IoT + Arduino UNO 实现 6 路 LED 无级调光
- Arduino Nano 直驱 8×8 LED 点阵:无驱动芯片、无库文件
- Arduino 8×8 LED 矩阵翻页时钟 - DIY 实时时钟项目
- Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
- Maxim MAX25610A/B LED 驱动器:紧凑、高效、EMI 优化,适用于汽车与工业照明