Bonjour à tous
toujours en rapport avec le post précédent , je dois afficher une température
que j'élabore de la façon suivante :
Au final je souhaite afficher qu'un seul chiffre après la virgule ( char *temp = "000.0 C" )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 int raw_temp; char *temp = "000.000 C"; ../.. if(ds18b20_read(&raw_temp)) { Serial.printf("Temperature = %8.4f°C\r\n", (float)raw_temp / 16); if(raw_temp & 0x8000) // Si la température est négative { temp[0] = '-'; // Mettre le signe moins (-) raw_temp = ~raw_temp + 1; // Changer la valeur de la température en forme positive } else { if((raw_temp >> 4) >= 100) // Si la température >= 100 °C temp[0] = '1'; // Mettre 1 parmi des centaines else // autrement temp[0] = ' '; // mettre un espace ' ' } // Mettre les deux premiers chiffres ( pour les dizaines et les uns) temp[1] = ( (raw_temp >> 4) / 10 ) % 10 + '0'; // Mettre le chiffre des dizaines temp[2] = (raw_temp >> 4) % 10 + '0'; // Mettre un chiffre // Mettre les 4 chiffres de la fraction (chiffres après le point) // Pourquoi 625 : parce que nous travaillons avec une résolution de 12 bits (résolution par défaut) temp[4] = ( (raw_temp & 0x0F) * 625) / 1000 + '0'; // Mettre le chiffre des milliers temp[5] = (((raw_temp & 0x0F) * 625) / 100 ) % 10 + '0'; // Mettre le chiffre des centaines temp[6] = (((raw_temp & 0x0F) * 625) / 10 ) % 10 + '0'; // Mettre le chiffre des dizaines temp[7] = ( (raw_temp & 0x0F) * 625) % 10 + '0'; // Mettre un chiffre updatePiscine(); } else { Serial.println("Communication Error!"); }
comment puis-je formater 'temp'
svp ?
Merci mille fois
Partager