GPIO.input в цикле while без сна

Мне нужно быстро поймать импульс GPIO в цикле while

while True:
    if GPIO.input(11) == 1:
        sys.exit(0)

импульс настолько велик (магнит, проходящий через переключатель), что если я добавлю сон в то время, просто даже .5, в некоторых случаях это пропустит значение. Без одного, даже с внутренним раскрывающимся списком, он мгновенно получит случайную ложь 1. Есть ли способ удалить сон и сделать его надежным? Может ли это решить что-то внешнее раскрытие?

4 голоса | спросил Rando Hinn 22 32017vEurope/Moscow11bEurope/MoscowWed, 22 Nov 2017 01:06:52 +0300 2017, 01:06:52

3 ответа


2

Опрос для ввода на любом языке является плохим решением.

Python упрощает перехват прерываний, например.

    # set an interrupt on a falling edge and wait for it to happen
    GPIO.wait_for_edge(INT, GPIO.FALLING)

ПРИМЕЧАНИЕ. Это блокирует процесс, пока не произойдет прерывание, поэтому лучше всего сделать это в фоновом режиме.

ответил Milliways 22 32017vEurope/Moscow11bEurope/MoscowWed, 22 Nov 2017 01:57:28 +0300 2017, 01:57:28
5

Любая библиотека GPIO, которую вы решите использовать, почти наверняка обеспечит возможность прерывания.

Используйте эту возможность прерывания, чтобы сообщить вам, когда уровень GPIO изменяется от 0 до 1 (передний фронт), или от 1 до 0 (задний фронт) или при каждом изменении.

Кстати, я использовал датчики эффекта Холла для обнаружения магнитов, вращающихся на валу со скоростью около 9000 об /мин (из памяти).

ответил joan 22 32017vEurope/Moscow11bEurope/MoscowWed, 22 Nov 2017 01:19:24 +0300 2017, 01:19:24
0

В зависимости от приложения вы можете рассмотреть аппаратное решение. Вы можете обнаружить очень короткий импульс и использовать его для запуска моностабильности, которая связывается с Pi. Внешние аппаратные средства могут выполнять обработку сигналов и справляться с такими вещами, как контакт-отскок в коммутаторах. Насколько чистый ваш входной сигнал?

ответил Bernard Peek 27 12017vEurope/Moscow11bEurope/MoscowMon, 27 Nov 2017 20:38:07 +0300 2017, 20:38:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132