从“不亮”到“能显示”——点阵屏模块的拆解与排查
操作手册:照着做,先让它亮
第一步:确认你的模块是好的
如果你很确定模块没问题,可以直接跳到第二步。如果不确定,或者你跟我一样倒霉买到过坏的,先做一件事:
拿万用表测一下你打算给模块供电的电压(比如ESP32的5V和GND之间)。如果电压正常,但模块接上去不亮,或者万用表测模块的VCC和GND只有零点几伏——那可能是模块内部短路了。换一个模块试。我上一个模块就是这么坏的,不是演的,是真的倒霉。之前舵机坏过,ESP32坏过,这回轮到点阵屏了。
第二步:安装库
如果你用的是PlatformIO,库会自动下载(前提是网络连得上GitHub)。如果网络不行,或者自动下载失败,手动去GitHub搜MD_MAX72XX,下载zip,解压到项目的lib文件夹里。具体步骤不细写了,查一下就有。相信你能搞定。
第三步:接线
把ESP32插在面包板中间。杜邦线接法:
· ESP32的5V → 面包板红轨
· ESP32的GND → 面包板蓝轨
点阵屏模块的VCC插红轨,GND插蓝轨。然后信号线:
· DIN → GPIO11
· CS → GPIO10
· CLK → GPIO12
接完别急着下一步,先检查一遍。VCC和GND有没有插反?红轨和蓝轨有没有搞混?确认无误再通电。
第四步:烧录代码(附一个对照样本)
下面这段代码会在点阵屏上显示一个十字形。烧进去,看屏幕显示什么。不管结果是十字、缺几笔、还是乱七八糟的形状——只要不是全不亮,就说明烧录是成功的。剩下的事,你自己试。
```cpp
#include <Arduino.h>
#include <MD_MAX72xx.h>
#define CS_PIN 10
#define CLK_PIN 12
#define DIN_PIN 11
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 1
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// 十字形图案,给你对照用的
uint8_t cross[8] = {
0b00010000,
0b00010000,
0b00010000,
0b11111110,
0b00010000,
0b00010000,
0b00010000,
0b00000000
};
void setup() {
mx.begin();
mx.control(MD_MAX72XX::INTENSITY, 8);
mx.clear();
for (int i = 0; i < 8; i++) {
mx.setRow(0, i, cross[i]);
}
}
void loop() {}
```
第五步:如果屏不亮,或者亮度太低
检查电压。ESP32的3.3V虽然能点亮模块,但电流不够的时候会暗、会闪、会不稳定。我一开始就踩了这个坑——3.3V下模块能亮,但惨不忍睹。换成5V供电(从ESP32的5V引脚取电,或者用外接电池模块),亮度正常,显示稳定。
所以,记住:点阵屏模块最好用5V供电,3.3V可能不够力。
正文:这个故事是怎么发生的
买东西,买到坏的了
接上文。舵机那篇文章发完之后,我本来想趁热打铁,把点阵屏也接上,做点简单的表情显示。结果模块到了,接上去——不亮。用万用表测了一下,模块的VCC和GND之间电压只有0.7V。不是ESP32没电,是模块内部把电压拉死了。我买到了坏的。不是演的,是真倒霉。之前舵机坏过,ESP32坏过,这回轮到屏幕了。
换了模块,能亮了,但不稳定
第二个模块到了。接上去,这次亮了。但亮度很低,而且不稳定——屏幕忽明忽暗,有时候一整行不亮。查了一下才知道,MAX7219的推荐供电电压是5V。ESP32的3.3V电压虽然够,但电流跟不上,供电不够力,屏幕就萎了。换成5V供电,一切正常。
代码里的十字形,是我给你留的“参照物”
我把十字形写在代码里,不是为了让你照抄。是因为这个东西结构简单——中间一横一竖。你烧进去之后,对照着看。如果显示出来不是十字,或者缺几笔,或者多几笔——那不是bug,是烧录正常。你拿它当起点,自己改数组里的数字,自己试。0亮还是1亮?我不知道。不同库、不同模块可能不一样。你试,试出来就知道。
关于环境配置
如果你重装了系统,或者换了电脑,VS Code的PlatformIO插件可能会抽风。上传按钮消失?快捷键没反应?去终端直接敲命令:
```
cd "你的项目文件夹路径"
& "$env:USERPROFILE\.platformio\penv\Scripts\platformio.exe" run --target upload
```
顺便说一下,代码里可能会有红色波浪线(比如#include下面画红线)。不用管,那是C++插件不认识PlatformIO的库路径,不影响编译。
最近在干什么
好久没更新了,因为之前在折腾外壳。SolidWorks画了几版,打印出来,孔位对不上,重新改,再打。还有一个问题——我那个5V电池模块带舵机加屏幕,同时动的时候电流不太够,屏幕会闪。所以后面可能还得加个电容,或者换更大的电池。进度不快,但一直在动。
最后
点阵屏亮起来的那一刻,跟舵机转起来的时候一样——之前所有烦躁,都值了。如果你也遇到模块不亮,先用万用表测VCC和GND。电压不对,换模块;电压对但亮度低,换5V供电;电压对、供电也对,但还是不亮——检查DIN、CS、CLK。还有,买的模块有坏的,舵机有坏的,ESP32也有坏的。如果你运气也不好,别跟自己过不去,换一个就行。该更新了。
