Go Down

Topic: Explication d'une commande (Read 801 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy