Добрый день всем! Первый вопрос, извините за каждую ошибку, которую я совершаю.
У меня 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 с
Как это возможно? Это моя программа не работает, когда эти строки комментируются?
Большое спасибо за каждый совет, который вы можете мне предложить.