Bonjour,
J'ai fais ce programme (qui n'est pas fini) qui devrait s'arretter grâce à la variable stopPG quand L1 et L2 ont pour valeur 127. Je vous laisse regarder :
#include <SD.h>
#include <Deuligne.h>
#include <Wire.h>
File Dico;
Deuligne lcd;
int SDPIN = 53;
int L1 = 33;
int L2 = 33;
int L3 = 33;
int L4 = 33;
int L5 = 33;
int L6 = 33;
int L7 = 33;
int L8 = 33;
int stopPG = 0;
String word1;
void setup()
{
lcd.init();
Serial.begin(9600);
Serial.println ("Initialisation de la carte SD...");
lcd.backLight(true);
lcd.print ("Initialisation");
lcd.setCursor(0,1);
lcd.print ("Carte SD...");
delay(2500);
lcd.clear();
lcd.backLight(false);
pinMode(SDPIN, OUTPUT);
if (!SD.begin(SDPIN)) {
Serial.println("SD invalide ou absente");
lcd.backLight(true);
lcd.print ("SD invalide ou");
lcd.setCursor (0,1);
lcd.print ("Absente");
delay(2500);
lcd.clear();
lcd.backLight(false);
}else{
Serial.println("SD OK");
lcd.backLight(true);
lcd.print ("SD OK");
delay(2500);
lcd.clear();
lcd.backLight(false);
Dico = SD.open("test.txt", FILE_WRITE);
if (Dico) {
Serial.println("Début de la création du dictionaire");
}else{
Serial.println("Le fichier dico.txt ne c'est pas ouvert");}}}
void loop(){
if (stopPG == 0){
for (L1 = 33; L1 <= 127; L1++){
Serial.write(L8);
Serial.write(L7);
Serial.write(L6);
Serial.write(L5);
Serial.write(L4);
Serial.write(L3);
Serial.write(L2);
Serial.write(L1);
Serial.println();
if (L1 == 127){
L1 = 33;
L2++;
if (L2 ==127){
L2 = 33;
stopPG = 1;}}}}}
Merci mais en fait il ne se passe rien si dans le void loop si la condition if (stopPG == 0)n'est pas vérifiée. Mais ça marche pas. Quelqu'un peut m'aider ?
EBanou:
Merci mais en fait il ne se passe rien si dans le void loop si la condition if (stopPG == 0)n'est pas vérifiée. Mais ça marche pas. Quelqu'un peut m'aider ?
bonjour,
oui pas vérifié, car à quoi ca correspond?
aucune lecture du résultat pour cette variable, donc ca tourne en boucle, sutout que l'int est à 0 au début.
ca reveint au même que de marcher sur un cercle et dire que tant que la route continue on marche encore.
tu vas en faire des tours pour rien
ca me rappelle un sketch avec une ambulance qui tournait autour d'un rond point car toutes les sorties étaient en sens interdit
Solution incompréhensible, mais si tu sais ce que tu veux faire tant mieux.
La kyrielle de if imbriqués est une fantastique source de problèmes difficiles à solutionner.
Autrement le problème était là:
if (L1 == 127){
L1 = 33; /* <------ le problème
L2++;
cette ligne empêche de sortir du for.
C'est, à mon sens, une mauvaise manière de coder 2 boucles imbriquées.
Il est préférable soit:
faire deux boucles for imbriqués proprement
utiliser des while avec les bonnes conditions de sortie