void MenuPrincipale(){
//lecture de la RTC
rtc.get(&sec, &min, &hour, &day, &month, &year);
//:::::::::::::::::::::::::::::::::::::::::::::::::::::Partie affichage du menu principale:::::::::::::::::::::
lcd.fillRect(1,1,320,20,COLOR_BLACK);
sprintf(buf, "%02i : %02i : %02i", hour, min, sec);//affichage heure et date
lcd.drawText(5, 5, buf, 1, COLOR_WHITE,COLOR_BLACK );
sprintf(buf, "%02i / %02i / %04i", day, month, year);
lcd.drawText(120, 5, buf, 1, COLOR_WHITE, COLOR_BLACK);
}
Tu fais exactement ce que je déconseille. Le texte n'occupe qu'une toute petite partie de l'écran et tu effaces celui-ci dans son intégralité.
En fait chaque chaine de texte n'occupe qu'une surface comprise entre son originex, origineY (5,5 pour la première chaine par exemple) et la fin de la chaine.
Pour déterminer les coordonnées de la surface occupée par la chaine:
La coordonné y max pour la chaine c'est : originey + FONT_HEIGHT
La coordonnée x max pour la chaine c'est : longueur_chaine * size * FONT_WIDTH
FONT_HEIGHT et FONT_WIDTH sont des define déclaré dans fonts.h ils dépendent de la police utilisée.
size c'est le coefficient d'échelle que tu utilises dans la méthode drawText pour donner la taille des caractères (1 dans ton cas)
Comparaison des performances
L'heure occupe une douzaine de caractères
Avec la police 8 x 12
La surface à effacer:
largeur : 12 x 8 // nombre de caractères x largeur police
hauteur : 12 // hauteur police
total = 12 * 12 * 8 = 1152 points
Effacement de l'écran
largeur : 320
hauteur : 240
total = 320 x 240 = 76800 points
Il y a un rapport d'environ 66 entre les deux.