/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载安装库:
GitHub | riyas-org/max7219https://github.com/riyas-org/max7219
2、项目:应用多种函数,显示字母,笑脸等图案以及左向移动
3、连线:
VCC→5V
GND→GND
DIN→D11
CS →D12
CLK→D13
*/
#include <MaxMatrix.h>
int DIN = 11; // DIN pin of MAX7219 module
int CLK = 13; // CLK pin of MAX7219 module
int CS= 12; // CS pin of MAX7219 module
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 initialization
m.setIntensity(8); // initial led matrix intensity, 0-15
}
void loop() {
// Seting the LEDs On or Off at x,y or row,column position
m.setDot(6,2,true);
delay(1000);
m.setDot(6,3,true);
delay(1000);
m.clear(); // Clears the display
for (int i=0; i<8; i++){
m.setDot(i,i,true);
delay(300);
}
m.clear();
// Displaying the character at x,y (upper left corner of the character)
m.writeSprite(2, 0, A);
delay(1000);
m.writeSprite(2, 0, B);
delay(1000);
m.writeSprite(0, 0, smile01);
delay(1000);
m.writeSprite(0, 0, smile02);
delay(1000);
m.writeSprite(0, 0, smile03);
delay(1000);
for (int i=0; i<8; i++){
m.shiftLeft(false,false);
delay(300);
}
m.clear();
}
/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载安装库:
GitHub | riyas-org/max7219https://github.com/riyas-org/max7219
2、项目:程序中将所要显示的图型使用数组方式存放,主回圈中交错显示在 8x8 点阵
模块上产生一个有趣的点阵动画
3、连线:
VCC→5V
GND→GND
DIN 接 D11 (MOSI)
CS接 D10 (SS)
CLK 接 D13 (SCK)
*/
#include <SPI.h>
const byte sprite = {
{ 0xf8, 0xbc, 0x15, 0x7e, 0x7e, 0x15, 0xbc, 0xf8 },
{ 0xfc, 0x8e, 0x1b, 0x2e, 0x2e, 0x1b, 0x8e, 0xfc }
};
const byte DECODEMODE = 0x09;
const byte INTENSITY = 0x0a;
const byte SCANLIMIT = 0x0b;
const byte SHUTDOWN = 0x0c;
const byte DISPLAYTEST = 0x0f;
void max7219(const byte reg, const byte data) {
digitalWrite(SS, LOW);
SPI.transfer(reg);
SPI.transfer(data);
digitalWrite(SS, HIGH);
}
void setup() {
SPI.begin();
max7219(SCANLIMIT, 7);
max7219(DECODEMODE, 0);
max7219(INTENSITY, 2);
max7219(DISPLAYTEST, 0);
max7219(SHUTDOWN, 1);
for(byte i=0; i<8; i++) {
max7219(i+1, 0);
}
}
void loop() {
for(byte j=0; j<2; j++) {
for(byte i=0; i<8; i++) {
max7219(i+1, sprite);
}
delay(500);
}
}
/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目:在四个8x8屏间跳动的红点
3、连线:
VCC→5V
GND→GND
DIN 接 D11 (MOSI)
CS接 D10 (SS)
CLK 接 D13 (SCK)
*/
#include <Sprite.h>// Sprite before Matrix
#include <Matrix.h>
const int numChips = 4;
//DIN, CLK, SS, #chips
Matrix myLeds = Matrix(11, 13, 10, numChips);
void setup() {
myLeds.clear();
}
void loop() {
byte x, y;
// light one LED at a time, scanning left to right
// and top to bottom... useful for testing the matrix
for (y=0; y<8; y++) {
for (x=0; x<(numChips * 8); x++) {
myLeds.write(x, y, HIGH);
delay(20);
myLeds.write(x, y, LOW);
}
}
}
/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目:显示字母
3、连线:
VCC→5V
GND→GND
DIN 接 D11 (MOSI)
CS接 D10 (SS)
CLK 接 D13 (SCK)
*/
#include <Sprite.h>// Sprite before Matrix
#include <Matrix.h>
//DIN, CLK, CS, #chips
Matrix myLeds = Matrix(11, 13, 10, 3);
Sprite letter_L = Sprite(5, 8,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11111,
B11111
);
Sprite letter_E = Sprite(5, 8,
B11111,
B11111,
B11000,
B11110,
B11110,
B11000,
B11111,
B11111
);
Sprite letter_D = Sprite(6, 8,
B111100,
B111110,
B110111,
B110011,
B110011,
B110111,
B111110,
B111100
);
Sprite letter_S = Sprite(5, 8,
B01110,
B11111,
B11000,
B11110,
B01111,
B00011,
B11111,
B01110
);
void setup() {
myLeds.clear();
myLeds.setBrightness(0);
myLeds.write(3, 0, letter_L);
myLeds.write(10, 0, letter_E);
myLeds.write(18, 0, letter_D);
myLeds.write(26, 0, letter_S);
}
void loop() {
}
本帖最后由 eagler8 于 2019-9-2 16:32 编辑
Matrix库的几个函数
基本用法,仅限像素
Matrix myLeds = Matrix(DIN,CLK,LOAD,numChips);
使用您选择的名称创建Matrix对象的实例。DIN,CLK和LOAD是连接这些信号的引脚号。如果连接了多个单独连接的MAX7219芯片,则可以创建多个对象。
myLeds。clear();
清除整个显示屏。
myLeds。setBrightness(15);
设置显示亮度,从0到15(最亮)。
myLeds。write(x,y,value);
更改单个像素。对于关闭,值应为LOW,对于on,值应为HIGH。
基本用法,使用Sprite
Sprite myIcon = Sprite(宽度,高度,B11000,B11000,B11111,B11111);
创建一个精灵对象。您可以根据需要创建任意数量的精灵,每个精灵都有一个唯一的名称。宽度应与每个数据值中的位数匹配,高度应与数据值的数量匹配。
myLeds。write(x,y,myIcon);
在显示屏上绘制一个闪烁的精灵。
Sprite库允许创建与Matrix库一起使用的图像精灵
Sprite
启动LCD库。
width()
返回精灵的宽度(以像素为单位)。
height()
返回精灵的高度(以像素为单位)。
write()
将数据写入精灵的x,y位置。
read()
返回存储在sprite的x,y位置的数据。
/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百零三: 8X32 LED点阵显示级联模块 MAX7219 输出 共阴 5V 模组
1、下载安装库:
GitHub | riyas-org/max7219 https://github.com/riyas-org/max7219
2、项目:建立字母库,立式滚动文本显示
3、连线:
VCC → 5V
GND → GND
DIN 接 D11 (MOSI)
CS 接 D10 (SS)
CLK 接 D13 (SCK)
*/
#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 = 11; // DIN pin of MAX7219 module
int CLK = 13; // CLK pin of MAX7219 module
int CS = 10; // CS pin of MAX7219 module
int maxInUse = 4;
MaxMatrix m(DIN, CS, CLK, maxInUse);
byte buffer;
char text[]= "Hello Eagler8"; // Scrolling text
void setup() {
m.init(); // module initialize
m.setIntensity(0); // dot matix intensity 0-15
}
void loop() {
printStringWithShift(text, 100); // (text, scrolling speed)
}
// Display=the extracted characters with scrolling
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);
}
}
// Extract the characters from the text string
void printStringWithShift(char* s, int shift_speed) {
while (*s != 0) {
printCharWithShift(*s, shift_speed);
s++;
}
}