MAX7219 驱动 8×8 LED 点阵:滚动文本与蓝牙安卓控制
MAX7219 驱动原理
MAX7219 仅用 3 根线(DIN, CLK, CS)即可驱动 64 个 LED,支持级联扩展。内部采用**动态扫描**:8 列轮流导通,每列对应行数据同步刷新,利用视觉暂留效应实现全亮假象。常见模块板载电流设定电阻,根据 LED 压降选值(如 20 mA 红光选 2 kΩ)。
硬件连接
VCC/GND 接 5V/GND;DIN, CLK, CS 接任意数字引脚。级联时:前一块 DOUT 接后一块 DIN,CLK/CS 并联。
示例 1:基础显示与字符定义
使用 MaxMatrix 库。字符以字节数组定义(每列 1 字节,共 8 列),如:
char A[] = {4, 8, B01111110, B00010001, B00010001, B01111110};
核心函数:setDot(x,y) 点亮单点,writeSprite(x,y,char[]) 绘制字符,shiftLeft() 左移滚动。
示例 2:长文本滚动显示
将完整 ASCII 字库(95 字符)存入 Flash(PROGMEM),节省 SRAM。滚动逻辑:逐字符提取点阵,写入第 32 列(两块矩阵拼接后的右侧),循环左移直到字符移出。
void printCharWithShift(char c, int speed) {
if (c < 32) return;
c -= 32;
memcpy_P(buffer, CH + 7 * c, 7); // 从 Flash 读取 7 字节列数据
m.writeSprite(32, 0, buffer);
m.setColumn(32 + buffer[0], 0);
for (int i = 0; i < buffer[0] + 1; i++) {
delay(speed);
m.shiftLeft(false, false);
}
}
示例 3:蓝牙安卓 App 远程控制
接入 HC-05 蓝牙模块(SoftwareSerial,38400 波特率)。App 发送协议:首字节指示类型:
1+ 文本内容 → 更新滚动文本2+ 数值 → 设置滚动速度3+ 数值 → 设置亮度(0~15)
Arduino 端解析指示字节,调用相应功能。App 使用 MIT App Inventor 开发,提供 .aia 源文件与 APK 下载。
关键代码片段
void loop() {
printStringWithShift(text, scrollSpeed);
if (Bluetooth.available()) {
char cmd = Bluetooth.read();
if (cmd == '1') { // 新文本
memset(text, 0, sizeof(text));
m.clear();
int i = 0;
while (Bluetooth.available()) text[i++] = Bluetooth.read();
} else if (cmd == '2') { // 速度
scrollSpeed = 150 - Bluetooth.readString().toInt();
} else if (cmd == '3') { // 亮度
brightness = Bluetooth.readString().toInt();
m.setIntensity(brightness);
}
}
}
制造工艺
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- 用 Arduino Nano 与 MAX7219 制作 24×16 LED Pong 游戏机
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Windows 10 Cortana 蓝牙控制 Arduino LED:UWP 应用开发全流程
- Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
- 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南
- 通过专用 Android App 蓝牙控制 Arduino 机械臂
- 蓝牙控制 8×8 LED 点阵滚动显示:Arduino Nano + MAX7219
- 用 Arduino Mega 与 MAX72XX LED 矩阵复刻经典《小行星》游戏
- 蓝牙控制多路舵机:Arduino + Android App 实现
- Arduino 8×8 LED 矩阵贪吃蛇游戏机
- Arduino 网页控制灯泡:PHPoC Shield 实现 WebSocket 实时控制