Raspberry Pi B+ GPIO 输入值在未连接的情况下发生变化

Raspberry Pi B+ GPIO input value is changing without connecting

我是 Raspberry Pi 编程新手。使用 Raspberry Pi 模型 B+ 我试图通过 GPIO 引脚读取输入值。但最终 GPIO 引脚值交替 HIGH and LOW(没有任何统一模式)。

为什么会这样?应该是这样吗?我一直期待在 GPIO 引脚上通电 setup GPIO.IN 后,它的值将是 0,只有当电源接通时,它才会是 1

这是我编写的用于检查 PIN 状态的示例 python 代码:

import RPi.GPIO as GPIO
import time

PINS = [11,13,15,16,18,22,36,37]
GPIO.setmode(GPIO.BOARD)

for pin in PINS:
    GPIO.setup(pin,GPIO.IN)

while True:
    try:
        for pin in PINS:
            print  pin, “ input value is  : “, GPIO.input(pin)
        time.sleep(2)
        print “checking pin status "
    except (KeyboardInterrupt, SystemExt)
        GPIO.cleanup()

输出如下:

checking pin status 
11 input value is  : 1
13 input value is  : 1
15 input value is  : 1 
16 input value is  : 1
18 input value is  : 1
22 input value is  : 1
36 input value is  : 1
37 input value is  : 1
checking pin status 
11 input value is  : 0
13 input value is  : 0
15 input value is  : 0 
16 input value is  : 0
18 input value is  : 0
22 input value is  : 0
36 input value is  : 0
37 input value is  : 1
checking pin status 
11 input value is  : 1
13 input value is  : 1
15 input value is  : 1 
16 input value is  : 1
18 input value is  : 1
22 input value is  : 0
36 input value is  : 0
37 input value is  : 0
checking pin status 
11 input value is  : 1
13 input value is  : 1
15 input value is  : 1 
16 input value is  : 1
18 input value is  : 1
22 input value is  : 1
36 input value is  : 1
37 input value is  : 1

那么,如何通过这些PIN读取输入信号呢?我的 Raspberry Pi 主板有问题吗?

这与软件无关,是硬件。

为什么你期望未连接时输入是 LOW,为什么不是 HIGH。 如果没有任何东西拉动值 HIGHLOW,噪声(在空气中?)可以将输入移动到任何电压,因此输入将不会被定义。

现在,如果您使用 pull-up/pull-down 电阻配置输入,那么即使没有连接任何东西,它也会有一个稳定的值。

所以,关于你的问题:

So, how can I read a input signal through these PIN?

要读取输入信号,您首先必须有一个输入信号,因此请将一个连接到您的输入引脚。

Is it any problem on my Raspberry Pi Board?

这还不足以知道它是否有。

这是正常的,您没有将 GPIO 引脚连接到任何东西,所以它们是 "floating",这意味着它会随机变化。

在 GPIO 上接一个 pull-down 电阻,它就会稳定下来。