2014-10-06 36 views
0

我使用的是arduino uno,我想模拟一个按钮。 我没有按钮,所以我通过连接一个导线到Digital3和一个GND并将它们压在一起来构建一个按钮。要注意到Digital3的HIGH,我将LED连接到Digital5。奇怪的Arduino行为与跳线

当我将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

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

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

pinMode(3, INPUT); 

pinMode(3, INPUT_PULLUP); 

重复实验,...它不会再漂浮...