API-内部设备
GPIO Zero 还提供了几个"内部"设备,它们代表操作系统本身提供的功能。这些设备可用于响应诸如时间、网络服务器是否可用等事件。
这些设备提供了与 GPIO 设备类似且兼容的 API,因此内部设备事件可以像输入设备一样触发 GPIO 输出设备的更改。就像 Button 对象在按下时处于活动状态并可在状态变化时触发其他设备一样,TimeOfDay 对象在特定时间段内处于活动状态。
考虑以下代码,其中 Button 对象用于控制 LED 对象:
from gpiozero import LED, Button
from signal import pause
led = LED(2)
btn = Button(3)
btn.when_pressed = led.on
btn.when_released = led.off
pause()
现在考虑以下示例,其中 TimeOfDay 对象使用相同的方法控制 LED:
from gpiozero import LED, TimeOfDay
from datetime import time
from signal import pause
led = LED(2)
tod = TimeOfDay(time(9), time(10))
tod.when_activated = led.on
tod.when_deactivated = led.off
pause()
在这里,LED 不是由按钮控制,而是由时间控制。当时间达到上午 9:00 时,LED 亮起,在上午 10:00 时熄灭。
像 Button 对象一样,内部设备如 TimeOfDay 对象具有 value、values、is_active、when_activated 和 when_deactivated 属性,因此使用其他范式的替代方法也可以工作。
备注
请注意,虽然内部设备的构造函数参数中有 pin_factory,并且需要有效,但所选的引脚工厂不会产生任何实际差异。例如,目前无法读取远程 Pi 的 CPU 温度。