本帖最后由 lxf 于 2020-8-17 13:32 编辑
目标
用MAX7219 8*8点阵显示模块展示跳动的爱心
实验材料
Arduino UNO开发板 MAX7219 8*8点阵屏 配套USB数据线 配套杜邦线若干 Arduino IDE软件
内容
MAX7219点阵屏先显示一个大爱心的图案,1秒后,显示小爱心图案,依次循环。
接线图
(Arduino UNO开发板与MAX7219点阵屏的连接方式)
接线方式
Arduino UNO <------> MAX7219 8*8点阵屏模块 VCC <------> 5V GND <------> GND DIN <------> 11 CS <------> 9 CLK <------> 13
本次需要用到MAX7219 8*8点阵屏第三方库文件,文件名为“Adafruit_GFX_Library”和“Max72xxPanel”。 下载后解压,把文件名为“Adafruit_GFX_Library”和“Max72xxPanel”的两个文件夹复制放到Arduino安装包的“libraries”文件夹里面。
程序实现代码
- #include <SPI.h>
- #include <Adafruit_GFX.h>
- #include <Max72xxPanel.h> //MAX7219点阵屏库文件
- Max72xxPanel myMatrix = Max72xxPanel(9,1,1); //CS=9,水平和竖直点阵屏都为1
- uint8_t LEDArray[8];
- const uint8_t A[8] PROGMEM ={0x00,0x18,0x3c,0x7e,0xff,0xff,0x66,0x00};
- const uint8_t B[8] PROGMEM ={0x00,0x00,0x18,0x3c,0x7e,0x24,0x00,0x00};
- void setup(){
- }
- void loop(){
- myMatrix.setIntensity(20); //设置MAX7219点阵屏亮度为20
- memcpy_P (&LEDArray, &A, 8); //数组变量A的图案数组为显示大爱心
- for(int index_i=0; index_i<8; index_i++)
- {
- for(int index_j=0*8; index_j<0*8+8; index_j++)
- {
- if((LEDArray[index_i]&0x01)>0)
- myMatrix.drawPixel(index_j, 7-index_i,1);
- else
- myMatrix.drawPixel(index_j, 7-index_i,0);
- LEDArray[index_i] = LEDArray[index_i]>>1;
- }
- }
- myMatrix.write();
- delay(1000);
- memcpy_P (&LEDArray, &B, 8); //数组变量B的图案数组为显示小爱心
- for(int index_i=0; index_i<8; index_i++)
- {
- for(int index_j=0*8; index_j<0*8+8; index_j++)
- {
- if((LEDArray[index_i]&0x01)>0)
- myMatrix.drawPixel(index_j, 7-index_i,1);
- else
- myMatrix.drawPixel(index_j, 7-index_i,0);
- LEDArray[index_i] = LEDArray[index_i]>>1;
- }
- }
- myMatrix.write();
- delay(1000);
- }
复制代码
显示结果:大爱心和小爱心每隔1秒切换显示
|