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
。
如果没有任何东西拉动值 HIGH
或 LOW
,噪声(在空气中?)可以将输入移动到任何电压,因此输入将不会被定义。
现在,如果您使用 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 电阻,它就会稳定下来。
我是 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
。
如果没有任何东西拉动值 HIGH
或 LOW
,噪声(在空气中?)可以将输入移动到任何电压,因此输入将不会被定义。
现在,如果您使用 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 电阻,它就会稳定下来。