Bonjour, j’ai un pb avec mon programme, lorsque j’affiche la temp sur l’écran elle s’affiche mais ne supprime pas lancienne donnée du coup je me retrouve avec des chiffres collés genre 21,27C22,0C21,90C …
que dois je rajouter à mon code pour que une nouvelle valeur s’affiche sans que la précedente reste à l’écran
Bon:
il faut faire deux chose:
a) ne pas mettre à jour l'afficheur si la température varie peu; il vous faut donc une trace de la température ancienne (disons int exTemp = -999; (peu physique)
la gestion de la température devient alors
if (exTemp != temperatureC) {
mettreAJour();
exVal = temperatureC;
b) lors de la mise à jour de l'afficheur, le nettoyer
void mettreAJour() {
lcd.clear();
lcd.setCursor(0,0); // le clear le fait déjà, mais permet evolutions
// lcd.setRGB(colorR, colorG, colorB); Sert elle à ce stade?
lcd.print(temperatureC);
lcd.print(" Degres ");
Nota : avec cette astuce de ne rafraîchir que si la température varie, (et de rafraîchir effectivement), vous pouvez vous passer du delay(2000) sans clognotements désagréables.....
Si les deux valeurs sont des float, il faut laisser un petit intervalle autour de la valeur précédente (ici un dixième de degré, ce qui est déjà très précis) :
J'avais confondu, en tapant à la volée, val (qui, soit dit en passant, ne sert à rien) , un entier (et les fluctuations de 1 degré garantissent un affichage stable...) et températureC, un float .... Heureusement que lesept était là....
Je corrige une horreur et donne une idée pour coloriser (cf poste jumeau)
void mettreAJour() {
lcd.clear();
lcd.setCursor(0,0); // le clear le fait déjà, mais permet evolutions
// lcd.setRGB(colorR, colorG, colorB); Sert elle à ce stade?
if (temperatureC > 21.5) {
lcd.setRGB(255, 0, 0); // chaud et rouge
} else {
if (temperatureC < 18.5) {
lcd.setRGB(0, 0, 255); // froid et bleu
} else lcd.setRGB(0, 255,0); // tiède te vert
}
lcd.print(temperatureC);
lcd.print(" Degres ");
} // corrige une de mes horreurs