我想输出“检测到火焰”或“未检测到火焰”,但是我不知道如何在代码中实现。我已经看到了来自Google的代码,但是他们正在使用
GPIO.add_event_detect(17,GPIO.RISING, callback = mycallback, bouncetime = 600)
仅在检测到火焰时有效。
答案 0 :(得分:1)
在您的示例中,您正在检测上升边缘(引脚从低到高)。 下降边缘是相反的,因此您可以使用以下命令触发单独的回调:
GPIO.add_event_detect(17, GPIO.FALLING, callback=other_callback, bouncetime=600)
但是,我建议您使用GPIO Zero而不是RPi.GPIO,因为您可能会发现它更直观:
from gpiozero import InputDevice
sensor = InputDevice(17)
while True:
sensor.wait_for_active()
print("Fire!")
sensor.wait_for_inactive()
print("No fire")
您可能会发现逻辑是相反的(如果没有火,则说“火”),在这种情况下,请使用InputDevice(17, pull_up=True)
或者,上面的代码也可以使用if sensor.is_active
或使用回调机制sensor.when_activated = callback
。有关更多信息,请参见gpiozero docs。