目录
简介
在本教程中,您将学习如何使用带有IC MAX7219的8×8点阵LED模块。最后您将能够使用arduino的4个数字引脚轻松图像显示,固定或滚动在一个或多个点阵上显示任何形状或文本。
步骤一 材料准备
硬件准备:
arduino uno
ElectroPeak MAX7219点阵显示模块
ElectroPeak 跳线
软件准备:
arduino IDE
步骤二 原理说明
什么是点阵?
8×8矩阵LED 是一组LED,您可以在其上显示特定的数字,字母和形状。点阵由行数和列数表示。最受欢迎的点阵组成是8×8型,可提供8行8列64个LED。
要简单地控制点阵8×8,您应该将每行和每列连接到数字引脚,这意味着您需要16个数字引脚!所以这不是一个优秀的方法。
为了控制点阵,有基于MAX72xx ICS的模块需要连接到4个数字引脚而不是16个。您还可以将多个点阵(最多8个)相互连接,无需任何额外的引脚并级联它们。
步骤三 电路搭建
使用一块led矩阵电路搭建
使用多个led矩阵电路搭建
步骤四 编写程序
Dot matrix和Arduino有各种各样的库。该Ledcontrol和MaxMatrix是两种最常见的库,都具有相同的结构。
测试代码如下:
/*
8x8 Dot Matrix w/ MAX7219
modified on 7 March 2019
by Saeed Hosseini @ Electropeak
https://electropeak.com/learn/
*/
#include <MaxMatrix.h>
int DIN = 7;
int CLK = 6;
int CS = 5;
int maxInUse = 1;
MaxMatrix m(DIN, CS, CLK, maxInUse);
byte poker[] = {8, 8,
0xff,
0x81,
0xa5,
0xa1,
0xa1,
0xa5,
0x81,
0xff
};
byte smile[] = {8, 8,
0xff,
0x81,
0xb5,
0xa1,
0xa1,
0xb5,
0x81,
0xff
};
byte sad[] = {8, 8,
0xff,
0x81,
0xb5,
0x91,
0x91,
0xb5,
0x81,
0xff
};
byte kiss[] = {8, 8,
0xff,
0x81,
0xb5,
0xb1,
0xb1,
0xb5,
0x81,
0xff
};
void setup() {
m.init();
m.setIntensity(8);
}
void loop() {
m.writeSprite(0, 0, smile);
delay(1000);
m.clear();
m.writeSprite(0, 0, poker);
delay(1000);
m.clear();
m.writeSprite(0, 0, sad);
delay(1000);
m.clear();
m.writeSprite(0, 0, kiss);
delay(1000);
for (int i = 0; i < 8; i++) {
m.shiftLeft(false, false);
delay(300);
}
m.clear();
}
在点阵上显示特定形状
要在点阵上显示特定形状,只需将LED灯图案转换为位串即可。为此,您可以借助辅助软件设计你的形状,并将生成的代码复制到Arduino,然后将其上传到你的主板上。
#include <MaxMatrix.h>
int DIN = 7;
int CLK = 6;
int CS = 5;
int maxInUse = 1;
MaxMatrix m(DIN, CS, CLK, maxInUse);
byte poker[] = {8, 8,
0xff,
0x81,
0xa5,
0xa1,
0xa1,
0xa5,
0x81,
0xff
};
byte smile[] = {8, 8,
0xff,
0x81,
0xb5,
0xa1,
0xa1,
0xb5,
0x81,
0xff
};
byte sad[] = {8, 8,
0xff,
0x81,
0xb5,
0x91,
0x91,
0xb5,
0x81,
0xff
};
byte kiss[] = {8, 8,
0xff,
0x81,
0xb5,
0xb1,
0xb1,
0xb5,
0x81,
0xff
};
void setup() {
m.init();
m.setIntensity(8);
}
void loop() {
m.writeSprite(0, 0, smile);
delay(1000);
m.clear();
m.writeSprite(0, 0, poker);
delay(1000);
m.clear();
m.writeSprite(0, 0, sad);
delay(1000);
m.clear();
m.writeSprite(0, 0, kiss);
delay(1000);
for (int i = 0; i < 8; i++) {
m.shiftLeft(false, false);
delay(300);
}
m.clear();
}
级联两个点阵LED模块
Dot Matrix模块的一个有趣功能是能够连接多个(最多8个)模块并在其上显示级联信息。
为此,将Dout 从第一个模块连接到下一个模块的Din ,并将其他具有相同名称的引脚连接到彼此。
上传代码查看效果
/*
8x8 Dot Matrix w/ MAX7219
modified on 7 March 2019
by Saeed Hosseini @ Electropeak
https://electropeak.com/learn/
*/
#include <MaxMatrix.h>
int DIN = 7;
int CLK = 6;
int CS = 5;
int maxInUse = 2;
MaxMatrix m(DIN, CS, CLK, maxInUse);
byte pakman[] = {8, 8, 0x1c, 0x22, 0x41, 0x49, 0x55, 0x22, 0x00, 0x08};
void setup() {
m.init();
m.setIntensity(2);
}
void loop(){
m.writeSprite(0, 0, pakman);
delay(300);
for (int i = 0; i < 8; i++) {
m.shiftRight(false, true);
delay(300);
}
m.clear();
}