#raspberry-pi #gpio
#raspberry-pi #gpio
Вопрос:
Я хотел вывести «обнаружено пламя» или «пламя не обнаружено», но я не знаю, как реализовать это в коде. Я видел коды из Google, но они используют
GPIO.add_event_detect(17,GPIO.RISING, callback = mycallback, bouncetime = 600)
который работает только при обнаружении пламени.
Ответ №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 для получения дополнительной информации.