Oled 168*64

Bonjour à tous,

Voila je voudrais dans un premier temps afficher l'heure... Seulement pour cela je suis entrain de faire des test avec une heure fictive, question de tester l'écran et l'affichage. Mon problème est que je voudrais un affichage fluide... La pour l'instant l'ecran saute a chaque seconde qui passe.... A cause du clearDisplay de la librairie SSD1306.

Pouvez vous me dire ou m'orienter pour pouvoir afficher du texte sans faire un clear a chaque fois? Modifier que la parti seconde par exemple mais sans faire sauter l'ecran avec le clear?

Merci beaucoups.

Le plus simple : faire afficher 4 espaces à la place de l'heure et reécrire l'heure par dessus Plus compliqué faire la même chose en ne l'appliquant qu'aux caractères qui ont changé.

Aurait tu un exemple de code car je n'arrive pas a faire fonctionner... Il écrit a chaque fois au dessus de la valeur afficher ce qui fait que c'est illisible :/

Bonjour, dans un premier temps il faut "ecrire" des espaces pour effacer puis re-positionner le curseur pour ecrire la nouvelle valeur. Jacques

c'est ce que j'ai fait ... par exemple

//pour initialiser l'ecran
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(35,0);
  display.println("Heure");
  display.display();
  display.setTextSize(2);
  display.setCursor(20,30);
  display.print("01");
  display.print(":");
  display.print("00");
  display.print(":");
  display.print("00");
  display.display();
  delay(1000);
  display.setCursor(20,30);
  display.print("01");
  display.print(":");
  display.print("00");
  display.print(":");
  display.print("  ");
  display.display();
  display.setCursor(20,30);
  display.print("01");
  display.print(":");
  display.print("00");
  display.print(":");
  display.print("01");
  display.display();
  delay(1000);

Mais au lieu de me mettre les espaces... il réécrit quand meme par dessus :(

Mes excuses, pas fit attention que c'est un afficheur graphique. Il faut faire le travail a la main c-a-d ecrire un rectangle de la couleur du fond pour effacer le caractere. C'est ce qu'il fait quand il efface tout l'ecran. Je termine a l'instant un thermometre avec grand caracteres en matrice 5x8. Pour chaque afficher un caractere, je dessine 40 cercles remplis de la couleur du fond ou de la couleur contrastante suivant le besoin. A mon avis, pas possible de faire autrement. Jacques

Salut,

Pour faire du fluide il faut imprimer en noir le caractère “précédent”.

Il te faut deux chaines de caractères : une pour l’heure que tu veux afficher (actualisée donc), et une pour servir de mémoire. Ensuite caractère par caractère tu compares : s’il ne sont pas identiques, on ajoute en noir le caractère précédent, on fait revenir en arrière le curseur de 1 caractère et on imprime en blanc le nouveau.

#define TAILLE_CARACTERE 5 // je mets au pif, à déterminer, en pixel

char heure[10];
char heure_precedente[10];

...

// je suppose ici une routine qui met à jour heure[]

oled.setCursor(x_depart, y depart);

byte x=0;

for (byte i=0;i<10 ;i++) {

if(heure[i]!=heure_precedente[i]) {

oled.setColor(BLACK);
oled.print(heure_precedente[i]);
oled.setCursor(x-TAILLE_CARACTERE,y_depart);
oled.setColor(WHITE);
oled.print(heure[i]);
heure_precedente[i]=heure[i];
}

x+=TAILLE_CARACTERE;

}

Comme t’as pas donné ta librairie, j’ai utilisé des fonctions un peu au pif mais tu devrais pouvoir transcrire.

Yes merci à tous :) ça fonctionne très bien :)