我需要能够找到5个连续的EEPROM存储器位,理想情况下最接近2(因为我有位#1 & 2与其他数据相关联,并希望保持组织)。我开发了可以工作的代码,但for循环在找到一组好的数字后继续执行。使循环继续,直到完成目标
Serial.println("got to assignment number finder");
for (int AssignCheck = 2; AssignCheck < 250; AssignCheck++){
Serial.println("Finding a good assignment number " + String(AssignCheck));
if (EEPROM.read(AssignCheck) == 255){ //Looks for a blank space which can be used to store the new card
if (EEPROM.read(AssignCheck + 1) == 255){
if (EEPROM.read(AssignCheck + 2) == 255){
if (EEPROM.read(AssignCheck + 3) == 255){
if (EEPROM.read(AssignCheck + 4) == 255){
Serial.println("Found assignment numbers " + String(AssignCheck) + " through to " + String(int(AssignCheck) + 4) + ". Scanner value = " + String(Scanner));
int StoreValue = AssignCheck;
}
}
}
}
}
}
我当时以为我可以把while循环它周围,并有while循环停止,一旦一个变量被设置为0而不是1,所以我写了这个:(注意引进while循环,变量和中间的Scanner = 0
一行)。
Serial.println("got to assignment number finder");
int Scanner = 1;
while (Scanner == 1){
for (int AssignCheck = 2; AssignCheck < 250; AssignCheck++){
Serial.println("Finding a good assignment number " + String(AssignCheck) + ". Scanner value = " + String(Scanner));
if (EEPROM.read(AssignCheck) == 255){ //Looks for a blank space which can be used to store the new card
if (EEPROM.read(AssignCheck + 1) == 255){
if (EEPROM.read(AssignCheck + 2) == 255){
if (EEPROM.read(AssignCheck + 3) == 255){
if (EEPROM.read(AssignCheck + 4) == 255){
Scanner = 0;
Serial.println("Found assignment numbers " + String(AssignCheck) + " through to " + String(int(AssignCheck) + 4) + ". Scanner value = " + String(Scanner));
int StoreValue = AssignCheck;
}
}
}
}
}
}
}
它正确地识别并设置变量为0时,我想,但while循环似乎并没有产生影响,并继续循环,产生套可能工作的数字。
作为一个新手编码器,我不知道接下来我可以尝试什么。
任何意见将不胜感激。
只是在最后一个if中添加'break'。 – UnholySheep
或者在for循环中添加第二个中断条件的检查,如果你需要其他东西的话 –
如何不写正确的C代码:使用5个嵌套if语句而不是循环。另外,为什么5个非编程的eeprom单元会达到预期的效果?这没有任何意义。 XY问题。 – Lundin