2016-01-10 88 views
-1

這個代碼有很多的問題,這是針對arduino反應遊戲的。我不知道我是否可能宣佈了我兩次或其他事情。 Arduino告訴我問題在這裏:「if(i == success_led)」。Arduino問題:「'我'沒有在這個範圍內聲明'

// Public Domain 2012 by A.Coster 

// some constants for readability, using booleans to save memory 
boolean ON = 1 ; 
boolean OFF = 0 ; 

// Arduino pin setup - there are 3 pins used for LEDs, 
// 1 for push-button. The pin at index success_led is 
// the one the user should try to hit. 
byte led_pins[3]  = {8,9,10} ; 
byte button_pin  = 2 ; 
byte success_led  = 1 ; // refers to pin 9 

// time_change is the number of milliseconds to add upon 
// failure or subtract upon success. 
// colorswitch_delay is the amount of time that the LED stays 
// on. This value has time_change added to/subtracted from it. 
// So that the user knows which LED was lit up when they hit 
// the button, push_pause defines the number of milliseconds 
// that the LED will stay on after the button is pressed. 
unsigned int time_change  = 50 ; 
unsigned int colorswitch_delay = 500 ; 
unsigned int push_pause  = 2000 ; 

void setup(){ 

    for (int i=0 ; i ;) ;  
    pinMode(led_pins[i], OUTPUT) ; 

    pinMode(button_pin, INPUT) ; 
} 

void loop(){ 
    // need to keep track of button presses 
    // so set the button state to 0 and overwrite 
    // later upon button press 
    boolean button_state = OFF ; 

    // sequentially turn on each LED 
    for (int i=0 ; i  digitalWrite(led_pins[i], HIGH) ; 

     // Check for a button press every 5 milliseconds 
     for (int t=0 ; t   button_state = digitalRead(button_pin) ; 

      // if the button has been pressed, stop 
      // switching LEDs so the user knows, and 
      // then check if it was the success_led 
      if (button_state == ON){ 
       delay(push_pause) ; 

       // set the button state back to off 
       button_state = OFF ; 
       if (i == success_led) 
        // if the user hit the right LED, 
        // make it more challenging by 
        // reducing the delay between LED 
        // switches. 
        colorswitch_delay -= time_change ; 
       else 
        // if the user was wrong, make it 
        // easier by increasing the delay. 
        colorswitch_delay += time_change ; 
        break ; 
       } 
      delay(5) ; 
     } 
     // and turn it off before looping through 
     // to turn the next LED on. 
     digitalWrite(led_pins[i], LOW) ; 
    } 
} 
+0

你的代碼似乎打破,不會編譯由於各地'for'令牌壞語法。這個代碼真的是你正在做的嗎? – MikeCAT

+0

看起來像你從interwebs中盲目複製/粘貼代碼,包括版權標題......甚至沒有嘗試查看語法是否完全有效。在複製/粘貼之前考慮一下。 – Mat

+1

對於(int i = 0; i

回答

2

在每個for循環之後放置了分號。因爲在循環的控制語句中聲明的結果變量i(和其他一些變量)在這些語句之外並不存在。例如

void setup(){ 

    for (int i=0 ; i ;) ;  
         ^^^ 
    pinMode(led_pins[i], OUTPUT) ; 
        ^^^??? 
    //... 

void loop(){ 
    // need to keep track of button presses 
    // so set the button state to 0 and overwrite 
    // later upon button press 
    boolean button_state = OFF ; 

    // sequentially turn on each LED 
    for (int i=0 ; i  digitalWrite(led_pins[i], HIGH) ; 
                   ^^^ 
     // Check for a button press every 5 milliseconds 
     for (int t=0 ; t   button_state = digitalRead(button_pin) ; 
                      ^^^ 
     //... 
相關問題