GPIO.wait_for_edge срабатывает случайным образом - PullRequest
0 голосов
/ 16 марта 2019

Я собрал Raspberry Pi, чтобы послать несколько запросов по нажатию мгновенного переключателя.все работает отлично и, как и ожидалось, пока я не понял, что включение и выключение вилок поблизости также запускает программу.Я очень плохо знаком с Python, но учусь по ходу дела.вот соответствующие части моего кода

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP)

try
  while True:
    print("waiting for input")
    GPIO.wait_for_edge(10, GPIO.FALLING)

       #do requests

except KeyboardInterrupt:
    GPIO.cleanup()
GPIO.cleanup()

Я где-то читал, что это могут быть провода, которые я использую для кнопки, которые действуют как антенна и создают падающий фронт, но не уверен, какподтвердить или исправить это.

Кроме того, стоило бы добавить задержку time.sleep, а затем перепроверить, чтобы убедиться, что ребро по-прежнему истинно после короткой задержки?

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

Также стоит отметить, что я использую один из малиновых писей первого поколения, так как он не нужен для поднятия тяжестей!

1 Ответ

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

На тот случай, если кто-то еще наткнется на это, я запустил в моей программе время ожидания в 0,3 секунды после нажатия кнопки, а затем проверил, является ли он по-прежнему падающим фронтом (низкий уровень).

Если это так, продолжайте с моим желаемым кодом, как нажатием кнопки, если нет, то ничего не делайте как его вмешательство.

Означает ли это, что я должен удерживать свой мгновенный выключатель в течение примерно секунды, чтобы убедиться, что он прошел мой чек, но не важен!

while True:
   print("waiting for input")
   GPIO.wait_for_edge(10, GPIO.FALLING)
   time.sleep(.3)
   if GPIO.input(10) == GPIO.LOW:
      #do the thing i want as it's a button press
   else:
      #do nothing as its interference
...