Проблема с мониторингом сигналов на Raspberry-Pi - PullRequest
0 голосов
/ 18 октября 2019

Добрый день всем! Первый вопрос, извините за каждую ошибку, которую я совершаю.

У меня Raspberry Pi, который слушает 2 сигнала. После некоторых тестов я заметил некоторый шум, который заставляет мои сигналы включаться и выключаться несколько раз, когда контакты остаются плавающими, поэтому я написал небольшую программу на Python, чтобы увидеть, как долго эти сигналы включены:

    ##### SIGNAL DETECT LOOP #####
    while 1:
        time.sleep(0.05)

        #S1 CHECK
        if GPIO.input(12):    #S1 ON
            temp_str = ' S1 is ON '
            print(temp_str)
            if S1_FLAG != 1:
                start_S1 = time.perf_counter()
                S1_FLAG = 1
        else:
            if S1_FLAG != 0:   #S1 OFF
                end_S1 = time.perf_counter()
                temp_str = 'S1  '+str(end_S1-start_S1)+'  sec'
                print(temp_str)
                S1_FLAG = 0

То же самое для S2, в том же цикле while, в GPIO.input (11), о котором не сообщалось, просто чтобы оно было коротким.

Я запустил этот код и заметил, что сигнал был включен примерно на 0,5 секунды. Я написал первый «print»

temp_str = ' S1 is ON '  
print(temp_str)

просто чтобы проверить на видео, как все идет, но после некоторого теста я решил прокомментировать это и сделать некоторые другие тесты, и произошло нечто странное: просто комментируя эти 2 строкисделал отсчет времени до 3 секунд. Комментируя эти строки для S1, но оставляя их незакомментированными для S2, мы получили следующие результаты:

  • S1 плавающий, S2 подключен к земле: S1 включен на 3сек
  • S1 подключен к земле, S2 плавающий: S2 ВКЛ на 0,5 с
  • S1 и S2 с плавающей точкой: оба сигнала ВКЛ на 0,5 с

Как это возможно? Это моя программа не работает, когда эти строки комментируются?

Большое спасибо за каждый совет, который вы можете мне предложить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...