RaspberryPi - 检查断开引脚的状态

RaspberryPi - check state of disconnected pins

我想写脚本来检测哪个引脚与哪个引脚相连。 例如(BCM 模式)我将 GPIO2 与 GPIO3 连接,将 GPIO4 与 GPIO5 连接。我的想法是检查每个是否有连接。

for i in range(2,6):
    for j in range(2,6):
        check(i,j)

如果所有引脚都已连接,则可以正常工作,但如果它们中的相同引脚断开连接,则代码打印同样疯狂的输出。我认为所有输入都应该 return 0,但正如您所见,它们都处于 HIGHT 状态。

输出:

1 2 3
0 2 4
0 2 5
1 3 2
0 3 4
0 3 5
1 4 2
1 4 3
0 4 5
1 5 2
1 5 3
0 5 4

代码:

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
for i in range(2, 6):
    for j in range(2, 6):
        if i == j:
            continue
        GPIO.setup([2, 3, 4, 5], GPIO.OUT, initial=GPIO.LOW)
        GPIO.setup(i, GPIO.OUT, initial=GPIO.HIGH)
        GPIO.setup(j, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
        sleep(0.1)
        if GPIO.input(j):
            l.add(tuple(sorted((i, j))))
print(l)

我认为您遇到的问题与 pull-up 和 pull-down 电阻有关。它们用于确保 "known" 级别的数字值(1 或 0)。

http://www.resistorguide.com/pull-up-resistor_pull-down-resistor/

对此有很多解决方案 "problem" - 这里有一个适用于 Arduino 的解决方案,但实际上每个数字 IC 都有这些 "problem" 并且数据表应该说明如何处理未连接的引脚以及在万一情况下会发生什么让他们悬空。

https://electronics.stackexchange.com/questions/35704/arduino-has-an-input-value-in-disconnected-pin