Raspberry Pi GPIO输入引脚提供随机值


12

最近我一直在玩Raspberry Pi。但是我有一个问题。

当我设置一个输入引脚以检查是否有电时,它给我的答案很不稳定。

为了阐明我的问题,我做了一些观察:

  1. 当我连接电路并且电流流到输入引脚时,它给我的值始终为TRUE或1。

  2. 当我通过移除一部分LED来断开电路时(当输入值应为0时),它为我提供了随机值,在0到1之间移动。

  3. 当我从Pi上拔下所有电缆时,它的值始终为0

  4. 如果我卸下了所有GPIO电缆,它的值将为0,但是如果我只是用一根导电金属片(另一端没有任何东西)触摸输入引脚,它将再次从随机值开始。除非我也有东西连接到输出引脚,否则它不会给我随机值。它不必在任何地方引线,而只需触摸输出引脚即可。其他金属必须接触输入引脚。它们之间完全没有连接。

我不知道为什么当输入GPIO引脚接触到任何金属时,为什么它开始给我随机值。

更有趣的是,当我实际给它供电时,为什么给我一致的1或TRUE?


编辑第4条语句:除非我也将某些东西连接到outputpin,否则它不会给我随机值。它不必在任何地方引线,而只需触摸输出引脚即可。其他金属必须接触输入引脚。他们之间没有任何联系
Gustaf 2014年

欢迎来到Raspberry Pi Stack Exchange!您知道您可以编辑您的问题来修正该信息,而不是发表评论吗?另外,不时弹出聊天窗口。我们一直很喜欢新公司,它会帮助您证明该网站是有用的,正在发展的并且拥有庞大的用户群。谢谢!
RPiAwesomeness

1
这是因为引脚悬空。更多信息,请访问electronics.stackexchange.com/a/35705
Gerben 2014年

Answers:


14

问题

当我连接电路并且电流流到输入引脚时,它给我的值始终为TRUE或1。

没错,但是当接地连接到GPIO输入引脚时会发生什么?它给出的值将始终为false

  • 当电源连接到输入引脚时:输入引脚检测到1(真)。
  • 当接地连接到输入引脚时:输入引脚检测到0(错误)。
  • 当输入引脚未连接任何东西时:输入引脚会混乱。

当没有任何连接时,引脚处于“浮动”状态,并且输出不可预测。它处于未定义状态,既不是0也不是1,并且检测到的值可能会发生奇怪的变化,因此会产生随机结果。在电子学中,这被称为第三状态

维基百科文章的更多细节:

在数字电路中,输出电路不会将高阻抗(也称为Hi-Z,三态或浮动)输出驱动到任何定义的逻辑电平。信号既不驱动为逻辑高电平也不为低电平。第三条件导致描述为“三态”。这样的信号可以看作是开路(或“浮动”线)。

通用解决方案

解决方案是下拉电阻。将其视为一个额外的组件,当该行获得0或1时不执行任何操作。但是,当该行处于空闲状态时,它突然起作用并给出0。

Raspberry Pi解决方案

幸运的是,Rpi具有内置的下拉菜单,您需要以编程方式激活它。这是一个python脚本:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
//Now your input is stable.

边注

不要将电源直接连接到该引脚,因为这样做很危险!确保电路中有足够的电阻。另外,切勿将5V电源直接连接到GPIO,因为它仅接受3.3V。


在Windows 10 IoT核心平台上运行时,您知道等效的C#代码吗?
Vijay Chavda

这个答案是金!Thx
domih
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.