概述
上一篇 我们通过控制GPIO口输出高低电平来控制一只 LED 的亮灭。这次我们来控制 LED 的亮度,灯由暗渐渐变亮,再由亮渐渐边暗,反复循环,也就是呼吸灯的效果。按 Ctrl+C结束程序。
通过本节课,你能学习到:
脉冲宽度调制技术
所需硬件
树莓派 x1
面包板 x1
杜邦线 x2
LED灯 x1
名称解释
我们知道,通过LED的电流越大,LED越亮,电流越小,LED越暗。如果可以控制输出电流大小就可以控制LED的明暗了。但是树莓派的各引脚并没有直接调整输出电流大小的功能,要想别的办法。这里,我们需要了解以下2个名词:
脉宽调制(PWM)
脉冲宽度调制(PWM)是一种利用数字手段获得模拟结果的技术。数字控制用于创建方波,电平在高和低之间切换。简单的说,PWM技术就是不停的通断电路并控制通断持续的时间片段长度,从而控制用电器在单位时间内实际得到的电能。再简单点说,如果你的手足够快,打开电灯开关后马上关闭,如果这个时间间隔足够短,灯丝还没有全部亮起来就暗下去了。你再次打开电灯再关闭,再打开再关闭……如果你一直保持相同的频率,那么电灯应该会保持一个固定的亮度不变。理论上,你可以通过调整开灯持续的时间长度和关灯持续的时间长度的比例就能得到不同亮度了。
“导通时间”的持续时间称为脉冲宽度。要获得不同的模拟值,可以更改该脉冲的宽度。
占空比
一个脉冲循环内通电时间所占的比例。
连线图
在开始连接硬件电路之前,首先要做的事是将树莓派电脑关机,并断开电源。因为如果树莓派主板带电的时候,进行插接电路可能会导致电子元器件的烧毁,所以一定要记住:连接电路的时候主板必须断电。本次的接线图和上一篇(第一个GPIO控制LED小灯的程序)连线图完全一样
图片使用 Fritzing 绘制,更多示例图片请到 Fritzing官网 浏览。
电路原理图
示例代码截图防缩进失效!!!
保存文件为
breathing-light.py
,并运行之。
sudo python breathing-light.py
最终效果