我正在尝试设计一个简单的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);
}
答案 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) {