制作一个夜灯 - 树莓派
在本课的这一部分,你将为树莓派添加一个LED,并用它来制作一个夜灯。
硬件
夜灯现在需要一个执行器。
执行器是一个LED,即发光二极管,当电流通过时会发光。这是一种数字执行器,具有两种状态:开和关。发送值1会点亮LED,发送值0会关闭LED。LED是一个外部的Grove执行器,需要连接到树莓派上的Grove Base帽。
夜灯的逻辑伪代码如下:
Check the light level.
If the light is less than 300
Turn the LED on
Otherwise
Turn the LED off连接LED
Grove LED是一个模块,提供多种颜色的LED供选择。
任务 - 连接LED
连接LED。

选择你喜欢的LED,将其引脚插入LED模块上的两个孔中。
LED是发光二极管,而二极管是一种只能单向导电的电子器件。这意味着LED必须以正确的方向连接,否则无法工作。
LED的一个引脚是正极,另一个是负极。LED并不是完全圆形的一端会稍微平一些。稍微平的一侧是负极。当你将LED连接到模块时,请确保圆形一侧的引脚连接到模块外侧标有**+**的插座,而平的一侧连接到模块中间较近的插座。
LED模块有一个旋钮,可以控制亮度。首先用小号十字螺丝刀将其逆时针旋转到最大亮度。
将Grove电缆的一端插入LED模块上的插座。电缆只能以一种方向插入。
在树莓派断电的情况下,将Grove电缆的另一端连接到树莓派上Grove Base帽的数字插座D5。这个插座位于GPIO引脚旁边的一排插座中,从左数第二个。

编程夜灯
现在可以使用Grove光传感器和Grove LED来编程夜灯。
任务 - 编程夜灯
编程夜灯。
启动树莓派并等待其启动。
在VS Code中打开你在本作业前一部分中创建的夜灯项目,可以直接在树莓派上运行,也可以通过Remote SSH扩展连接。
在
app.py文件顶部的其他import行下面添加以下代码以导入所需的库:pythonfrom grove.grove_led import GroveLedfrom grove.grove_led import GroveLed语句从Grove Python库中导入GroveLed。这个库包含与Grove LED交互的代码。在
light_sensor声明之后添加以下代码,以创建管理LED的类实例:pythonled = GroveLed(5)led = GroveLed(5)这行代码创建了一个连接到引脚D5的GroveLed类实例——LED连接的数字Grove引脚。💁 每个插座都有唯一的引脚编号。引脚0、2、4和6是模拟引脚,引脚5、16、18、22、24和26是数字引脚。
在
while循环内添加一个检查,在time.sleep之前检查光线水平并打开或关闭LED:pythonif light < 300: led.on() else: led.off()这段代码检查
light值。如果值小于300,则调用GroveLed类的on方法,向LED发送数字值1,点亮LED。如果光线值大于或等于300,则调用off方法,发送数字值0,关闭LED。💁 这段代码应该与
print('Light level:', light)行保持相同的缩进级别,以确保它在while循环内!💁 向执行器发送数字值时,值0表示0V,值1表示设备的最大电压。对于树莓派使用的Grove传感器和执行器,值1的电压为3.3V。
在VS Code终端中运行以下命令以运行你的Python应用程序:
shpython3 app.py光线值将输出到控制台。
textpi@raspberrypi:~/nightlight $ python3 app.py Light level: 634 Light level: 634 Light level: 634 Light level: 230 Light level: 104 Light level: 290遮挡和移开光传感器。注意当光线水平为300或以下时,LED会点亮;当光线水平大于300时,LED会熄灭。
💁 如果LED没有点亮,请确保它连接的方向正确,并且旋钮已调到最大亮度。
💁 你可以在code-actuator/pi文件夹中找到这段代码。
😀 你的夜灯程序成功了!