lire ds18b20 , temperature negative.

Ben tu as de la chance, j'ai pile ce qu'il te faut.
Mais il faut te taper l'anecdote qui va avec :

Il y a quelques semaines, à la maison, nous avons sorti un bac de glace vanille du congélateur et là, surprise, il était dur comme un caillou.
Mais dur de chez dur comme je n'avais jamais vu.
La cuillère spéciale à glace, trempée dans de l'eau bouillante, ne s'y enfonçait pas d'un millimètre.

A l'évidence, le thermostat du congélateur était parti en vrille, et celui-ci refroidissait à n'en plus finir.

Ni une, ni deux, j'attrape une arduino uno, un lcd de base, une sonde ds18b20 étanche avec cable, et hop je torche vite fait le programme ci-dessous.

#include <LiquidCrystal.h>
#include <OneWire.h>

const byte d4 = 4, d5 = 5, d6 = 6, d7 = 7, rs = 8, en = 9;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

OneWire  ds(3);
byte addr[8];

void setup() {
  Serial.begin(9600);
  Serial.println("Debut programme");

  lcd.begin(16, 2);
  lcd.setCursor(2, 0);
  lcd.print("Temperature");

  if (ds.search(addr)) {
    Serial.println("Sonde trouvee");
    if (OneWire::crc8(addr, 7) == addr[7]) {
      Serial.println("Identifiant valide");
    } else {
      Serial.println("Identifiant invalide");
    }
  } else {
    Serial.println("Sonde non trouvee");
  }
}

void loop() {
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);
  delay(1000);
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  byte data[12];
  for (byte  i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
  int16_t raw = (data[1] << 8) | data[0];
  float   celsius = (float)raw / 16.0;
  Serial.println(celsius, 2);

  char signe = '+';
  if (raw < 0) {
    signe = '-';
    raw = 0 - raw;
  }
  byte degres = raw >> 4;
  byte dixiemes = (((raw & 15) * 10) + 8) >> 4;
  lcd.setCursor(0, 1);
  lcd.print("                ");
  lcd.setCursor(5, 1);
  lcd.print(signe);
  lcd.print(degres);
  lcd.print(',');
  lcd.print(dixiemes);
  delay(1000);
}

enfin "hop", il m'a quand même fallu 45 minutes pour pondre tout ça, logiciel + assemblage du montage.
Pendant ce temps la glace s'est réchauffée donc après ça allait pour la manger :slight_smile:

Verdict : -34°2 dans le congélo, au lieu des -18 attendus.

Au final, j'ai juste débranché / rebranché le congélo et le thermostat s'est remis à fonctionner normalement.

Et pour m'achever, ma femme m'a fait remarquer à juste titre que j'aurais pu commencer par ça, au lieu de faire le malin avec mes bidouilles :smiling_imp:

Après plusieurs jours de surveillance et de fonctionnement normal, j'ai désassemblé le montage.