驴友花雕 发表于 2021-7-1 12:04:06

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之三:在屏幕上显示正弦波动态图形
实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之三:在屏幕上显示正弦波动态图形
接脚连线:
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)

// 创建一个新的 Sprite 实例, 8 像素宽,4 像素高
Sprite wave = Sprite(
                8, 4,
                B00011000,
                B00100100,
                B01000010,
                B10000001
            );

void setup() {
}

int x = 0;

void loop() {
myMatrix.write(x, 2, wave);   // 将精灵程序放在屏幕上
myMatrix.write(x - 8, 2, wave); // 再次放置精灵,在屏幕上的其他地方
delay(75);                      // 稍等一下
myMatrix.clear();               // 为下一个动画帧清除屏幕
if (x == 8)                     // 如果到达动画序列的末尾
{
    x = 0;                        // 从头开始
}
x++;                            // 向右推进 x 坐标
}


驴友花雕 发表于 2021-7-1 12:06:03

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之三:在屏幕上显示正弦波动态图形

实验场景图


驴友花雕 发表于 2021-7-1 14:01:52

在小屏幕点阵上

驴友花雕 发表于 2021-7-1 14:04:53

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之四:在屏幕上逐渐显示欢迎面孔(延时500毫秒)
实验开源程序

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之四:在屏幕上逐渐显示欢迎面孔(延时500毫秒)
接脚连线:
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(500);
myMatrix.write(2, 2, HIGH);// 打开相关位置的像素(点阵)
delay(500);
myMatrix.write(5, 2, HIGH);
delay(500);
myMatrix.write(1, 5, HIGH);
delay(500);
myMatrix.write(2, 6, HIGH);
delay(500);
myMatrix.write(3, 6, HIGH);
delay(500);
myMatrix.write(4, 6, HIGH);
delay(500);
myMatrix.write(5, 6, HIGH);
delay(500);
myMatrix.write(6, 5, HIGH);
delay(500);
}

驴友花雕 发表于 2021-7-1 14:13:38

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度项目之四:在屏幕上逐渐显示欢迎面孔(延时500毫秒)
实验场景图

驴友花雕 发表于 2021-7-1 14:23:05

标准8*8点阵屏实验效果   

驴友花雕 发表于 2021-7-1 14:44:16

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

驴友花雕 发表于 2021-7-1 14:48:00

为了显示字符,需要在字符或字节数组中定义它们,这里举了几个例子。可以注意到这些位是如何形成实际为0和1的字符。在本例中,它们被旋转90度,但是库示例建议以这样的方式使用它们,以便以后更容易实现用于滚动文本的shiftLeft自定义函数。



在setup函数部分,只需初始化模块以及设置LED的亮度。在loop函数中,通过使用setDot()函数,可以点亮任意X、Y或行/列位置的单只LED,并且可以使用clear()函数清除显示。使用writeSprite()函数来显示预定义的字符,该函数的前两个参数是字符左上角的X和Y位置。最后我们使用shiftLeft()函数向左移动或滚动字符。

驴友花雕 发表于 2021-7-1 15:47:52

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之五:混合显示各种动态图形

实验场景图

驴友花雕 发表于 2021-7-1 15:55:18

标准8*8点阵屏实验效果

驴友花雕 发表于 2021-7-1 16:53:54

本帖最后由 驴友花雕 于 2021-7-1 17:22 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之六:跳动的红心
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之六:跳动的红心
接脚连线:
MAX7219       UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据)
CS   →→→→→ D11(负载)
CLK→→→→→ D10(时钟)
*/

unsigned char i;
unsigned char j;

int Max7219_pinCLK = 10;
int Max7219_pinCS = 11;
int Max7219_pinDIN = 12;

unsigned char disp1={0x0c,0x1e,0x3e,0x7c,0x7c,0x3e,0x1e,0x0c};

void Write_Max7219_byte(unsigned char DATA) {   
unsigned char i;
digitalWrite(Max7219_pinCS,LOW);
for(i=8;i>=1;i--){   
    digitalWrite(Max7219_pinCLK,LOW);
    digitalWrite(Max7219_pinDIN,DATA&0x80);
    DATA = DATA<<1;
    digitalWrite(Max7219_pinCLK,HIGH);
}                                 
}

void Write_Max7219(unsigned char address,unsigned char dat){
digitalWrite(Max7219_pinCS,LOW);
Write_Max7219_byte(address);         
Write_Max7219_byte(dat);               
digitalWrite(Max7219_pinCS,HIGH);
}

void Init_MAX7219(void){
Write_Max7219(0x09, 0x00);      
Write_Max7219(0x0a, 0x03);      
Write_Max7219(0x0b, 0x07);      
Write_Max7219(0x0c, 0x01);      
Write_Max7219(0x0f, 0x00);      
}

void setup(){
pinMode(Max7219_pinCLK,OUTPUT);
pinMode(Max7219_pinCS,OUTPUT);
pinMode(Max7219_pinDIN,OUTPUT);
delay(2000);
Init_MAX7219();
}

void loop(){
for(j=0;j<19;j++){
    for(i=1;i<9;i++)
      Write_Max7219(i,disp1);
    delay(100);
}   
}

驴友花雕 发表于 2021-7-1 17:18:04

本帖最后由 驴友花雕 于 2021-7-1 17:22 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之六:跳动的红心

实验场景图

驴友花雕 发表于 2021-7-1 17:26:35

标准8*8点阵屏实验效果

驴友花雕 发表于 2021-7-1 18:00:12

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之七:制作一个属于你的表白神器LOVE
实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之七:制作一个属于你的表白神器LOVE
接脚连线:
MAX7219       UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据)
CS   →→→→→ D11(负载)
CLK→→→→→ D10(时钟)
*/

int CLK = 10;
int CS = 11;
int DIN = 12; //这里定义了那三个脚

unsigned char disp1 = {
{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7E}, //L
{0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C}, //O
{0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x18}, //V
{0x7E, 0x40, 0x40, 0x7E, 0x40, 0x40, 0x40, 0x7E}, //E
{0x66, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x18}, //TX
};

void Delay(double x) {
double i;
for (i = 0; i < x; i++);
}

void setup() {
pinMode(CLK, OUTPUT);
pinMode(CS, OUTPUT);
pinMode(DIN, OUTPUT); //让三个脚都是输出状态
}

void loop() {
unsigned char i, j;
Delay_xms(100);
Init_MAX7219();
while (1)
{
    for (j = 0; j < 38; j++)
    {
      for (i = 1; i < 9; i++)
      Write_Max7219(i, disp1);
      Delay(30000);
    }
}
}

void Delay_xms(unsigned int x) {
unsigned int i, j;
for (i = 0; i < x; i++)
    for (j = 0; j < 112; j++);
}

//--------------------------------------------
//功能:向MAX7219(U3)写入字节
//入口参数:DATA
//出口参数:无

void Write_Max7219_byte(unsigned char DATA) {
unsigned char i;
digitalWrite(CS, LOW);
for (i = 8; i >= 1; i--) {
    digitalWrite(CLK, LOW);
    if (DATA & 0X80)
      digitalWrite(DIN, HIGH);
    else
      digitalWrite(DIN, LOW);
    DATA <<= 1;
    digitalWrite(CLK, HIGH);
}
}

//-------------------------------------------
//功能:向MAX7219写入数据
//入口参数:address、dat
//出口参数:无

void Write_Max7219(unsigned char address, unsigned char dat) {
digitalWrite(CS, LOW);
Write_Max7219_byte(address); //写入地址,即数码管编号
Write_Max7219_byte(dat); //写入数据,即数码管显示数字
digitalWrite(CS, HIGH);
}

void Init_MAX7219(void) {
Write_Max7219(0x09, 0x00); //译码方式:BCD码
Write_Max7219(0x0a, 0x03); //亮度
Write_Max7219(0x0b, 0x07); //扫描界限;4个数码管显示
Write_Max7219(0x0c, 0x01); //掉电模式:0,普通模式:1
Write_Max7219(0x0f, 0x00); //显示测试:1;测试结束,正常显示:0
}

驴友花雕 发表于 2021-7-1 18:17:10

本帖最后由 驴友花雕 于 2021-7-1 18:18 编辑

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之七:制作一个属于你的表白神器LOVE

实验场景图片

驴友花雕 发表于 2021-7-1 18:24:24

本帖最后由 驴友花雕 于 2021-7-1 18:25 编辑

标准8*8点阵屏实验效果   

驴友花雕 发表于 2021-7-1 19:22:07

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之八:表情、箭和移动车交替模式
实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之八:表情、箭和移动车交替模式
接脚连线:
MAX7219       UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据)
CS   →→→→→ D11(负载)
CLK→→→→→ D10(时钟)
*/

#include <LedControl.h>
int DIN = 12;
int CS =11;
int CLK = 10;
LedControl lc = LedControl(DIN, CLK, CS, 0);

void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 10);//调整亮度最大为15
lc.clearDisplay(0);
}

void loop() {
//表情
byte smile =   {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C};
byte neutral = {0x3C, 0x42, 0xA5, 0x81, 0xBD, 0x81, 0x42, 0x3C};
byte sad =   {0x3C, 0x42, 0xA5, 0x81, 0x99, 0xA5, 0x42, 0x3C};

//箭
byte arrow_up = {0x18, 0x3C, 0x7E, 0xFF, 0x18, 0x18, 0x18, 0x18};
byte arrow_down = {0x18, 0x18, 0x18, 0x18, 0xFF, 0x7E, 0x3C, 0x18};

//交替模式
byte d1 = {0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55};
byte d2 = {0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA};

//移动车
byte b1 = {0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x3C}; //8*8LED点阵 取模软件生成
byte b2 = {0x00, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x3C, 0x00};
byte b3 = {0x00, 0x00, 0x18, 0x3C, 0x18, 0x3C, 0x00, 0x00};
byte b4 = {0x00, 0x18, 0x3C, 0x18, 0x3C, 0x00, 0x00, 0x00};
byte b5 = {0x18, 0x3C, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00};
byte b6 = {0x3C, 0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x18};
byte b7 = {0x18, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C};
byte b8 = {0x3C, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x18};

//移动车
printByte(b1);
delay(50);
printByte(b2);
delay(50);
printByte(b3);
delay(50);
printByte(b4);
delay(50);
printByte(b5);
delay(50);
printByte(b6);
delay(50);
printByte(b7);
delay(50);
printByte(b8);
delay(50);

//交替模式
printByte(d1);
delay(300);

printByte(d2);
delay(300);

//箭
printByte(arrow_up);
delay(800);

printByte(arrow_down);
delay(500);

//表情
printByte(smile);
delay(500);

printByte(neutral);
delay(500);

printByte(sad);
delay(500);
}

void printByte(byte character []) {
int i = 0;
for (i = 0; i < 8; i++) {
    lc.setRow(0, i, character);
}
}

驴友花雕 发表于 2021-7-1 19:40:20

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度项目之八:表情、箭和移动车交替模式
实验场景图

驴友花雕 发表于 2021-7-1 19:42:06

标准8*8点阵屏实验效果

驴友花雕 发表于 2021-7-2 05:21:22

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之九:动态显示字符串“XVOWM X”
实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
项目之九:动态显示字符串“XVOWM X”
接脚连线:
MAX7219       UNO
VCC→→→→→ 5V
GND→→→→→ GND
DIN→→→→→ D12(数据,数据接收引脚)
CS   →→→→→ D11(负载,命令接收引脚)
CLK→→→→→ D10(时钟,时钟引脚)
*/

#include "LedControlMS.h"
#define NBR_MTX 2
LedControl lc=LedControl(12, 10, 11, NBR_MTX);

String sentence= "XVOWM X";
int letterCounter=0;
// 显示更新之间的等待时间
unsigned long delaytime=300;

void setup() { // 初始化并设置初始值。 声明函数设置
// 显示模块在启动时处于省电模式
Serial.begin(9600); //将数据速率设置为每秒 9600 位,以便与计算机进行串行数据通信
Serial.println("Setup"); //将数据作为可读的文本打印到串行端口
letterCounter=0;

for (int i=0; i< NBR_MTX; i++){
    lc.shutdown(i,false); //保持屏幕开启
    lc.setIntensity(i,8); // 将亮度设置为中等值
    lc.clearDisplay(i); // 清除每个字母后的显示
}
}

void loop() { //声明函数循环
char ch= sentence; //定义字符 ch
letterCounter++;
if (letterCounter>14) letterCounter=0; //设置循环
lc.displayChar(0, lc.getCharArrayPosition(ch)); //在屏幕上显示每个字符
delay(500);
lc.clearAll();
delay(200);
}


驴友花雕 发表于 2021-7-2 05:51:27

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度项目之九:动态显示字符串“XVOWM X”
实验场景图
页: 1 [2] 3 4 5 6
查看完整版本: 【Arduino】168种传感器系列实验(176)---大尺寸8x8方格点阵...