Как добавить условный оператор к датчику пламени?

#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 для получения дополнительной информации.