2012-10-19 266 views
0

我是用Arduino進行編程的幾天,我遇到了一個煩人的問題。我的電路包含三個連接到引腳2,3,4的LED和一個連接到引腳8的按鈕。我想要做的是按下按鈕交替點亮LED。我使用一個變量來計算某個點上的哪個LED點亮,並在達到值4時重置。硬件部分正常工作,因爲我已經單獨測試了它(自動交替LED和按鈕示例程序Arduino IDE),所以必須有我的代碼。究竟是什麼?按鈕變量不能正常工作

void setup(){ 
    pinMode(2, OUTPUT); 
    pinMode(3, OUTPUT); 
    pinMode(4, OUTPUT); 
    pinMode(8, INPUT); 

} 

void loop(){ 
    int buton= digitalRead(8); 
    int led = 1; 

    if(led == 1){ 
    digitalWrite(2, HIGH); 
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW); 
    } 
    if(led == 2){ 
    digitalWrite(2, LOW); 
    digitalWrite(3, HIGH); 
    digitalWrite(4, LOW); 
    } 
    if(led == 3){ 
    digitalWrite(2, LOW); 
    digitalWrite(3, LOW); 
    digitalWrite(4, HIGH); 
    } 
    if(buton == HIGH){ 
    led++; 
    if(led == 4) led = 1; 
    } 

} 

我知道一個事實,即它不進入最後如果(一個爲按鈕輸入值),因爲我已經放在一個Serial.println()看到兩個LED變量的值和一個常量字符串,它沒有顯示。

預先感謝您!

+3

您應該嘗試將'int led = 1;'移動到您的設置函數中,否則每次循環運行時它都會重置爲1。 – smilledge

+0

這是第一個想法,但如果我將它移動到那裏,它會給出我沒有被聲明爲「在此範圍內」的錯誤。它們是具有不同局部變量的不同功能。 – FloIancu

回答

0

Smilledge在評論中是正確的,在循環的每次迭代中,led變量被重置爲1。我不知道你可以在兩個函數(setup和loop)之外有變量聲明,所以我只是把變量全局化了。