【Arduino】168种传感器系列实验(176)---大尺寸8x8方格点阵...
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十二:建立字母库,横式滚动文本显示(三级联)
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十二:建立字母库,横式滚动文本显示(三级联)
接线接脚:
MAX7219 UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据,数据接收引脚)
CS →→→→→ D11(负载,命令接收引脚)
CLK→→→→→ D10(时钟,时钟引脚)
*/
#include <MaxMatrix.h>
#include <avr/pgmspace.h>
PROGMEM const unsigned char CH[] = {
3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space
1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !
3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "
5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #
4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $
5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %
5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &
1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '
3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (
3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )
5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *
5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +
2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,
4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -
2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .
4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :
2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;
3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <
3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =
3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >
4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?
5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @
4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A
4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B
4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C
4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D
4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G
4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I
4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J
4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L
5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M
5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N
4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O
4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P
4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R
4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S
5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U
5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V
5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W
5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X
5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y
4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z
2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [
4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash
2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]
3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat
4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _
2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `
4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a
4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b
4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c
4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d
4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e
3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f
4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g
4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h
3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i
4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j
4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k
3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l
5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m
4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n
4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o
4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p
4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q
4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r
4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s
3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t
4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u
5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v
5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w
5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x
4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y
3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z
3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {
1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |
3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }
4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~
};
int DIN = 12;
int CLK = 10;
int CS = 11;
int maxInUse = 3;
MaxMatrix m(DIN, CS, CLK, maxInUse);
byte buffer;
char text[]= "Hello Eagler8 "; // 滚动文本
void setup() {
m.init(); // 模块初始化
m.setIntensity(8); // 点阵亮度 0-15
}
void loop() {
printStringWithShift(text, 100); // (文字,滚动速度)
}
// 显示=滚动提取的字符
void printCharWithShift(char c, int shift_speed) {
if (c < 32) return;
c -= 32;
memcpy_P(buffer, CH + 7 * c, 7);
m.writeSprite(32, 0, buffer);
m.setColumn(32 + buffer, 0);
for (int i = 0; i < buffer + 1; i++){
delay(shift_speed);
m.shiftLeft(false, false);
}
}
// 从文本字符串中提取字符
void printStringWithShift(char* s, int shift_speed) {
while (*s != 0) {
printCharWithShift(*s, shift_speed);
s++;
}
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之五:混合显示各种动态图形
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之五:混合显示各种动态图形
接脚连线:
MAX7219 UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据)
CS →→→→→ D11(负载)
CLK→→→→→ D10(时钟)
*/
#include <MaxMatrix.h>
int DIN = 12; // MAX7219模块的DIN引脚
int CLK = 10; // MAX7219模块的CLK引脚
int CS = 11; // MAX7219模块的CS引脚
int maxInUse = 1;
MaxMatrix m(DIN, CS, CLK, maxInUse);
char A[] = {4, 8,
B01111110,
B00010001,
B00010001,
B01111110,
};
char B[] = {4, 8,
B01111111,
B01001001,
B01001001,
B00110110,
};
char smile01[] = {8, 8,
B00111100,
B01000010,
B10010101,
B10100001,
B10100001,
B10010101,
B01000010,
B00111100
};
char smile02[] = {8, 8,
B00111100,
B01000010,
B10010101,
B10010001,
B10010001,
B10010101,
B01000010,
B00111100
};
char smile03[] = {8, 8,
B00111100,
B01000010,
B10100101,
B10010001,
B10010001,
B10100101,
B01000010,
B00111100
};
void setup() {
m.init(); //MAX7219初始化
m.setIntensity(8); // 初始 LED 矩阵亮度,0-15
}
void loop() {
// 在 x、y 或行、列位置设置 LED 开或关
m.setDot(6, 2, true);
delay(500);
m.setDot(6, 3, true);
delay(500);
m.clear(); // 清除显示
for (int i = 0; i < 8; i++) {
m.setDot(i, i, true);
delay(200);
}
m.clear();
// 在 x,y 处显示字符(字符的左上角)
m.writeSprite(2, 0, A);
delay(500);
m.writeSprite(2, 0, B);
delay(500);
m.writeSprite(0, 0, smile01);
delay(500);
m.writeSprite(0, 0, smile02);
delay(500);
m.writeSprite(0, 0, smile03);
delay(500);
for (int i = 0; i < 8; i++) {
m.shiftLeft(false, false);
delay(200);
}
m.clear();
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十一:使用Matrix库的三色LED
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目三十一:使用Matrix库的三色LED
接脚连线:
MAX7219 UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据,数据接收引脚)
CS →→→→→ D11(负载,命令接收引脚)
CLK→→→→→ D10(时钟,时钟引脚)
*/
#include <Sprite.h>// Sprite before Matrix
#include <Matrix.h>
//DIN, CLK, CS, #chips
Matrix myLeds = Matrix(12, 10, 11, 3);
Sprite letter_D = Sprite(6, 8,
B111100,
B111110,
B110111,
B110011,
B110011,
B110111,
B111110,
B111100
);
Sprite letter_E = Sprite(5, 8,
B11111,
B11111,
B11000,
B11110,
B11110,
B11000,
B11111,
B11111
);
Sprite letter_L = Sprite(5, 8,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11111,
B11111
);
void setup() {
myLeds.setBrightness(0);
}
void loop() {
myLeds.clear();
delay(1000);
myLeds.write(17, 0, letter_L);
delay(1000);
myLeds.write(9, 0, letter_E);
delay(1000);
myLeds.write(1, 0, letter_D);
delay(1000);
}
本帖最后由 驴友花雕 于 2021-6-30 17:12 编辑
MAX7219
是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED 点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。
串行输入/输出共阴极显示驱动器
MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。 MAX7221与SPI?、 QSPI?以及 MICROWIRE?相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。 整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
MAX7219内部结构图
作为一块专用的LED显示驱动芯片,MAX7219能够以动态形式驱动8位数码显示器。还可以用 n 片MAX7219进行级连,以驱动8 * n位数码显示。MAX7219与数码显示器的之间的电路极为简单,几乎连限流电阻都不用。MAX7219与单片机之间也仅仅需要连接3条引线。当单片机把数据送到MAX7219后,它就可以独立的进行动态扫描显示,无需单片机再进行干预。对于单片机来说,这些数码显示器,看起来似乎都是在进行静态显示,可以说是驱动多位数码显示器的最佳选择。
MAX7219各引脚的功能:
DIN:串行数据输入端
DOUT:串行数据输出端,用于级连扩展
LOAD:装载数据输入
CLK:串行时钟输入
DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流
SEG A~SEG G DP 7段驱动和小数点驱动
ISET:通过一个10k电阻和Vcc相连,设置段电流
技术参数:
种类: LED显示驱动器
系列: MAX7219
数位数量: 8
片段数量: 64
安装风格: SMD/SMT
封装 / 箱体: SOIC-Wide-24
工作电源电压: 4 V to 5.5 V
电源电流— 大值: 330 mA
小工作温度: - 40 C
大工作温度: + 85 C
封装: Reel或Tube
高度: 2.35 mm
长度: 15.6 mm
产品: LED Display Drivers
宽度: 7.6 mm
高电平输出电流: - 2 mA
低电平输出电流: 5 mA
Pd-功率耗散: 941 mW
工厂包装数量: 1000
零件号别名: MAX7219
单位重量: 734.500 mg
功能特点:
1 10MHz连续串行口
2 独立的LED段控制
3 数字的译码与非译码选择
4 150μA的低功耗关闭模式
5 亮度的数字和模拟控制
6 高电压中断显示
7 共阴极LED显示驱动
8 限制回转电流的段驱动来减少EMI(MAX7221)
9 SPI, QSPI, MICROWIRE串行接口(MAX7221)
10 24脚的 DIP和 SO 封装
本帖最后由 驴友花雕 于 2021-6-30 16:56 编辑
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
主要特性:1:使用MAX7219专用驱动芯片,可级联2、只需要3个IO即可驱动,不需MCU扫描,节省MCU资源3、大尺寸的6mm像素大小的方块点阵,有红色,翠绿,蓝色,白色可选,效果非常漂亮,可独立控制每个点的亮灭4、支持8级亮度调节5、板子带两个3mm安装孔方便固定,拼接时可掰断安装孔无缝拼接6、模块尺寸:7.1*6.0(cm)
模块电原理图
★ 能在低电压、小电流条件下驱动发光
★ 发光响应时间极短(<0.1μs),高频特性好,单色性好,亮度高
★ 体积小,重量轻,抗冲击性能好.固态封装,封装方式为灌胶型,稳定性高
★ 寿命长,使用寿命在5万小时以上
★ 可连续扫描驱动各字节
★ 良好的显示效果、视角宽
★ 推荐恒流使用,恒压会出现亮度不均匀现象
★ 表面有保护膜的产品,可以在使用前撕下来
★ 焊接温度: 260℃ 停留时间最长5秒
★ 当工作温度高于25℃时,Ifm,ifp和Id必须降低;电流降低率是-036mA/℃(直流驱动),或-0.86mA/℃(脉冲驱动)功耗率是-0.75mW/℃。产品的工作电流不能大于对应工作温度条件Ifm或Ifp的60%。
★ 蓝色,翠绿色,白色请采取防静电措施
接线方式:
(在IN方向的针脚)
Arduino Uno --- MAX7219
5V <---> VCC
GND <---> GND
12 <---> DIN
11 <---> CS
10 <---> CLK
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目之一:快速扫描所有64个点阵(对于测试矩阵很有用)
3、连线:
MAX7219 UNO
VCC→→→→→5V
GND→→→→→GND
DIN→→→→→ D12 (MOSI)
CS →→→→→ D11 (SS)
CLK→→→→→ D10 (SCK)
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目之一:快速扫描所有64个点阵(对于测试矩阵很有用)
3、连线:
MAX7219 UNO
VCC→→→→→5V
GND→→→→→GND
DIN→→→→→ D12 (MOSI)
CS →→→→→ D11 (SS)
CLK→→→→→ D10 (SCK)
*/
#include <Sprite.h>//导入精灵矩阵库
#include <Matrix.h>
const int numChips = 1;
//DIN, CLK, CS, #chips
Matrix myLeds = Matrix(12, 10, 11, numChips);
void setup() {
myLeds.clear();
}
void loop() {
byte x, y;
// 一次点亮一个 LED,从左到右扫描
// 从上到下......对于测试矩阵很有用
for (y = 0; y < 8; y++) {
for (x = 0; x < (numChips * 8); x++) {
myLeds.write(x, y, HIGH);
delay(40);
myLeds.write(x, y, LOW);
}
}
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目之一:快速扫描所有64个点阵(对于测试矩阵很有用)
实验场景图
应用于小规格的8X8点阵屏
实验场景图
下载相关驱动库
1、 https://github.com/riyas-org/max7219
2、 https://github.com/wayoda/LedControl
3、 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
4、 Https://github.com/shaai/Arduino_LED_matrix_sketch/archive/master.zip
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之二:在屏幕上闪烁欢迎面孔(间隔1秒)
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之二:在屏幕上闪烁欢迎面孔(间隔1秒)
接脚连线:
MAX7219 UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据)
CS →→→→→ D11(负载)
CLK→→→→→ D10(时钟)
*/
#include <Sprite.h>
#include <Matrix.h>
Matrix myMatrix = Matrix(12, 10, 11);// Matrix(DIN, CLK, CS)
void setup(){
}
void loop(){
myMatrix.clear(); // 显示清屏
delay(1000);
myMatrix.write(1, 5, HIGH); // 打开相关位置的像素(点阵)
myMatrix.write(2, 2, HIGH);
myMatrix.write(2, 6, HIGH);
myMatrix.write(3, 6, HIGH);
myMatrix.write(4, 6, HIGH);
myMatrix.write(5, 2, HIGH);
myMatrix.write(5, 6, HIGH);
myMatrix.write(6, 5, HIGH);
delay(1000);
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之二:在屏幕上闪烁欢迎面孔(间隔1秒)
实验场景图
在小屏幕点阵上