RaspberryPi - 检查断开的引脚状态

时间:2018-03-27 19:43:02

标签: raspberry-pi gpio

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

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

enter image description here

如果所有引脚都已连接,则可以正常工作,但如果它们相同则断开代码打印同样疯狂的输出。我认为所有输入都应该返回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)

1 个答案:

答案 0 :(得分:1)

我认为你遇到的问题与上拉和下拉电阻有关。它们用于确保"已知"数字值(1或0)。

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

这个问题有很多解决方案"问题" - Arduino是一个,但实际上每个数字IC都有这些"问题"和数据表应该说明如何处理未连接的引脚以及在将它们悬空时会发生什么。

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