奇怪的Arduino行为与跳线

我使用的是arduino uno,我想模拟一个按钮。 我没有一个按钮,所以我通过连接一个电线到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); 
  }
}

有人可以解释为什么会发生这种情况吗?


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

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

pinMode(3, INPUT);

pinMode(3, INPUT_PULLUP);

重复这个实验......它不会再漂浮了......

链接地址: http://www.djcxy.com/p/78599.html

上一篇: Strange Arduino Behavior with jumpers

下一篇: How do you convert a String to a float or int?