lire ds18b20 , temperature negative.

Voir ici. Extraits :

Comme tout périphérique 1-Wire, le DS18B20 contient un "scratchpad" qui est une sorte de mémoire tampon sécurisée ou l’on peut venir lire et / ou écrire des données. C'est dans cette mémoire qu'on vient lire les données de mesures et écrire les informations de configuration du capteur.

Le scratchpad du capteur DS12B20 est divisé en quatre parties :

  • Le résultat de la dernière mesure de température (deux octets),
  • Deux octets à usages divers (le capteur dispose d'un mode "alarme", mais cela ne sera pas traité dans ce tutoriel),
  • Le registre de configuration du capteur,
  • Une somme de contrôle.
    Ce qui nous intéresse, ce sont les deux premiers octets qui contiennent le résultat de la mesure de température.

Les deux octets forment un nombre flottant sur 11 bits, plus le signe (+ / -).

Pour avoir la température en degré Celsius il faut appliquer la formule suivante : temperature_celsius = (int16_t) ((MSB << 8 ) + LSB) * 0.0625.

N.B. A noter que le calcul doit être réalisé avec des nombres signés (pouvant être négatifs ou positifs), faute de quoi, les températures négatives créeront des problèmes.