- 有问题请在github页面提issue,这样可以让后来的人得到有效的参考
- 如果不是在issue里提出问题但是问题最终被以某种方式解决了,我还是建议去补一下issue
这是一个适用于mbed os 6的库,用于驱动MAX7219控制的8*8的点阵屏,使用的是SPI协议
这个库同时提供了硬件SPI和软件SPI两种选择,在我个人的使用中感觉软件SPI的适用范围更加广泛,所以放上来的库文件默认使用了软件SPI实现,如果要改为硬件SPI请修改头文件里对应的宏,具体方法会在后文指出
作者自己的编程环境是vscode上的platform IO,并使用其自带的本地编译器进行编译,没有在mbed studio及keil studio cloud上尝试,如果有问题还请提issue
- 导入到你的项目目录
- 记得include
- 没了
#include "Matrix.h"
// 假定你使用D11作为MOSI,D13作为CLK,A3作为CS
matrix Mtrx(D11,D13,A3);
int main(void) {
// 作者人工取模的笑脸
// HelloWorld方法里自动进行了一次SendBuffer
Mtrx.HelloWorld();
}
#include "Matrix.h"
matrix Mtrx(D11,D13,A3);
// 这个实际上是array<uint8_t,8>的别名
// 可以理解为uint8_t Frm[8];
matrix::frame Frm = {
0xFF, 0x00, 0xFF, 0x00,
0xFF, 0x00, 0xFF, 0x00,
};
int main(void) {
// Mtrx.buffer其实就是一个长度为8的uint8_t数组,1代表对应位置亮,0代表对应位置灭
// 数组序号对应行号,MSB到LSB分别是从左到右的灯珠
Mtrx.buffer = Frm;
Mtrx.SendBuffer();
}
这个库默认使用软件模拟SPI,也可以通过修改头文件使用硬件SPI
具体修改方法是:把Matirx.h文件的第23行的#define _Matrix_8_Using_Simulated_SPI_
语句删除或注释掉
需要注意的是,软件SPI没有对引脚的要求,只要支持GPIO即可;硬件SPI需要对应上对应的SPI引脚组合
类的构造函数
你一般不会直接调用这个函数,如果不知道这是什么,可以当他不存在
Matrix_IO_MOSI
MOSI针脚Matrix_IO_CLK
CLK针脚Matrix_IO_CS
CS针脚
类中的缓冲区,用于暂时存储将要让点阵屏显示的图案
数据类型是matrix::frame
,也就是array<uint8_t,8>
这个库没有提供修改buffer内容的函数,而是选择了让用户可以直接访问buffer,是因为我认为用户才知道他们想要什么
在修改后需要SendBuffer
才能更改显示内容
返回值:对自身的引用(看不懂可以当不存在)
给个示例:一个没那么基本的示例程序里main里的内容其实可以改写成:
int main(void) {
Mtrx << Frm;
}
也就是,用data覆盖现有的buffer的值,然后自动SendBuffer
其实去.cpp里看一眼实现就清楚了
返回值:对自身的引用(看不懂可以当不存在)
将现在的buffer推送到点阵屏上
清除掉buffer的值,但是不会自动SendBuffer
那不就是buffer.fill(0)
吗
返回值:对自身的引用(看不懂可以当不存在)
将所有的设置调整到推荐配置,或者重置所有设置
一般不会调用这个函数,因为在构造函数里已经帮你调用过一次了
通过设置占空比来改变矩阵灯珠的亮度
默认值是1.0
数据的允许范围是0.0到1.0,分别对应你所期望的亮度百分比
返回值:对自身的引用(看不懂可以当不存在)
开关MAX7219的DisplayTest模式
在InitSetting里默认关闭,如果需要使用请配合数据手册
返回值:是否在DisplayTest模式,如果是则返回true
返回值:对自身的引用(看不懂可以当不存在)
开关MAX7219的Shutdown模式
在InitSetting里默认关闭,如果需要使用请配合数据手册
返回值:是否在Shutdown模式,如果是则返回true
一个用于测试是否正常运行的样例,封装成了一个类方法
理论上会显示一个笑脸
会自动Sendbuffer,并且笑脸图案会覆盖现有的buffer的值
关注DT5EDU公众号谢谢喵
By CATEDS
关注真弓快车!