2014-10-06 60 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); 

重複實驗,...它不會再漂浮...