37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十九: 8X32 LED点阵显示模块 MAX7219 输出 共阴 5V 四位点阵模组 MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED 点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。 MAX7219/MAX7221是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。MAX7221与SPI™、QSPI™以及 MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219/MAX7221同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。 MAX7219管脚描述 1 DIN 串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。 2,3,5-8,10,11 DIG 0–DIG7 八个数据驱动线路置显示器共阴极为低电平。关闭时7219此管脚输出高电平,7221呈现高阻抗。 4,9 GND 地线 (4脚和9脚必须同时接地) 12 LOAD (MAX7219) 载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。CS (MAX7221) 片选端。该端为低电平时串行数据被载入移位寄存器。连续数据的后16位在cs端的上升沿时被锁定。 13 CLK 时钟序列输入端。最大速率为 10MHz.在时钟的上升沿, 数据移入内部移位寄存器。 下降沿时, 数据从DOUT端输出。对MAX7221来说,只有当cs端为低电平时时钟输入才有效。 14-17,20-23 SEG 7 段和小数点驱动,为显示器提供电流。当一个段驱A–SEG G, 动关闭时,7219的此端呈低电平,7221呈现高阻抗。DP 18 SET 通过一个电阻连接到VDD 来提高段电流。 19 V+ 正极电压输入,+5V 24 DOUT 串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有效。当使用多个MAX7219/MAX7221时用此端方便扩展。 MAX7219功能特点 1 10MHz连续串行口 2 独立的LED段控制 3 数字的译码与非译码选择 4 150μA的低功耗关闭模式 5 亮度的数字和模拟控制 6 高电压中断显示 7 共阴极LED显示驱动 8 限制回转电流的段驱动来减少EMI(MAX7221) 9 SPI, QSPI, MICROWIRE串行接口(MAX7221) 10 24脚的 DIP和 SO 封装 8X32 LED点阵显示模块 MAX7219 输出 共阴 5V 四位点阵模组 8X32 LED点阵显示级联模块,MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。只需要3个IO口即可驱动1个点阵!点阵显示时无闪烁!支持级联! 8X32 LED点阵显示模块参考电原理图 模块参数: 1.单个模块可以驱动一个8*8共阴点阵 2.模块工作电压:5V 3.模块尺寸:长12.8厘米X宽3.2厘米X高1.3厘米 4.带64个固定螺丝孔,孔径3mm 5.模块带输入输出接口,支持多个模块级联 接线说明: 1.模块左边为输入端口,右边为输出端口。 2.控制单个模块时,只需要将输入端口接到CPU 3.多个模块级联时,第1个模块的输入端接CPU,输出端接第2个模块的输入端,第2个模块的输出端接第3个模块的输入端,以此类推... 实验开源代码 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十九:8X32 LED点阵显示模块 MAX7219 输出 共阴 5V 四位点阵模组 1、下载安装库: GitHub | riyas-org/max7219 https://github.com/riyas-org/max7219 2、项目:应用多种函数,显示字母,笑脸等图案以及左向移动 3、连线: VCC → 5V GND → GND DIN → D11 CS → D12 CLK → D13 */ #include 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, B01111111, B01001001, B01001001, B00110110, }; char smile01 = {8, 8, B00111100, B01000010, B10010101, B10010001, B10010001, B10010101, B01000010, B00111100 }; char smile03 实验开源代码之二 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十九:8X32 LED点阵显示模块 MAX7219 输出 共阴 5V 四位点阵模组 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 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); } } 实验开源代码之三 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十九: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 before Matrix #include 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); } } } 实验开源代码之四 /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十九: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 before Matrix #include //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() { } 实验场景图 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位置的数据。 实验开源仿真编程(Linkboy V4.63) 实验开源图形编程(Mind+、Mixly、编玩边学) 【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏 项目之三:红绿色32段级联频谱点阵屏灯(FFT算法) 实验开源代码 /* 【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏 项目之三:红绿色32段级联频谱点阵屏灯(FFT算法) 接脚连线:MAX9814 接A0 MAX7219 UNO VCC →→→→→ 5V GND →→→→→ GND DIN →→→→→ D11(数据,数据接收引脚) CS →→→→→ D10(负载,命令接收引脚) CLK →→→→→ D13(时钟,时钟引脚) */ #include #include #include MD_MAX72XX disp = MD_MAX72XX(MD_MAX72XX::FC16_HW, 10, 1); arduinoFFT FFT = arduinoFFT(); double realComponent ; double imagComponent ; int spectralHeight = analogRead(A7) / sensitivity; imagComponent = 0; } FFT.Windowing(realComponent, 64, FFT_WIN_TYP_HAMMING, FFT_FORWARD); FFT.Compute(realComponent, imagComponent, 64, FFT_FORWARD); FFT.ComplexToMagnitude(realComponent, imagComponent, 64); for (int i = 0; i < 32; i++) { realComponent = constrain(realComponent , 0, 80); realComponent = map(realComponent , 0, 80, 0, 8); index = realComponent ; value = spectralHeight ; c = 31 - i; disp.setColumn(c, value); } } 实验场景动态图 https://img.mydigit.cn/forum/202111/22/142941orny1mpjp1ktcdtr.gif 实验视频剪辑 https://v.youku.com/v_show/id_XNTgyMTc1NTk2OA==.html?spm=a2hcb.playlsit.page.1