Go Down

Topic: Explication d'une commande (Read 749 times) previous topic - next topic

kafifi

Bonsoir,

Pourriez-vous m'aider à comprendre la commande ci-dessous ?
Code: [Select]
   sprintf(buf, "%d:%c%d.%d\337C",sensor,SignBit ? '-' : '+', Whole, Fract < 10 ? 0 : Fract);

Elle affiche la température d'un DS1820 sous cette forme :
0:+22.0C

Je ne sais pas comment supprimer le "0:".

Merci d'avance.

Teiva

Chaque %xx  dans la chaine correspond à une variable dans la liste
donc
%d     -> sensor
:      littéral
%c     -> SignBit ? '-' : '+'
%d     -> Whole
.    littéral
%d     -> Fract < 10 ? 0 : Fract
\337    ->  littéral en octal signe °
C          -> littéral lettre 'C'

donc pour enlever le 0: tu enlèves dans la chaine %d:   et dans la liste tu enlèves sensor

A+ Teiva


www.Zartronic.fr : Votre source Arduino en France


www.Zartronic.fr : Arduino & Robotique

Luj06

Tout à fait, ce qui donne :

Code: [Select]

sprintf(buf, "%c%d.%d\337C",SignBit ? '-' : '+', Whole, Fract < 10 ? 0 : Fract);

kafifi

Merci pour vos explications => fonctionnement OK !
Pourriez-vous m'éclairer sur deux questions subsidiaires :

1) L'affichage des dixièmes se fait sur deux digits :
24.50 °C
24.00 °C
=> Comment limiter à 1 digit ?

2) Je n'arrive pas à afficher '°C"
Code: [Select]
GLCD.Puts("°C");se traduit par "C".
=> Comment afficher le signe ° ?

Merci.


Teiva

1) A vu de nez  :)
tu remplaces : Fract < 10 ? 0 : Fract
par : Fract/10

2) Le signe ° doit pas exister dans la lib GLCD, à toi de le dessiner et le rajouter, va voir dans le dossier de la lib, il y a des fichiers avec le "dessin" bit/pixel des caractères, tu peux le mettre à la place d'un que utilise pas, genre '$' .


A+ Teiva
www.Zartronic.fr : Votre source Arduino en France


www.Zartronic.fr : Arduino & Robotique

kafifi

Tu as eu le nez creux, c'est OK  ;)
Pour le "°", je vais aller jouer avec la lib.

Merci pour tout.

Go Up