Arduino在断开的引脚中具有输入值


9

我是arduino的新手。也许是一个基本问题...

如果我加载此程序:

int mval = 0;
void setup() {
  Serial.begin(9600);
  // set up the LCD's number of columns and rows: 

}

void loop() {

  mval = analogRead(1);
  Serial.println(mval);

  delay(1000);
 }

我得到的值在300到400之间变化。当我认为该值必须为0时,表示该输入没有任何连接。

有任何想法吗??这是通过USB连接到我的笔记本电脑的arduino UNO


Answers:


12

您会得到一种叫做“浮动输入”的东西。考虑一下,用于测量输入的理想设备将具有非常高的输入阻抗,因此不会从引脚上移走太多电流。

因此,发生的情况是随机电子漂浮在引脚上(或从引脚上浮出)(由于环境中的电磁干扰或与少量电荷的直接接触),并且因为它的作用类似于与引脚的高电阻连接地面,此电荷将非常缓慢地流失。因此,当您进行测量时,似乎那里有些电压!通常,您可以将其连接到提供电压的某个设备上,或者放入一个上拉或下拉电阻器并调整对该引脚的期望。

我希望这能有所帮助,如果不能,那么我可以确定某人与另一个更能胜任回答该问题的人的链接(我在相关部分中看到至少一个几乎相同的问题)。


5
有趣的事实:Arduino文档建议使用analogRead未使用的引脚上的调用返回值作为randomSeed函数的种子:arduino.cc/hu/Reference/RandomSeed
Chris Laplante

2
哈!太整齐了,我喜欢!我认为只要在面包板和/或PCB上增加一些弯曲的导线,就可以使随机性有所提高,只要您避免天线长度为60Hz(仅针对美国)(然后突然交流噪声将占主导)。
套件在2012年

3
一种更健壮(节省空间)的方法是使用RFC 1149.5标准随机数生成器
克里斯·

4

输入是“浮动”的,因为没有任何东西可以通过一种方式“拉”电压。
这是完全正常的。如果您在引脚与地面之间连接了一个高阻抗下拉电阻器(例如10k),则在没有任何连接的情况下,它会停止这样做(尽管实际上并不需要这样做,因为在没有任何连接的情况下您不会读取它)连接的 ;-))


如果连接到ADC,下拉电阻器会改变信号吗?
user30878
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.