Je dois être capable de trouver 5 bits séquentiels de la mémoire EEPROM, idéalement le plus proche de 2 (comme j'ai le bit # 1 & 2 associé à d'autres données et que les choses restent organisées). J'ai développé ce code qui fonctionne, mais la boucle for continue après avoir trouvé un bon ensemble de nombres.Faire la boucle continuer jusqu'à ce qu'un objectif soit atteint
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;
}
}
}
}
}
}
J'ai alors pensé que je pourrais mettre une boucle while autour d'elle, et ont la butée de boucle while une fois variable est à 0 par opposition à 1, donc j'écrit ceci: (remarquez l'introduction du while loop, la variable et la ligne Scanner = 0
au milieu).
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;
}
}
}
}
}
}
}
Il identifie correctement et définit la variable à 0 quand je veux, mais la boucle while ne semble pas avoir un impact et la boucle continue à produire des séries de chiffres qui pourraient travailler.
En tant que codeur débutant moi-même, je ne suis pas sûr de ce que je pourrais essayer ensuite.
Un conseil serait grandement apprécié.
juste ajouter un 'break;' dans le dernier 'if'? – UnholySheep
Ou ajoutez une vérification pour la condition de la deuxième pause dans la condition dans la boucle 'for', si vous avez besoin de temps pour autre chose –
Comment ne pas écrire le bon code C: utilisez 5 instructions imbriquées if au lieu d'une boucle. Aussi, pourquoi 5 cellules eeprom non programmées sont-elles le résultat souhaité? Cela n'a aucun sens. Problème XY – Lundin