项目10 8×8点阵屏

项目10 8×8点阵屏#

1. 项目介绍:

点阵屏是一种电子数字显示设备,可以显示机器、钟表、公共交通离场指示器和许多其他设备上的信息。

在这个项目中,我们将使用ESP32控制8x8 LED点阵来显示图案。

2. 项目元件:

Img

Img

Img

ESP32*1

面包板*1

8×8点阵屏*1

Img

Img

4P转杜邦线公单*1

USB 线*1

3. 元件知识:

8×8点阵屏模块: 8×8的点阵由64个LED组成,每个LED被放置在一排和一列的交叉点上。利用单片机驱动一个8×8点阵时,我们总共需要用到16个数字口,这样就极大的浪费单片机资料。为此,我们特别设计了这个模块,利用HT16K33芯片驱动1个8×8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。

8×8点阵屏模块规格参数:

工作电压:DC 5V

工作电流:≤200MA

最大功率:1W

8×8点阵屏模块原理:

如原理图所示,如果想要点亮第一行第一列的LED灯,只需要把C1置高电平,R1置低电平,它就亮了。如果我们想让第一行led全部点亮,那么我们让R1为低电平,C1~C8全部为高电平就可以了,原理非常简单。但是这样的话我们总共需要用到16个IO口,这样就极大的浪费单片机资源。为此,我们特别设计了这个模块,利用HT16K33芯片驱动1个8*×8点阵,只需要利用单片机的I2C通信端口控制点阵,大大的节约了单片机资源。

Img

有些模块上自带3个拨码开关,可以让你随意拨动开关,这是用来设置I2C通信地址的,设置方法如下表格。我们的这个模块中,模块已经固定了通信地址,A0,A1,A2全部接地,即地址为0x70。

Img

4. 项目接线图:

Img

5. 添加HT16K33_Lib_For_ESP32库:

本项目代码使用了一个名为 “HT16K33_Lib_For_ESP32” 库。如果你已经添加好了 “HT16K33_Lib_For_ESP32” 库,则跳过此步骤。如果你还没有添加它,请在学习前先添加。

如何安装库?

打开Arduino IDE,单击 “项目” → “包含库” → “添加.ZIP库…”。在弹出窗口中找到该目录下名为 …\Arduino代码、库文件\Arduino库文件\HT16K33_Lib_For_ESP32.ZIP 的文件,先选中 HT16K33_Lib_For_ESP32.ZIP 文件,再单击 “打开”。

Img

Img

6. 项目代码:

//**********************************************************************************
/*
 * 文件名 : 8×8 点阵屏
 * 描述 : 8x8 LED点阵显示“心”图案.
*/
#include "HT16K33_Lib_For_ESP32.h"

#define SDA 21
#define SCL 22

ESP32_HT16K33 matrix = ESP32_HT16K33();

//亮度值可以从1到15设置,其中1个最暗,15个最亮
#define  A  15

byte result[8][8];
byte test1[8] = {0x00,0x42,0x41,0x09,0x09,0x41,0x42,0x00};

void setup()
{
  matrix.init(0x70, SDA, SCL);//初始化矩阵
  matrix.showLedMatrix(test1,0,0);
  matrix.show();
}

void loop()
{
  for (int i = 0; i <= 7; i++)
  {
    matrix.setBrightness(i);
    delay(100);
  }
  for (int i = 7; i > 0; i--)
  {
    matrix.setBrightness(i);
    delay(100);
  }
}
//**********************************************************************************

7. 项目现象:

代码上传成功后,利用USB线上电,你会看到的现象是:8*x8点阵屏显示“笑脸”图案。

Img