我使用的是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);
}
}
有人可以解释一下为什么会这样吗?
答案 0 :(得分:1)
这只是因为引脚3设置为高阻抗模式。这样,即使由电线和手指(拦截大量电噪声)制成的小天线也可以触发引脚,因此显示高(或低)值。
在您的情况下,当您不要将电线压在一起时,LED会亮起,对吗?无论如何,如果你有一个"浮动"输入,就像这个,我建议你在上拉模式下设置端口;这样你总是有一个已知的状态(而不是一个未知的状态,就像在这种情况下)。为此,只需更改
pinMode(3, INPUT);
与
pinMode(3, INPUT_PULLUP);
重复实验,......它不再浮动......