Skip to content

制作一个夜灯 - 树莓派

在本课的这一部分,你将为树莓派添加一个LED,并用它来制作一个夜灯。

硬件

夜灯现在需要一个执行器。

执行器是一个LED,即发光二极管,当电流通过时会发光。这是一种数字执行器,具有两种状态:开和关。发送值1会点亮LED,发送值0会关闭LED。LED是一个外部的Grove执行器,需要连接到树莓派上的Grove Base帽。

夜灯的逻辑伪代码如下:

text
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。

一个Grove LED

  1. 选择你喜欢的LED,将其引脚插入LED模块上的两个孔中。

    LED是发光二极管,而二极管是一种只能单向导电的电子器件。这意味着LED必须以正确的方向连接,否则无法工作。

    LED的一个引脚是正极,另一个是负极。LED并不是完全圆形的一端会稍微平一些。稍微平的一侧是负极。当你将LED连接到模块时,请确保圆形一侧的引脚连接到模块外侧标有**+**的插座,而平的一侧连接到模块中间较近的插座。

  2. LED模块有一个旋钮,可以控制亮度。首先用小号十字螺丝刀将其逆时针旋转到最大亮度。

  3. 将Grove电缆的一端插入LED模块上的插座。电缆只能以一种方向插入。

  4. 在树莓派断电的情况下,将Grove电缆的另一端连接到树莓派上Grove Base帽的数字插座D5。这个插座位于GPIO引脚旁边的一排插座中,从左数第二个。

连接到D5插座的Grove LED

编程夜灯

现在可以使用Grove光传感器和Grove LED来编程夜灯。

任务 - 编程夜灯

编程夜灯。

  1. 启动树莓派并等待其启动。

  2. 在VS Code中打开你在本作业前一部分中创建的夜灯项目,可以直接在树莓派上运行,也可以通过Remote SSH扩展连接。

  3. app.py文件顶部的其他import行下面添加以下代码以导入所需的库:

    python
    from grove.grove_led import GroveLed

    from grove.grove_led import GroveLed语句从Grove Python库中导入GroveLed。这个库包含与Grove LED交互的代码。

  4. light_sensor声明之后添加以下代码,以创建管理LED的类实例:

    python
    led = GroveLed(5)

    led = GroveLed(5)这行代码创建了一个连接到引脚D5GroveLed类实例——LED连接的数字Grove引脚。

    💁 每个插座都有唯一的引脚编号。引脚0、2、4和6是模拟引脚,引脚5、16、18、22、24和26是数字引脚。

  5. while循环内添加一个检查,在time.sleep之前检查光线水平并打开或关闭LED:

    python
    if 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。

  6. 在VS Code终端中运行以下命令以运行你的Python应用程序:

    sh
    python3 app.py

    光线值将输出到控制台。

    text
    pi@raspberrypi:~/nightlight $ python3 app.py 
    Light level: 634
    Light level: 634
    Light level: 634
    Light level: 230
    Light level: 104
    Light level: 290
  7. 遮挡和移开光传感器。注意当光线水平为300或以下时,LED会点亮;当光线水平大于300时,LED会熄灭。

    💁 如果LED没有点亮,请确保它连接的方向正确,并且旋钮已调到最大亮度。

💁 你可以在code-actuator/pi文件夹中找到这段代码。

😀 你的夜灯程序成功了!