Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】108种传感器系列实验(22)---MAX7219点阵模块

[复制链接]
 楼主| 发表于 2019-8-29 14:23 | 显示全部楼层

不客气,有空多交流
 楼主| 发表于 2019-8-29 14:24 | 显示全部楼层
[mw_shl_code=arduino,true]/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目四:全屏红心跳动
引脚定义
DIN = D11
CS  = D10
CLK = D13
*/

#include <SPI.h>

const byte sprite[2][8] = {
     { 0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x18 },  
     { 0x00, 0x00, 0x24, 0x7E, 0x7E, 0x3C, 0x18, 0x00 }     
};

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[j]);
     }
   delay(500);
   }
}[/mw_shl_code]
 楼主| 发表于 2019-9-1 10:40 | 显示全部楼层
本帖最后由 eagler8 于 2019-9-1 10:55 编辑

23.gif
 楼主| 发表于 2019-9-1 10:43 | 显示全部楼层
[mw_shl_code=arduino,true]/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
1、下载安装库:
GitHub | riyas-org/max7219  https://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[2][8] = {
    { 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[j]);
    }
  delay(500);
  }
}[/mw_shl_code]
 楼主| 发表于 2019-9-1 10:54 | 显示全部楼层
24.gif
 楼主| 发表于 2019-9-1 11:15 | 显示全部楼层
[mw_shl_code=arduino,true]/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
1、下载安装库:
GitHub | riyas-org/max7219  https://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();
}[/mw_shl_code]
 楼主| 发表于 2019-9-1 11:16 | 显示全部楼层
25.gif
 楼主| 发表于 2019-9-2 17:46 | 显示全部楼层
[mw_shl_code=arduino,true]/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
1、下载库 https://www.pjrc.com/teensy/arduino_libraries/Matrix_Sprite.zip
2、项目:快速扫描所有64个点(国外网站上的示例)
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 = 1;

//DIN, CLK, CS, #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);
    }
  }
}[/mw_shl_code]
 楼主| 发表于 2019-9-3 10:27 | 显示全部楼层
19.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-12-7 07:53 , Processed in 0.074591 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表