制作一个夜灯 - 虚拟物联网硬件
在本节课程中,您将为虚拟物联网设备添加一个LED,并用它来创建一个夜灯。
虚拟硬件
夜灯需要一个执行器,在 CounterFit 应用中创建。
这个执行器是一个 LED。在物理物联网设备中,它是一个发光二极管,当电流通过时会发光。这是一个数字执行器,具有两种状态:开和关。发送值1会点亮LED,发送值0会关闭它。
夜灯逻辑的伪代码如下:
Check the light level.
If the light is less than 300
Turn the LED on
Otherwise
Turn the LED off在 CounterFit 中添加执行器
要使用虚拟LED,您需要将其添加到 CounterFit 应用中。
任务 - 在 CounterFit 中添加执行器
将LED添加到 CounterFit 应用中。
确保 CounterFit 网页应用正在运行(从本作业的上一部分开始)。如果没有运行,请启动它并重新添加光传感器。
创建一个LED:
在 Actuator 面板的 Create actuator 框中,点击 Actuator type 下拉框并选择 LED。
将 Pin 设置为 5。
点击 Add 按钮,在引脚5上创建LED。

LED将被创建并显示在执行器列表中。

创建LED后,您可以使用 Color 选择器更改颜色。选择颜色后,点击 Set 按钮以更改颜色。
编程夜灯
现在可以使用 CounterFit 光传感器和LED来编程夜灯。
任务 - 编程夜灯
编程夜灯。
打开您在本作业上一部分中创建的夜灯项目(VS Code)。如果需要,终止并重新创建终端以确保它使用虚拟环境运行。
打开
app.py文件。在
app.py文件顶部的其他import行下方,添加以下代码以导入所需的库:pythonfrom counterfit_shims_grove.grove_led import GroveLedfrom counterfit_shims_grove.grove_led import GroveLed语句从 CounterFit Grove shim Python 库中导入GroveLed。该库包含与 CounterFit 应用中创建的LED交互的代码。在
light_sensor声明之后,添加以下代码以创建管理LED的类实例:pythonled = GroveLed(5)这行代码
led = GroveLed(5)创建了一个GroveLed类的实例,连接到引脚 5,即 CounterFit Grove 中连接LED的引脚。在
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 循环内!在 VS Code 的终端中运行以下命令以运行您的 Python 应用:
shpython3 app.py光线值将输出到控制台。
text(.venv) ➜ GroveTest python3 app.py Light level: 143 Light level: 244 Light level: 246 Light level: 253更改 Value 或 Random 设置,使光线水平在300以上和以下变化。LED将会亮起和熄灭。
💁 您可以在 code-actuator/virtual-device 文件夹中找到此代码。
😀 您的夜灯程序成功了!