37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试做实验,不管成功与否,都会记录下来—小小的进步或是搞不定的问题,希望能够抛砖引玉。
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴屏幕)
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目三十三:动态红心
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二十二:MAX7219点阵显示模块(8X8 LED共阴)项目三十三:动态红心接脚连线:MAX7219 UNOVCC →→→→→ 5VGND →→→→→ GNDDIN →→→→→ 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[19][8]={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(500);Init_MAX7219();
}void loop()
{ for(j=0;j<19;j++){for(i=1;i<9;i++)Write_Max7219(i,disp1[j][i-1]);delay(500);}
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目三十四:打开/关闭其 LED 组合显示 ASCII 字符
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二十二:MAX7219点阵显示模块(8X8 LED共阴)项目三十四:打开/关闭其 LED 组合显示 ASCII 字符接脚连线:MAX7219 UNOVCC →→→→→ 5VGND →→→→→ GNDDIN →→→→→ D12(数据,数据接收引脚)CS →→→→→ D11(负载,命令接收引脚)CLK →→→→→ D10(时钟,时钟引脚)
*///We always have to include the library
#include "LedControlMS.h"/*Now we need a LedControl to work with.***** These pin numbers will probably not work with your hardware *****pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX.*/
#define NBR_MTX 2
LedControl lc=LedControl(12,10,11, NBR_MTX);String digits= "1234567890";
int digitCounter=0;
/* we always wait a bit between updates of the display */
unsigned long delaytime=300;void setup() {/*The MAX72XX is in power-saving mode on startup,we have to do a wakeup call*/Serial.begin (9600);Serial.println("Setup");digitCounter=0;for (int i=0; i< NBR_MTX; i++){lc.shutdown(i,false);/* Set the brightness to a medium values */lc.setIntensity(i,8);/* and clear the display */lc.clearDisplay(i);}Serial.println("LED0: 0 0");lc.setLed(0,0,0,true);delay(1000);Serial.println("LED0: 0 7");lc.setLed(0,0,7,true);delay(1000);Serial.println("LED0: 7 0");lc.setLed(0,7,0,true);delay(1000);Serial.println("LED0: 7 7"); lc.setLed(0,7,7,true);delay(1000);Serial.println("LED0: 0 0 off");lc.setLed(0,0,0,false);delay(1000);Serial.println("LED0: 0 7 off");lc.setLed(0,0,7,false);delay(1000);Serial.println("LED0: 7 0 off");lc.setLed(0,7,0,false);delay(1000);Serial.println("LED0: 7 7 off"); lc.setLed(0,7,7,false);delay(1000); //clearAll();lc.setRow(0,1,0x0C);delay(1000);lc.clearDisplay(0);lc.setRow(0,1,0xC0);delay(1000);lc.clearDisplay(0);lc.setColumn(0,1,0x0C);delay(1000);lc.clearDisplay(0);lc.setColumn(0,1,0xC0);delay(1000);lc.clearDisplay(0);lc.writeString(0,"Hola Mundo");delay(1000);lc.clearAll();scrollLeft('O');delay(1000);lc.clearAll();scrollRight('O');delay(1000);lc.clearAll();
}void loop() { char ch= digits[digitCounter];digitCounter++;if (digitCounter>9) digitCounter=0;lc.displayChar(0, lc.getCharArrayPosition(ch));delay(500);lc.clearAll();delay(200);
}void scrollLeft(char ch){int pos =lc.getCharArrayPosition(ch);for (int scroll =0; scroll<6; scroll++) {for (int i=scroll; i<6;i++) {lc.setRow(0,i-scroll, alphabetBitmap[pos][i]);} delay(200);lc.clearDisplay(0);}
}void scrollRight(char ch){int pos =lc.getCharArrayPosition(ch);for (int scroll =0; scroll<8; scroll++) {for (int i=0; i<6;i++) {if (scroll+i<8) lc.setRow(0, scroll+i, alphabetBitmap[pos][i]);} delay(200);lc.clearDisplay(0);}
}
实验串口返回情况
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目三十五:逐点排列
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二十二:MAX7219点阵显示模块(8X8 LED共阴)项目三十五:逐点排列接脚连线:MAX7219 UNOVCC →→→→→ 5VGND →→→→→ GNDDIN →→→→→ D12(数据,数据接收引脚)CS →→→→→ D11(负载,命令接收引脚)CLK →→→→→ D10(时钟,时钟引脚)
*///We always have to include the library
#include "LedControlMS.h"/*Now we need a LedControl to work with.***** These pin numbers will probably not work with your hardware *****pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX.*/
LedControl lc=LedControl(12,10,11,1);/* we always wait a bit between updates of the display */
unsigned long delaytime=100;void setup() {/*The MAX72XX is in power-saving mode on startup,we have to do a wakeup call*/lc.shutdown(0,false);/* Set the brightness to a medium values */lc.setIntensity(0,8);/* and clear the display */lc.clearDisplay(0);
}/*This method will display the characters for theword "Arduino" one after the other on the matrix. (you need at least 5x7 leds to see the whole chars)*/
void writeArduinoOnMatrix() {/* here is the data for the characters */byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110};byte r[5]={B00111110,B00010000,B00100000,B00100000,B00010000};byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110};byte u[5]={B00111100,B00000010,B00000010,B00000100,B00111110};byte i[5]={B00000000,B00100010,B10111110,B00000010,B00000000};byte n[5]={B00111110,B00010000,B00100000,B00100000,B00011110};byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100};/* now display them one by one with a small delay */lc.setRow(0,0,a[0]);lc.setRow(0,1,a[1]);lc.setRow(0,2,a[2]);lc.setRow(0,3,a[3]);lc.setRow(0,4,a[4]);delay(delaytime);lc.setRow(0,0,r[0]);lc.setRow(0,1,r[1]);lc.setRow(0,2,r[2]);lc.setRow(0,3,r[3]);lc.setRow(0,4,r[4]);delay(delaytime);lc.setRow(0,0,d[0]);lc.setRow(0,1,d[1]);lc.setRow(0,2,d[2]);lc.setRow(0,3,d[3]);lc.setRow(0,4,d[4]);delay(delaytime);lc.setRow(0,0,u[0]);lc.setRow(0,1,u[1]);lc.setRow(0,2,u[2]);lc.setRow(0,3,u[3]);lc.setRow(0,4,u[4]);delay(delaytime);lc.setRow(0,0,i[0]);lc.setRow(0,1,i[1]);lc.setRow(0,2,i[2]);lc.setRow(0,3,i[3]);lc.setRow(0,4,i[4]);delay(delaytime);lc.setRow(0,0,n[0]);lc.setRow(0,1,n[1]);lc.setRow(0,2,n[2]);lc.setRow(0,3,n[3]);lc.setRow(0,4,n[4]);delay(delaytime);lc.setRow(0,0,o[0]);lc.setRow(0,1,o[1]);lc.setRow(0,2,o[2]);lc.setRow(0,3,o[3]);lc.setRow(0,4,o[4]);delay(delaytime);lc.setRow(0,0,0);lc.setRow(0,1,0);lc.setRow(0,2,0);lc.setRow(0,3,0);lc.setRow(0,4,0);delay(delaytime);
}/*This function lights up a some Leds in a row.The pattern will be repeated on every row.The pattern will blink along with the row-number.row number 4 (index==3) will blink 4 times etc.*/
void rows() {for(int row=0;row<8;row++) {delay(delaytime);lc.setRow(0,row,B10100000);delay(delaytime);lc.setRow(0,row,(byte)0);for(int i=0;i<row;i++) {delay(delaytime);lc.setRow(0,row,B10100000);delay(delaytime);lc.setRow(0,row,(byte)0);}}
}/*This function lights up a some Leds in a column.The pattern will be repeated on every column.The pattern will blink along with the column-number.column number 4 (index==3) will blink 4 times etc.*/
void columns() {for(int col=0;col<8;col++) {delay(delaytime);lc.setColumn(0,col,B10100000);delay(delaytime);lc.setColumn(0,col,(byte)0);for(int i=0;i<col;i++) {delay(delaytime);lc.setColumn(0,col,B10100000);delay(delaytime);lc.setColumn(0,col,(byte)0);}}
}/* This function will light up every Led on the matrix.The led will blink along with the row-number.row number 4 (index==3) will blink 4 times etc.*/
void single() {for(int row=0;row<8;row++) {for(int col=0;col<8;col++) {delay(delaytime);lc.setLed(0,row,col,true);delay(delaytime);for(int i=0;i<col;i++) {lc.setLed(0,row,col,false);delay(delaytime);lc.setLed(0,row,col,true);delay(delaytime);}}}
}void loop() { writeArduinoOnMatrix();rows();columns();single();
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目三十六:快速扫描矩阵所以点
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二十二:MAX7219点阵显示模块(8X8 LED共阴)项目三十六:快速扫描矩阵所以点接脚连线:MAX7219 UNOVCC →→→→→ 5VGND →→→→→ GNDDIN →→→→→ D12(数据,数据接收引脚)CS →→→→→ D11(负载,命令接收引脚)CLK →→→→→ D10(时钟,时钟引脚)
*///We always have to include the library
#include "LedControlMS.h"/*Now we need a LedControl to work with.***** These pin numbers will probably not work with your hardware *****pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD ***** Please set the number of devices you have *****But the maximum default of 8 MAX72XX wil also work.*/
LedControl lc=LedControl(12,10,11,1);/* we always wait a bit between updates of the display */
unsigned long delaytime=10;/* This time we have more than one device. But all of them have to be initialized individually.*/
void setup() {//we have already set the number of devices when we created the LedControlint devices=lc.getDeviceCount();//we have to init all devices in a loopfor(int address=0;address<devices;address++) {/*The MAX72XX is in power-saving mode on startup*/lc.shutdown(address,false);/* Set the brightness to a medium values */lc.setIntensity(address,8);/* and clear the display */lc.clearDisplay(address);}
}void loop() { //read the number cascaded devicesint devices=lc.getDeviceCount();//we have to init all devices in a loopfor(int row=0;row<8;row++) {for(int col=0;col<8;col++) {for(int address=0;address<devices;address++) {delay(delaytime);lc.setLed(address,row,col,true);delay(delaytime);lc.setLed(address,row,col,false);}}}
}
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十二:MAX7219点阵显示模块(8X8 LED共阴)
项目三十七:动态字符串
实验开源代码
/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验二十二:MAX7219点阵显示模块(8X8 LED共阴)项目三十七:动态字符串接脚连线:MAX7219 UNOVCC →→→→→ 5VGND →→→→→ GNDDIN →→→→→ D12(数据,数据接收引脚)CS →→→→→ D11(负载,命令接收引脚)CLK →→→→→ D10(时钟,时钟引脚)
*///We always have to include the library
#include "LedControlMS.h"/*Now we need a LedControl to work with.***** These pin numbers will probably not work with your hardware *****pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX.*/
LedControl lc=LedControl(12,10,11,1);/* we always wait a bit between updates of the display */
unsigned long delaytime=250;void setup() {/*The MAX72XX is in power-saving mode on startup,we have to do a wakeup call*/lc.shutdown(0,false);/* Set the brightness to a medium values */lc.setIntensity(0,8);/* and clear the display */lc.clearDisplay(0);
}/*This method will display the characters for theword "Arduino" one after the other on digit 0. */
void writeArduinoOn7Segment() {lc.setChar(2,0,'a',false);delay(delaytime);lc.setRow(2,0,0x05);delay(delaytime);lc.setChar(2,0,'d',false);delay(delaytime);lc.setRow(2,0,0x1c);delay(delaytime);lc.setRow(2,0,B00010000);delay(delaytime);lc.setRow(2,0,0x15);delay(delaytime);lc.setRow(2,0,0x1D);delay(delaytime);lc.clearDisplay(0);delay(delaytime);
} /*This method will scroll all the hexa-decimalnumbers and letters on the display. You will need at leastfour 7-Segment digits. otherwise it won't really look that good.*/
void scrollDigits() {for(int i=0;i<13;i++) {lc.setDigit(0,3,i,false);lc.setDigit(0,2,i+1,false);lc.setDigit(0,1,i+2,false);lc.setDigit(0,0,i+3,false);delay(delaytime);}lc.clearDisplay(0);delay(delaytime);
}void loop() { writeArduinoOn7Segment();scrollDigits();
}
Arduino点阵文字(中) 8x8 LED Matrix MAX7219 Tutorial with Scrolling Text
https://www.bilibili.com/video/BV1Et411k7U2?from=search&seid=4477785334025497564&spm_id_from=333.337.0.0
Arduino Nano + MAX7219 8*8点阵组合 汉字显示
https://www.bilibili.com/video/av375403904/?from=search&seid=3172695889868987008&spm_id_from=333.337.0.0