Bonjour,
J'ai encore besoin d'aide
, j'aime bien comprendre un programme que je vais utiliser, c'est pour ça que j'aimerais quelques clarifications sur le programme en dessous :
Ce programme permet d'afficher une barre de chargement sur un écran LCD.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Pins de l'afficheurs lcd
int i, j ; //Déclaration de i et j, variables égales à zéro
byte barre[] = { //Création du caractère de chargement
B111111,
B111111,
B111111,
B111111,
B111111,
B111111,
B111111,
B111111
};
void setup() {
lcd.begin(16, 2); //Activation de l'afficheur lcd
}
void loop() {
while(i != 100){
while(i < 100){
lcd.createChar(1, barre); //Déclaration du caractère de chargement
delay(100); //On attends 250 ms
i++ ; //i augmente de 1
lcd.setCursor(0, 0); //On place le curseur à la colonne 8, ligne 1
lcd.print(i); //On écrit la valeur de i
lcd.print("%"); //Puis le signe % (pourcent)
affichage(); //Utilisation de la fonction affichage déclarée plus bas
if(i == 100){
lcd.clear(); //Si i = 100, on efface l'écran
}
}
while(i == 100 && j < 16){
lcd.setCursor(0, 0); //On place le curseur à la colonne 8, ligne 1
lcd.print(i); //On écrit la valeur de i
lcd.print("%"); //Puis le signe % (pourcent)
lcd.setCursor(j, 1); //On place le curseur à la colonne égale à la valeur de j et à la ligne 2
lcd.write(byte(1)); //On affiche le caractère de chargement
j++ ; //j augmente de 1
}
}
}
void affichage(){ //Fonction permettant de gérer l'affichage du caractère de chargement. Je ne la détaillerai pas ici
switch(i){
case 5 :
lcd.setCursor(0, 1);
lcd.write(byte(1));
break ;
case 10 :
lcd.setCursor(1, 1);
lcd.write(byte(1));
break ;
case 15 :
lcd.setCursor(2, 1);
lcd.write(byte(1));
break ;
case 20 :
lcd.setCursor(3, 1);
lcd.write(byte(1));
break ;
case 25 :
lcd.setCursor(4, 1);
lcd.write(byte(1));
break ;
case 30 :
lcd.setCursor(5, 1);
lcd.write(byte(1));
break ;
case 35 :
lcd.setCursor(6, 1);
lcd.write(byte(1));
break ;
case 40 :
lcd.setCursor(7, 1);
lcd.write(byte(1));
break ;
case 45 :
lcd.setCursor(8, 1);
lcd.write(byte(1));
break ;
case 50 :
lcd.setCursor(9, 1);
lcd.write(byte(1));
break ;
case 55 :
lcd.setCursor(10, 1);
lcd.write(byte(1));
break ;
case 60 :
lcd.setCursor(11, 1);
lcd.write(byte(1));
break ;
case 65 :
lcd.setCursor(12, 1);
lcd.write(byte(1));
break ;
case 70 :
lcd.setCursor(13, 1);
lcd.write(byte(1));
break ;
case 75 :
lcd.setCursor(14, 1);
lcd.write(byte(1));
break ;
case 80 :
lcd.setCursor(1, 1);
lcd.write(byte(1));
break ;
}
}
1.
while(i != 100){
}
Je voudrais savoir, pourquoi mettre cette condition, le programme marche sans.
2.
while(i == 100 && j < 16){
lcd.setCursor(0, 0); //On place le curseur à la colonne 8, ligne 1
lcd.print(i); //On écrit la valeur de i
lcd.print("%"); //Puis le signe % (pourcent)
lcd.setCursor(j, 1); //On place le curseur à la colonne égale à la valeur de j et à la ligne 2
lcd.write(byte(1)); //On affiche le caractère de chargement
j++ ; //j augmente de 1
}
Cette partie permet d'afficher une barre complète si j'ai bien compris ("j" représente une colonne, on place le curseur à la colonne "j", on remplit puis on ajoute 1 à "j" jusqu'à avoir une barre complète).
3.
switch(i){
case 5 :
lcd.setCursor(0, 1);
lcd.write(byte(1));
J'ai compris que l'on remplit la case indiqué par la commande "lcd.setCursor" mais je comprend pas très bien le "switch(i)" et le "lcd.write(byte(1))" (d'où provient le "byte(1)").
Ça m'aiderait de comprendre ce programme.
Je vous souhaite une bonne journée ou soirée.