2017-07-18 179 views
-3

任何人都可以告訴如何解決這個問題嗎?這是一個LED骰子的程序。val在Arduino範圍內未聲明

Arduino: 1.8.3 (Windows 10), Board: "Arduino/Genuino Uno" 
C:\Users\Prithvi Raj Jain\Documents\Arduino\sketch_jul18a\sketch_jul18a.ino: In function 'void loop()': 
sketch_jul18a:27: error: 'val' was not declared in this scope 
    val = analogRead(piezopin); 
^
sketch_jul18a:27: error: 'piezopin' was not declared in this scope 
    val = analogRead(piezopin); 
        ^
exit status 1 
'val' was not declared in this scope 

This report would have more information with 
"Show verbose output during compilation" 
option enabled in File -> Preferences. 
int one[] = { 8 }; 
int two[] = { 12, 6 }; 
int three[] = { 12, 6, 8 }; 
int four[] = { 12, 6, 9, 11 }; 
int five[] = { 12, 6, 9, 11, 8 }; 
int six[] = { 12, 6, 9, 11, 10, 7 }; 
int all[] = { 12, 6, 9, 11, 10, 7, 8 }; 
int pincount = 7; 

int randNumber; 

int count = 0; 

void setup() 
{ 
    Serial.begin(9600); 

    for (int i = 0; i < pincount + 1; i++) { 
     pinMode(all[i], OUTPUT); 
    } 
} 

void loop() 
{ 
    val = analogRead(piezopin); 

    for (int j = 0; j < pincount; j++) { 
     digitalWrite(all[j], LOW); 
    } 

    randNumber = random(1, 7); 

    count++; 

    Serial.println(randNumber); 

    switch (randNumber) { 

    case 1: 

     for (int i = 0; i < randNumber; i++) { 
      digitalWrite(one[i], HIGH); 
     } 

     break; 

    case 2: 

     for (int i = 0; i < randNumber; i++) { 
      digitalWrite(two[i], HIGH); 
     } 

     break; 

    case 3: 

     for (int i = 0; i < randNumber; i++) { 
      digitalWrite(three[i], HIGH); 
     } 

     break; 

    case 4: 

     for (int i = 0; i < randNumber; i++) { 
      digitalWrite(four[i], HIGH); 
     } 

     break; 

    case 5: 

     for (int i = 0; i < randNumber; i++) { 
      digitalWrite(five[i], HIGH); 
     } 

     break; 

    case 6: 

     for (int i = 0; i < randNumber; i++) { 
      digitalWrite(six[i], HIGH); 
     } 

     break; 
    } 

    if (count < 12) { 
     delay(250); 
    } 

    if (count >= 12) { 
     delay(500); 
    } 

    if (count >= 18) { 

     count = 0; 
     delay(10000); 
    } 
} 
+0

如果答案解決了您的問題,請考慮接受答案。以下是http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work然後返回到此處,並使用勾號/複選標記執行相同操作,直至變爲綠色。這告知社區,找到了解決方案。否則,其他人可能會認爲這個問題仍然存在,並且可能需要發佈(更多)答案。您將獲得積分,其他人將被鼓勵幫助您。 *歡迎使用Stack!* –

回答

0

因爲val=analogRead(piezopin)是在loop(),方法的聲明中,val變量必須聲明那裏,還是全球範圍內,這在你的程序是niether,因此錯誤。事實上,你並不是真的在任何地方聲明它,它從來沒有在任何地方使用過,所以這行代碼基本上什麼都不會做。你想要那條線做什麼?此外,piezopin從未在任何地方聲明,這就是爲什麼這也給出了類似的錯誤。

+0

但是如何添加它。能否請你幫忙?其實我是一個初學者。 –

+0

嘗試簡單地刪除'val = analogRead(piezopin)'行;'其餘的代碼看起來應該編譯,但是如果你有更多的錯誤,請告訴我。 – Alerra