eagler8 发表于 2019-9-2 12:38:35

eagler8 发表于 2019-9-2 12:39:55

eagler8 发表于 2019-9-2 12:45:34

eagler8 发表于 2019-9-2 12:47:54

/*
【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();
}

eagler8 发表于 2019-9-2 14:58:56

/*
【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);
}
}

eagler8 发表于 2019-9-2 15:33:25

/*
【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);
    }
}
}

eagler8 发表于 2019-9-2 16:14:55

/*
【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:18:25

eagler8 发表于 2019-9-2 16:25:56

本帖最后由 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位置的数据。

eagler8 发表于 2019-9-2 17:00:08

/*
【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++;
  }
}

eagler8 发表于 2019-9-2 18:52:01

eagler8 发表于 2019-9-2 18:57:34

eagler8 发表于 2019-9-2 19:12:24

eagler8 发表于 2019-9-2 20:38:57

eagler8 发表于 2019-9-2 20:40:28

页: 123 124 125 126 127 128 129 130 131 132 [133] 134 135 136 137 138 139 140 141 142
查看完整版本: 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)