2016-07-15 33 views
0

我想要設計一個簡單的4按鈕程序來創建一個使用數組和while循環的密碼,但是當我運行while循環時,它會崩潰我正在使用的arduino。這是我正在使用的代碼。使用數組和while循環時出現問題

bool code() { 
    for (int i = 0; i < size; i++){ 
     if (input[i] != password[i]){ 
      return false; 
     } 
     return true; 
    } 
} 

void loop() { 
    int RButtonstate = digitalRead(RButton); 
    int GButtonstate = digitalRead(GButton); 
    int BButtonstate = digitalRead(BButton); 
    int YButtonstate = digitalRead(YButton); 
    int z = 0; 
    while (z <= size){ 
     if (RButtonstate = LOW){ 
      input[z] = 0; 
      z++; 
     } 
     if (GButtonstate = LOW){ 
      input[z] = 1; 
      z++; 
     } 
     if (BButtonstate = LOW){ 
      input[z] = 2; 
      z++; 
     } 
     if (YButtonstate = LOW){ 
      input[z] = 3; 
      z++; 
     } 
    } 
    bool test = code(); 
    if (test == true) { 
     tone(Buzzer, 100, 100); 
     delay(100); 
     tone(Buzzer, 200, 100); 
     delay(100); 
     tone(Buzzer, 300, 100); 
     delay(100); 
     tone(Buzzer, 400, 100); 
     delay(100); 
    }else{ 
     tone(Buzzer, 100, 1000); 
     delay(500); 
     delay(100000000); 
    } 
    delay(1000000); 
} 
+0

我不認爲這是相關的,但我想你想'='而不是'==你如果條件'做, – Pawel

回答

0

在你的循環您檢查z在開始,但隨後可能增加z多次。例如,如果z的值爲size - 1並且多個按鈕狀態爲LOW,那麼您將開始在陣列之外進行書寫(假設您使用=而不是==進行比較以修正錯誤)。我也不知道如何定義輸入數組,但數組索引是基於0的。 while循環中的條件可能不正確。當z等於size但由於數組索引是從零開始的最後一個索引是size - 1

0

你不顯示完整的代碼,但此行

while (z <= size) {

或許應該循環將被輸入是:

while (z < size) {

而作爲@Pawel說,你可能想改變這一點:

if (RButtonstate = LOW) {

這樣:

if (RButtonstate == LOW) {