奇怪的Arduino行为与跳线

时间:2014-10-06 08:19:24

标签: arduino arduino-uno

我使用的是arduino uno,我想模拟一个按钮。 我没有按钮所以我建造了#34;一根连接线连接到Digital3,一根连接到GND并将它们压在一起。要注意到Digital3处的HIGH,我将LED连接到Digital5。

当我将GND线按到Digital3线时,它可以正常工作。线索是,如果我用手指触摸digital3线(没有将两根线都压在一起),LED就会点亮!电线是用于面包板的标准隔离线......

我的代码:

 void setup(){
  pinMode(3, INPUT);
  pinMode(5, OUTPUT);
}

void loop(){
  if(digitalRead(3) == HIGH){
     digitalWrite(5, HIGH);
     delay(500);
     digitalWrite(5, LOW); 
  }
}

有人可以解释一下为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

这只是因为引脚3设置为高阻抗模式。这样,即使由电线和手指(拦截大量电噪声)制成的小天线也可以触发引脚,因此显示高(或低)值。

在您的情况下,当您不要将电线压在一起时,LED会亮起,对吗?无论如何,如果你有一个"浮动"输入,就像这个,我建议你在上拉模式下设置端口;这样你总是有一个已知的状态(而不是一个未知的状态,就像在这种情况下)。为此,只需更改

pinMode(3, INPUT);

pinMode(3, INPUT_PULLUP);

重复实验,......它不再浮动......