Как добавить условное утверждение к датчику пламени? - PullRequest
0 голосов
/ 29 марта 2019

Я хотел вывести «пламя обнаружено» или «пламя не обнаружено», но я не знаю, как реализовать это в коде. Я видел коды от Google, но они используют

GPIO.add_event_detect(17,GPIO.RISING, callback = mycallback, bouncetime = 600)

, который работает только при обнаружении пламени.

1 Ответ

1 голос
/ 29 марта 2019

В вашем примере вы обнаруживаете нарастающий край (штифт идет от низкого к высокому). падающий край противоположен, поэтому вы можете запустить отдельный обратный вызов с помощью:

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

...