2.2 板载LED灯D13周期性闪亮

了解了Arduino Uno开发板与计算机通信,也许你还想知道如何让Arduino Uno开发板单独地干点什么事,比如让LED灯一闪一闪的。那么如何让LED灯闪亮起来?如何调整LED灯闪亮的速度呢?现在,我们就来了解一下闪灯实验。

2.2.1 实验描述

(1)LED灯D13点亮1s,熄灭1s,如此循环。

(2)LED灯D13点亮0.1s,熄灭0.1s,点亮0.1s,熄灭1.7s,如此循环。

(3)LED灯D13点亮0.5s,熄灭0.5s,如此循环。

AU02的电路原理图、电路板图和实物图如图2.3所示。

img

图2.3 AU02的电路原理图、电路板图和实物图

2.2.2 知识要点

1.闪灯

闪灯即让灯周期性点亮后熄灭。所谓周期性指往复循环、具有一定的规律、每隔一段时间必然会发生的特性。闪灯能起到警示作用,并能传递某种信息,如高楼上的红色闪灯是航空障碍物标志灯,汽车上的黄色双闪灯是临时故障或危险事件报警灯。本实验让Arduino Uno开发板上的LED灯D13有规律地闪亮起来。

2.组装与焊接

在电路板AU02上安装发光二极管,安装在电路板上有字符的一面。发光二极管有正负极之分,长的引脚为正极,短的引脚(圆圈上有缺口的一侧)为负极。发光二极管的作用是发光,如果发光二极管正负极安装反了,发光二极管将不发光。发光二极管的安装高度为贴近电路板。

发光二极管的焊接方法:先用烙铁尖同时加热元件引脚和焊盘,然后将焊锡丝放到烙铁尖上,直到熔化的焊锡填满焊盘为止,然后用偏口钳剪掉多余的元件引脚。

在电路板AU02上安装1206型贴片电阻,安装在电路板上有焊盘的一面。贴片电阻的焊接方法:先在一侧焊盘上镀锡,然后焊接好贴片电阻一端,最后焊接好贴片电阻另一端。

在电路板AU02上安装长为11.5mm的排针,安装在电路板上有焊盘的一面,排针插入小孔内深度约为1.5mm处,即在电路板上有字符的一面不露出排针引脚。焊接完毕后去掉排针上的连接塑料,这样做的目的是方便将电路板上的排针插入Arduino Uno开发板的插槽内。

注:电路板上,没有绝缘缝隙的两个焊盘可以用焊锡焊接在一起,如果两个焊盘之间有绝缘缝隙则不可以用焊锡焊接在一起。

本书中所有电路板上的排针、贴片电阻、发光二极管均按上述方法安装并焊接。

3.板载LED灯D13(L)

在Arduino Uno开发板上的字符L处有一只连接数字端口13的LED灯,如图2.4所示。当数字端口13输出数字1时,板载LED灯点亮,当数字端口13输出数字0时,板载LED灯熄灭。本实验就是要让这只LED灯闪亮起来。

img

图2.4 Arduino Uno开发板上字符L处的LED灯

2.2.3 编程要点

1.语句pinMode(13,OUTPUT);与pinMode(13,INPUT);

在void setup(){}的花括号内,常用语句pinMode(13,OUTPUT);表示设置数字端口13为输出模式,用语句pinMode(13,INPUT);表示设置数字端口13为输入模式。OUTPUT表示输出,INPUT表示输入,在Arduino编程语言中,输出就是开发板上的微控制器给设备或端口发出信号,输入就是开发板上的微控制器接收设备或端口发来信号。

2.语句digitalWrite(13,1);与digitalWrite(13,0);

语句digitalWrite(13,1);表示数字端口13输出高电平。

语句digitalWrite(13,0);表示数字端口13输出低电平。

数字1表示高电平。输出高电平表示输出电压约为5V,语句digitalWrite(13,1);与语句digitalWrite(13,HIGH);效果相同,HIGH表示高电平。

数字0表示低电平。输出低电平表示输出电压约为0V,语句digitalWrite(13,0);与语句digitalWrite(13,LOW);效果相同,LOW表示低电平。

3.语句digitalRead(13);与!digitalRead(13);

语句digitalRead(13);表示读取数字端口13的状态(高电平或低电平)。

语句!digitalRead(13);表示读取数字端口13的状态并取反,如果数字端口13为高电平,取反之后将变为低电平;如果为低电平,取反之后将变为高电平。

语句digitalWrite(13,!digitalRead(13));表示数字端口13输出状态取反。

4.Arduino Uno开发板数字输出端口的编程方法

第一步,在setup函数中,设置数字端口为输出模式。

img

第二步,在loop函数中,设置数字端口输出电平,为控制输出速度,加入延时语句。

img

2.2.4 程序设计

1.代码一

(1)程序参考

img

(2)实验结果

LED灯D13点亮1s,熄灭1s,如此循环。

2.代码二

(1)程序参考

img
img

(2)实验结果

LED灯D13点亮0.1s,熄灭0.1s,点亮0.1s,熄灭1.7s,如此循环,从视觉效果上看为双闪灯。

3.代码三

(1)程序参考

img

(2)实验结果

LED灯D13点亮0.5s,熄灭0.5s,如此循环,从视觉效果上看,比代码一实验结果的闪灯速度加快了。

2.2.5 拓展和挑战

(1)让板载LED灯D13点亮0.1s,熄灭0.1s,然后再点亮0.1s,熄灭0.1s,接下来再点亮0.1s,熄灭1.5s,如此循环。

(2)让LED灯D13点亮0.1s,熄灭0.1s,然后让LED灯D12点亮0.1s,熄灭0.1s,接下来让LED灯D11点亮0.1s,熄灭0.1s,如此循环。