PWN流水灯
设有三个小灯A、B、C 事先处于熄灭状态,接着A 灯开始由暗到亮,再由亮变暗,A 灯熄灭之后B 灯开始由暗变亮,再由亮变暗,B 灯熄灭之后C 灯开始由暗变亮,再由亮变暗,如此循环。
知识准备
PWM变频技术
数字信号只有高、低电位两种状态,如同第一章的LED闪烁程序,把一只LED接上Arduino的第13引脚,每隔0.5s切换高低电位,LED将不停闪烁。这是一种以一秒钟为周期的切换信号,频率就是1Hz。提高切换频率(通常指30Hz以上),将能仿真模拟电压高低变化的效果。以下图的1kHz为例,若脉冲宽度(开启时间)为周期的一半(称为50%工作周期),就相当于输出高电位的一半电压;10%工作周期,就相当于输出0.5V。
如此,不需采用电阻降低电压,电能不会在变换的过程被损耗掉。这种在数字系统上“仿真”模拟输出的方式,称为脉冲宽度调制(Pulse Width Modulation,简称PWM)。某些强调省电的变频式洗衣机和冷气机等家电,也是运用PWM原理来调节机器的运转速度。
PWM的计算方式如下。
因此,在5V电源的情况下输出3.3V,从上面的式子可知:
根据计算结果得知,5V电源的66%PWM脉冲宽度就相当于输出3.3V。
PWM指令和默认频率
Arduino的analogWrite指令可以指挥输出PWM信号,指令格式如下:
1 |
|
其中端口号必须是3、5、6、9、10或11这六个数字端口的其中之一;模拟数值介于0255之间,代表输出介于05V之间的仿真模拟电压值。
此外,Arduino微电脑板预设采用1kHz和500Hz两组不同的PWM输出频率,控制电机时,一般采用1kHz频率:
- 引脚5、6:约1kHz(由Timer 0系统定时器决定,这是delay()等函数的基准时间,不建议更改)
- 引脚3、11(Timer 2)以及9、10(Timer 1):约500Hz
LED接法
led的工作电压
颜色 | 正向电压 |
---|---|
红色 | 1.7V ~ 2.2V |
橙色 | 2.0V |
黄色 | 2.1V |
绿色 | 2.2V |
蓝色 | 3.2V ~ 3.8V |
白色 | 3.2V ~ 3.8V |
LED的工作电压约2V,但Arduino的输出电压是5V,我们应该在Arduino的输出和LED之间连接一个限流电阻。连接方式有两种。
左边的接法是由微处理器提供负载所需电流,一般称之为源流(sourve current);
右边的接法是由电源(Vcc)提供电流,此谓之替流(sink current)
电阻计算
为计算方便,LED工作电压通常取2V,电流去10mA(注:高亮度LED的工作电压约3V,工作电流约30mA)。
设计方案
简简单单设计完成
材料清单
材料 | 数量 |
---|---|
Arduino Uno板 | 1 |
面包板 | 1 |
LED | 3 |
1kΩ电阻 | 3 |
杜邦线 | 若干 |
代码
1 |
|
成果展示
此视频可以在电脑网页中加载(推荐chrome、Firefox),手机请用Firefox或chrome打开