0°

led矩阵显示任意图像字符

简介

在本教程中,您将学习如何使用带有IC MAX7219的8×8点阵LED模块。最后您将能够使用arduino的4个数字引脚轻松图像显示,固定或滚动在一个或多个点阵上显示任何形状或文本。

步骤一 材料准备

硬件准备:

arduino uno

ElectroPeak MAX7219点阵显示模块

ElectroPeak 跳线

软件准备:

arduino IDE

步骤二 原理说明

什么是点阵?

8×8矩阵LED 是一组LED,您可以在其上显示特定的数字,字母和形状。点阵由行数和列数表示。最受欢迎的点阵组成是8×8型,可提供8行8列64个LED。

led矩阵显示任意图像字符

要简单地控制点阵8×8,您应该将每行和每列连接到数字引脚,这意味着您需要16个数字引脚!所以这不是一个优秀的方法。

为了控制点阵,有基于MAX72xx ICS的模块需要连接到4个数字引脚而不是16个。您还可以将多个点阵(最多8个)相互连接,无需任何额外的引脚并级联它们。

led矩阵显示任意图像字符

步骤三 电路搭建

使用一块led矩阵电路搭建

led矩阵显示任意图像字符

使用多个led矩阵电路搭建

led矩阵显示任意图像字符

步骤四 编写程序

Dot matrix和Arduino有各种各样的库。该LedcontrolMaxMatrix是两种最常见的库,都具有相同的结构。

测试代码如下:

/*
 8x8 Dot Matrix w/ MAX7219
 modified on 7 March 2019
 by Saeed Hosseini @ Electropeak
 
Home
*/
#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矩阵显示任意图像字符

级联两个点阵LED模块

Dot Matrix模块的一个有趣功能是能够连接多个(最多8个)模块并在其上显示级联信息。

为此,将Dout 从第一个模块连接到下一个模块的Din ,并将其他具有相同名称的引脚连接到彼此。

led矩阵显示任意图像字符

上传代码查看效果

/*
 8x8 Dot Matrix w/ MAX7219
 modified on 7 March 2019
 by Saeed Hosseini @ Electropeak
 
Home
*/
#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(); }
led矩阵显示任意图像字符

提取码:无,解压码:

下载
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论