使用数组和while循环时遇到问题

时间:2016-07-15 13:57:37

标签: arduino

我正在尝试设计一个简单的4按钮程序,使用数组和while循环创建密码,但是当我运行while循环时,它会崩溃我正在使用的arduino。这是我正在使用的代码。

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);
}

2 个答案:

答案 0 :(得分:0)

在循环中,您在开头检查z,但可能会多次增加z。例如,如果z的值为size - 1并且多个按钮状态为低,则您将开始在数组之外编写(让我们假设您使用{{修复了错误) 1}}代替=进行比较)。我也不知道输入数组是如何定义的,但数组索引是基于0的。你在while循环中的条件可能不正确。当==等于z时,将输入循环但由于数组索引为零,因此最后一个索引为size

答案 1 :(得分:0)

您没有显示完整的代码,但是这一行

<div class="item <?php echo $active;?>"> <div class="row"> <?php for ($i = 0; $i <= 4; ++$i): ?> <div class="col-sm-3"><!-- The rest of the code --></div> <?php endfor; ?> </div> </div>

应该是:

while (z <= size) {

正如@Pawel所说,你可能想改变这个:

while (z < size) {

到此:

if (RButtonstate = LOW) {