《Arduino 学习笔记 _LED模块》由会员分享,可在线阅读,更多相关《Arduino 学习笔记 _LED模块(10页珍藏版)》请在金锄头文库上搜索。
1、 21.实验原理上图意区到的LELED模块验现象: 利用8X8 理与说明:配套的点16个引脚图中的右下区分,不然的是共阳极D模块 1 2 3 4 5 6 块实验 LED点阵模阵为共阳极脚控制8X8(下脚的二极管点亮的LED极还是共阴极Arduino 空 2 3 4 空 5 模块显示。极点阵(行控(共64颗)管阵列,左的位置会极。 LED 模78910111249 控制为LEDLED。LED模左为共阳极,会不能如愿。模 块 Ard阳极)。代模块分为共,右为共阴另外,可uino L6 空 7 8 9 10 码仅适用于共阳极和共阴阴极),在程以使用万用ED 模块 13 14 15 16 于共阳点阵阴
2、极两种(程序上需要用表来确定Arduino空 11 12 13 。 如注买50 Arduino本身只有14个数字控制引脚,除去两个烧录程序的引脚(Pin0和Pin1),通常只剩下12个引脚。因此,下面的例子中,牺牲了LED模块中最外围一圈,实际只控制了6X6颗LED。接线对应关系如上表。为了便于看到每个引脚控制的位置,下图给出了对应关系。外围的编号代表Arduino的引脚,内圈的编号代表LED模块的引脚。 备注:可以将 A5、 A4、 A3、 A2 口用作数字输出口来满足需要。 (参见“心形闪烁”程序) 。 X 6 3 11 2 10 9 X8 7 3 14 2 12 11 5X 1 5 6
3、13 16 4 4 7 9 12 15 8 10 X 13 程序清单如下: 移动显示 int i=0; void setup() for(i-0; i=0; i-) digitalWrite(UD_Pinsi,LOW); /由上至下关闭显示 delay(200); 为了结构能够简单明了,程序先定义了两个数组存放实际的LED的引脚编号,之后控制可以使用循环程序来实现。由LED模块内部架构可以看出,只需要将Arduino的5、13、4、7、12、8脚依次拉高电位,就可以驱动LED模块的6、16、4、9、15、10脚来达到依次点亮的目的。关闭时只要将对应的引脚的电位有高变低即可。 进一步的拓展。 i
4、nt i=0; void setup() for(i-0; i=0; i-) digitalWrite(RL_Pinsi,LOW); /由右至左显示(前面所有引脚都变 delay(200); /为高电平了,所以这里变为低电平即显示。 for(i=5; i=0; i-) digitalWrite(UD_Pinsi,LOW); /由下到上关闭 delay(200); 横向移动显示(改进版) int i=0; int UD_Pins=5,13,4,7,12,8; int RL_Pins=6,3,11,2,10,9; void setup() for(i-0; i=0; i-) digitalWrit
5、e(RL_Pinsi,LOW); delay(200); 53 显示心形闪烁 #define H1 2 /本程序中将A5、A4口用作数字输出口 #define H2 7 /-接线小诀窍- #define H3 A5 /使用“面包扩展板”或使用外加一块面包板用作转接 #define H4 5 /将此面包板上下两部分分别接“行”和“列”,插孔 #define H5 13 /序号与“行号”或“列号”对应。 #define H6 A4 /按前面的图先连接好从LED模块到转接面包板 #define H7 12 /然后再按此处的定义来连接Arduino与转接板 #define H8 A2 #define
6、L1 6 #define L2 11 #define L3 10 #define L4 3 #define L5 A3 #define L6 4 #define L7 8 #define L8 9 unsigned char table188 = /大“心”形 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, ; unsigned char table288 = /小“心”形
7、 0,0,0,0,0,0,0,0, 54 0,0,0,0,0,0,0,0, 0,0,1,0,0,1,0,0, 0,1,1,1,1,1,1,0, 0,1,1,1,1,1,1,0, 0,0,1,1,1,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, ; void setup() pinMode(H1,OUTPUT); pinMode(H2,OUTPUT); pinMode(H3,OUTPUT); pinMode(H4,OUTPUT); pinMode(H5,OUTPUT); pinMode(H6,OUTPUT); pinMode(H7,OUTPUT); pinMo
8、de(H8,OUTPUT); pinMode(L1,OUTPUT); pinMode(L2,OUTPUT); pinMode(L3,OUTPUT); pinMode(L4,OUTPUT); pinMode(L5,OUTPUT); pinMode(L6,OUTPUT); pinMode(L7,OUTPUT); pinMode(L8,OUTPUT); void loop() for(int i = 0 ; i 100 ; i+) /循环显示100次 Display(table1); /显示大“心” for(int i = 0 ; i 50 ; i+) /循环显示50次 55 Display(tab
9、le2); /显示小“心” void Display(unsigned char dat88) /显示函数 digitalWrite(L1,LOW); /第一列 digitalWrite(H1,dat00); digitalWrite(H2,dat10); digitalWrite(H3,dat20); digitalWrite(H4,dat30); digitalWrite(H5,dat40); digitalWrite(H6,dat50); digitalWrite(H7,dat60); digitalWrite(H8,dat70); delay(1); /延时一小段时间,等待LED被点亮
10、 Clear(); /清空显示去除余晖 digitalWrite(L2,LOW); /第二列 digitalWrite(H1,dat01); digitalWrite(H2,dat11); digitalWrite(H3,dat21); digitalWrite(H4,dat31); digitalWrite(H5,dat41); digitalWrite(H6,dat51); digitalWrite(H7,dat61); digitalWrite(H8,dat71); delay(1); Clear(); digitalWrite(L3,LOW); /第三列 digitalWrite(H1
11、,dat02); digitalWrite(H2,dat12); digitalWrite(H3,dat22); digitalWrite(H4,dat32); digitalWrite(H5,dat42); 56 digitalWrite(H6,dat52); digitalWrite(H7,dat62); digitalWrite(H8,dat72); delay(1); Clear(); digitalWrite(L4,LOW); /第四列 digitalWrite(H1,dat03); digitalWrite(H2,dat13); digitalWrite(H3,dat23); di
12、gitalWrite(H4,dat33); digitalWrite(H5,dat43); digitalWrite(H6,dat53); digitalWrite(H7,dat63); digitalWrite(H8,dat73); delay(1); Clear(); digitalWrite(L5,LOW); /第五列 digitalWrite(H1,dat04); digitalWrite(H2,dat14); digitalWrite(H3,dat24); digitalWrite(H4,dat34); digitalWrite(H5,dat44); digitalWrite(H6,
13、dat54); digitalWrite(H7,dat64); digitalWrite(H8,dat74); delay(1); Clear(); digitalWrite(L6,LOW); /第六列 digitalWrite(H1,dat05); digitalWrite(H2,dat15); digitalWrite(H3,dat25); digitalWrite(H4,dat35); digitalWrite(H5,dat45); digitalWrite(H6,dat55); 57 digitalWrite(H7,dat65); digitalWrite(H8,dat75); del
14、ay(1); Clear(); digitalWrite(L7,LOW); /第七列 digitalWrite(H1,dat06); digitalWrite(H2,dat16); digitalWrite(H3,dat26); digitalWrite(H4,dat36); digitalWrite(H5,dat46); digitalWrite(H6,dat56); digitalWrite(H7,dat66); digitalWrite(H8,dat76); delay(1); Clear(); digitalWrite(L8,LOW); /第八列 digitalWrite(H1,dat07); digitalWrite(H2,dat17); digitalWrite(H3,dat27); digitalWrite(H4,dat37); digitalWrite(H5,dat47); digitalWrite(H6,dat57); digitalWrite(H7,dat67); digitalWrite