Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
所需材料
| 组件 | 数量 | |
|---|---|---|
| Arduino Uno | 1 | |
| MAX7219驱动8×8 LED矩阵模块 | N (示例用5块) | |
| 跳线(母对母+公对母) | 若干 | |
| 2mm亚克力板、M2×10螺丝、M2螺母 | 各若干 | 可选,用于固定矩阵阵列 |
硬件连接
- 矩阵模块级联:DIN→DOUT串联,VCC/ GND/ CS/ CLK 并联
- 首块矩阵接Arduino:
DIN → D13、CLK → D12、CS → D11、VCC → 5V、GND → GND - 供电:5块矩阵总电流<500mA,可直接取Arduino USB 5V供电;扩展更多建议外接5V电源
组装建议
- 用亚克力板+螺丝将矩阵固定成面板(示例:两眼一嘴共5块组成表情脸)
- 注意跳线公母方向:矩阵间母对母,首块接Arduino用公对母
软件开发
库安装
Arduino IDE库管理器搜索安装 LedControl (by wayoda),或从 GitHub 手动安装。
代码结构(四部分)
- 图案定义:每只眼用8字节数组(8行);嘴巴用24字节数组(3块×8行)。因
setRow比setColumn快8倍,图案需逆时针旋转90°定义。 - Setup:初始化
LedControl对象,设置级联数量、亮度setIntensity(1)(0-15级,降低功耗适配USB供电)。 - Loop:读取串口指令,调用显示函数更新对应矩阵。
- 辅助函数:
setEyes()、setMouth()逐行写入数据。
核心代码片段
#include
LedControl lc=LedControl(13,12,11,5); // DIN,CLK,CS,设备数
byte eyeNormal[8] = {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};
byte eyeBlink[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
byte mouthHappy[24]= {...}; // 3矩阵×8行
void setup() {
for(int i=0;i<5;i++) { lc.shutdown(i,false); lc.setIntensity(i,1); lc.clearDisplay(i); }
Serial.begin(9600);
}
void loop() {
if(Serial.available()) {
char eyeCmd=Serial.read(); char mouthCmd=Serial.read();
setEyes(eyeCmd); setMouth(mouthCmd);
}
}
void setEyes(char c) {
byte *pat;
if(c==':') pat=eyeNormal;
else if(c==';') pat=eyeBlink;
else if(c=='8') pat=eyeSpooky;
else return;
for(int r=0;r<8;r++) { lc.setRow(0,r,pat[r]); lc.setRow(1,r,pat[r]); }
}
串口控制指令表
| 眼睛指令 | 效果 | 嘴巴指令 | 效果 |
|---|---|---|---|
| : | 正常睁眼 | ) | 开心 |
| ; | 眨眼 | | | 中性 |
| 8 | 惊吓眼 | ( | 难过 |
| D/d | 大笑 | ||
| O/o | 惊讶 | ||
| P/p | 吐舌头 |
使用方法:打开串口监视器(9600),输入两字符如:)回车,表情立即更新。
扩展方向
- 增加更多表情/动画帧,实现滚动文字、游戏画面
- 接入蓝牙/ESP8266实现手机APP/网页控制
- 结合传感器(声控、动作捕捉)做互动装置
- 参考Robô da Alegria快乐机器人项目:GitHub
制造工艺
- Satellite CCRMA 套件:构建传感器驱动的音频效果器
- Arduino Nano飞行模拟2020控制面板——LCD与CDI显示
- Arduino 飞行模拟器 2020 实体开关面板
- 自制 Arduino 伊斯兰祷告时间实时时钟
- 用 Arduino Nano 与 MAX7219 制作 24×16 LED Pong 游戏机
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Arduino UNO 驱动 1.17 英寸 TFT 屏显示图片 (SD 卡读取)
- 从零构建智能 Arduino 四足机器人:完整指南
- Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
- Bolt IoT + Arduino UNO 实现 6 路 LED 无级调光
- Arduino 8×8 LED 矩阵翻页时钟 - DIY 实时时钟项目
- Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试