В последнее время я много играл с Raspberry Pi. Но у меня есть проблема.
Когда я настраиваю входной контакт, чтобы проверить, посылается ли на него электричество или нет, это дает мне довольно нестабильные ответы.
Несколько замечаний, которые я сделал, чтобы прояснить мою проблему:
Когда я подключаю цепь, и электричество поступает на входной контакт, значение, которое он мне дает, постоянно ИСТИНА или 1.
Когда я разрываю цепь, удаляя светодиод, который является ее частью (когда входное значение должно быть 0), это дает мне случайные значения, смещаясь между 0 и 1.
Когда я удаляю все кабели из моего Pi, это дает мне постоянное значение 0
Если у меня отсоединены все кабели GPIO, это дает мне значение 0, но если я просто коснусь входного штырька металлической линией, ведущей к электричеству, (не приводя ни к чему на другом конце), он снова начнет со случайных значений. Это не дает мне случайные значения, если я не подключен к выходному контакту. Он не должен никуда вести, он просто должен касаться выходного контакта. И какой-то другой кусок металла должен касаться входного контакта. Нет никакой связи между ними.
Интересно, почему он начинает давать мне случайные значения, так как вывод Input GPIO касается любого металла.
И еще более интересно, почему это дает мне постоянные единицы или ИСТИНА, когда я на самом деле посылаю электричество?
Ответы:
Проблема
Правда, но что происходит, когда заземление подключено к входному контакту GPIO? Значение, которое он дал бы, всегда будет ложным .
Когда ничего не подключено, вывод находится в «плавающем» состоянии, а вывод не предсказуем. он находится в неопределенном состоянии, он не равен ни 0, ни 1, и обнаруженное значение может странным образом измениться, следовательно, ваши случайные результаты. В электронике это называется третьим состоянием .
Еще немного подробностей из статьи в Википедии :
Общее решение
Решением является понижающий резистор . Думайте об этом как о дополнительном компоненте, который ничего не делает, когда линия получает 0 или 1. Но когда линия простаивает, она внезапно начинает действовать и дает 0.
Раствор Raspberry Pi
К счастью для вас, Rpi имеет встроенный раскрывающийся список, вам нужно активировать его программно. Вот скрипт Python для этого:
Примечание
Не подключайте питание напрямую к контакту, так как это опасно! Убедитесь, что в цепи достаточно сопротивления. Кроме того, никогда не подключайте питание 5 В непосредственно к GPIO, поскольку оно принимает только 3,3 В.
источник