justifier à droire écriture avec U8g2

Bonjour,

j'essaie vainement de trouver la solution pour justifier l'écriture à droite avec la librairie U8g2 en utilisant des écrans monochrome.
Cela m'intéresserai de le réaliser car lorsqu'on fait défiler des valeurs avec l'unité derrière avec 1,2, ou 3 chiffres (suivant la valeur à afficher), l'affichage se décale de l'unité lorsque le chiffre diminue.
Merci de votre aide si vous connaissez la ligne de commande pour cette librairie car je n'ai pas réussi à la trouver.

Cordialement

Jean-Claude

Je dirais qu'il faut utiliser getStrWidth, qui te donne le nombre de pixels dans la largeur de ton texte.

Tu décales alors l'affichage du texte du nombre de pixels vers la gauche

Bonjour,

Merci de ton aide, j'ai regardé cette fonction mais elle renvoie seulement le nombre de pixels utilisés mais elle ne va pas faire démarrer l'écriture à droite plutôt qu'à gauche je pense?
Je dis cela car je ne suis pas un grand spécialiste de la programmation mais un pur autodidacte d'Arduino.

Cordialement

Jean-Claude

l'affichage se décale de l'unité lorsque le chiffre diminue.

Il suffit de formater une chaîne en complétant avec des espaces :

"999"
" 99"
" 9"

Tu peux utiliser sprintf() ou tout autre moyen à ta convenance.

Oui mais quand c'est une lecture de capteur on obtient une valeur int ou float qui est affichée par Write et donc on intervient pas manuellement pour mettre des espaces, ou alors je ne vois pas je ne sais pas faire.

merci de ton aide si tu as une recette

Comme le suggère hbachetti, sprintf te permet d'écrire une valeur (int ou float ou autre) dans un tableau de char de manière formattée, donc avec des blancs au début ou sur un nombre de digits fixe. Tu n'as plus qu'à afficher ce tableau de char sur ton écran

Exemple :

char texte[10];
int x = 34;
sprintf (texte,"%4d",x);

texte contient alors " 34"

Bonsoir,

Cela marche (en tâtonnant) mais j'ai besoin de quelques explications car je l'ai compris ainsi:

  • char texte[10]; constitution d'un tableau avec 9 caractères (10-1) moi je l'ai passé à 4 car seulement 3 chiffres à afficher

sprintf (texte,"%4d",x); on charge le tableau "texte" de la valeur X . mais c'est "%4d" qui me pose problème car je ne sais pas exactement l'interpréter moi j'ai mis %3d du fait de 3 valeurs.

Merci pour l'aide et encore de votre éclairage sur la signification de cette expression "%4d" en commande

Cordialement

4d est le format pour un entier sur 4 positions. Il met des espaces pour remplir.
Si tes chiffres sont inférieurs à 1000 tu peux utiliser %3d

Bonjour,

merci de l'explication ce problème est donc traité grâce à votre aide, maintenant je vais passer au problème suivant, je n'ai pas encore aplani la montagne arduino et l'informatique en général.......
Mais bon heureusement "l'union fais la force comme l'oignon fait la soupe".

Cordialement

claudius310:
... mais elle ne va pas faire démarrer l'écriture à droite plutôt qu'à gauche je pense?

Oui je parlais de l'autre gauche... (Désolé)