Arduino没有进入循环

时间:2014-05-09 22:18:10

标签: arduino

我在这个gameProcess函数中遇到了if梯形图和每个for循环的问题。本质上,(模式== 1)循环中的for循环根本没有输入,我不知道为什么。

我认为这与定位有关,因为if(mode == 1)切换为(mode == 0),将输入(mode == 1)for循环但是(mode == 0)赢了。已经坚持了一段时间,似乎无法发现该功能的优点。任何帮助将不胜感激。感谢。

// 5 means 10 switches as one iteration is a change between one mode to another, not on and off.
int gameProcess(int mode) {
    Serial.println("> Starting game process.");
    // 4 second delay between 
    int interval = 1000;
    int initialDelay = 5000;
    enter code here:
    //delay(initialDelay);
    if (mode == 1) {
        // for a standard 25 round with a 2 sec interval
        Serial.println("starting mode 1");
        for (int i; i < 51; i++) {
            Serial.println("In loop");
            Serial.println(interval);
            flickPin(13);
            workingDelay(interval);
        }
        Serial.println("finished mode 1");
    } else if (mode == 2) {
        while(true) {
            flickPin(13);

            int minRandVal = 1000;
            int maxRandVal = 15000;

            int randomDelay = random(minRandVal, maxRandVal);
            Serial.println(randomDelay);
            workingDelay(randomDelay);
        }
    } else if (mode == 0) {
        // for 10 rounds. Find out why it needs 35 and not 20.
        Serial.println("  - Mode 0 .");
        for (int i; i < 35; i++) {
            Serial.println(interval);
            flickPin(13);
            workingDelay(interval);
        }
        Serial.println("  - finished Mode 0 .");
    } else {
        char error[80];
        sprintf(error, "Unknown mode = %d", mode);
        Serial.println(error);
    }
}

这是主循环和initializeGame函数,其中调用了gameProcess函数。

   int initializeGame(bool started, int mode) {
    if (started == true) {
        Serial.println(" -> in startMonitor, start button pressed");
        Serial.println(mode);
        gameProcess(mode);

        // if the mode is 0 (none of the lights are on), that means it's in random mode and any interval between 5 and 60 secs come up until you stop it!
        // set it back to false and turn the game light off because the game is over.
        started = false;
        digitalWrite(9, LOW);
    } else {
        started = false;
    }

    return started;
    }


    void loop()
    {
        // check if the pushbutton is pressed.
        mode = stateMonitor(activeButton);

        // now set the game mode led.
        lightUpModeLed(ledPins[mode]);

        // now check to see if the game has been initialized.
        started = startMonitor(startButton, ledPins[4], started);

        // read the state of the pushbutton value:

        // initialize game if it hasn't already started.
        // TODO this is where the loop will likely spend the majority of it's time so how can this be
        started = initializeGame(started, mode);

        saveData();
    } 

1 个答案:

答案 0 :(得分:0)

如果您使用的是Windows然后安装Atmel Studio和Visual Micro Plugin,那么您可以调试并观察代码正在执行的操作以及变量的值。

这将带走它为我所做的奥秘。