Pages: [1]   Go Down
Author Topic: Explication d'une commande  (Read 609 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

Pourriez-vous m'aider à comprendre la commande ci-dessous ?
Code:
   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.
Logged

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


www.Zartronic.fr : Arduino & Robotique

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tout à fait, ce qui donne :

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

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
GLCD.Puts("°C");
se traduit par "C".
=> Comment afficher le signe ° ?

Merci.

Logged

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1) A vu de nez  smiley
 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
Logged


www.Zartronic.fr : Arduino & Robotique

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Merci pour tout.
Logged

Pages: [1]   Go Up
Jump to: