capteur de temperature avec resistance chauffante

Bonjour à tous.
Je vous expose brièvement mon projet:
J'ai besoin, dans le cadre d'un projet scolaire, de fabriquer un chauffe tasse 3 température. J'ai donc acheté un arduino elegoo mega 2560 avec écran LCD, sonde de température DS18B20(sonde étanche), un relais, une série de boutons poussoirs, des leds, et les câbles nécessaires au montage.
J'ai donc commencé a regarder la programmation et les câblages sur internet.je suis tombé sur un forum intéressant qui me proposé le câblage et la prog du ds18b20 avec un écran LCD pour lire la température.
Je vous avoue que je suis nouveau dans le monde arduino et d'autan plus dans le language. Une fois le montage réalisé je l'ai testé et je n'arrive même pas a lire le capteur sur le bus 1-Wire: dans le moniteur serie il est ecrit erreur lecture capteur 1 a répétition. voila ma prog:

/**
 * Exemple de code pour lire un unique capteur DS18B20 sur un bus 1-Wire.
 */
  
/* Dépendance pour le bus 1-Wire */
#include <OneWire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  
/* Broche du bus 1-Wire */
const byte BROCHE_ONEWIRE = 7;
 
/* Code de retour de la fonction getTemperature() */
enum DS18B20_RCODES {
  READ_OK,  // Lecture ok
  NO_SENSOR_FOUND,  // Pas de capteur
  INVALID_ADDRESS,  // Adresse reçue invalide
  INVALID_SENSOR  // Capteur invalide (pas un DS18B20)
};
 
 
/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);
  
  
/**
 * Fonction de lecture de la température via un capteur DS18B20.
 */
byte getTemperature(float *temperature, byte reset_search) {
  byte data[9], addr[8];
  // data[] : Données lues depuis le scratchpad
  // addr[] : Adresse du module 1-Wire détecté
   
  /* Reset le bus 1-Wire ci nécessaire (requis pour la lecture du premier capteur) */
  if (reset_search) {
    ds.reset_search();
  }
  
  /* Recherche le prochain capteur 1-Wire disponible */
  if (!ds.search(addr)) {
    // Pas de capteur
    return NO_SENSOR_FOUND;
  }
   
  /* Vérifie que l'adresse a été correctement reçue */
  if (OneWire::crc8(addr, 7) != addr[7]) {
    // Adresse invalide
    return INVALID_ADDRESS;
  }
  
  /* Vérifie qu'il s'agit bien d'un DS18B20 */
  if (addr[0] != 0x28) {
    // Mauvais type de capteur
    return INVALID_SENSOR;
  }
  
  /* Reset le bus 1-Wire et sélectionne le capteur */
  ds.reset();
  ds.select(addr);
   
  /* Lance une prise de mesure de température et attend la fin de la mesure */
  ds.write(0x44, 1);
  delay(800);
   
  /* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  
 /* Lecture du scratchpad */
  for (byte i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
    
  /* Calcul de la température en degré Celsius */
  *temperature = ((data[1] << 8) | data[0]) * 0.0625;
   
  // Pas d'erreur
  return READ_OK;
}
  
  
/** Fonction setup() **/
void setup() {
 
   
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
   
  lcd.setCursor(0, 0);
     
  // Print a message to the LCD.
  lcd.print("Initialisation");
  delay(2000);
  lcd.clear();
 
  /* Initialisation du port série */
  Serial.begin(9600);
 
}
  
  
/** Fonction loop() **/
void loop() {
  float temperature;
     lcd.setCursor(0, 0);
  lcd.print("Temp.: ");
  /* Lit la température ambiante à ~1Hz */
  if (getTemperature(&temperature, true) != READ_OK) {
    Serial.println(F("Erreur de lecture du capteur"));
  }
 
if(temperature > 5 && temperature < 40){
  /* Affiche la température */
  lcd.print(temperature, 1);
  lcd.write(176);
  lcd.print("C");
  Serial.print(F("Temperature : "));
  Serial.print(temperature, 2);
  Serial.write(176); // Caractère degré
  Serial.write('C');
  Serial.println();
}
}

Si quelqu’un peut me filer un petit coup de pouce dans mon projet ça me sauverais la mise merci.

hello
ton code fonctionne chez moi.
regardes du coté de ton cablage

Peut-tu m'envoyer le schéma de ton câblage please ?

sonde gnd vcc et D2 avec une resistance 1.8K entre D2 et VCC

et ton code adapté à ma maquette
(3 ligne modifiées signalées par des //*************)

/**
 * Exemple de code pour lire un unique capteur DS18B20 sur un bus 1-Wire.
 */
  
/* Dépendance pour le bus 1-Wire */
#include <OneWire.h>
#include <LiquidCrystal.h>
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//*****************
  LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
/* Broche du bus 1-Wire */
//const byte BROCHE_ONEWIRE = 7;//*****************
 const byte BROCHE_ONEWIRE = 2;
/* Code de retour de la fonction getTemperature() */
enum DS18B20_RCODES {
  READ_OK,  // Lecture ok
  NO_SENSOR_FOUND,  // Pas de capteur
  INVALID_ADDRESS,  // Adresse reçue invalide
  INVALID_SENSOR  // Capteur invalide (pas un DS18B20)
};
 
 
/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);
  
  
/**
 * Fonction de lecture de la température via un capteur DS18B20.
 */
byte getTemperature(float *temperature, byte reset_search) {
  byte data[9], addr[8];
  // data[] : Données lues depuis le scratchpad
  // addr[] : Adresse du module 1-Wire détecté
   
  /* Reset le bus 1-Wire ci nécessaire (requis pour la lecture du premier capteur) */
  if (reset_search) {
    ds.reset_search();
  }
  
  /* Recherche le prochain capteur 1-Wire disponible */
  if (!ds.search(addr)) {
    // Pas de capteur
    return NO_SENSOR_FOUND;
  }
   
  /* Vérifie que l'adresse a été correctement reçue */
  if (OneWire::crc8(addr, 7) != addr[7]) {
    // Adresse invalide
    return INVALID_ADDRESS;
  }
  
  /* Vérifie qu'il s'agit bien d'un DS18B20 */
  if (addr[0] != 0x28) {
    // Mauvais type de capteur
    return INVALID_SENSOR;
  }
  
  /* Reset le bus 1-Wire et sélectionne le capteur */
  ds.reset();
  ds.select(addr);
   
  /* Lance une prise de mesure de température et attend la fin de la mesure */
  ds.write(0x44, 1);
  delay(800);
   
  /* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
  
 /* Lecture du scratchpad */
  for (byte i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
    
  /* Calcul de la température en degré Celsius */
  *temperature = ((data[1] << 8) | data[0]) * 0.0625;
   
  // Pas d'erreur
  return READ_OK;
}
  
  
/** Fonction setup() **/
void setup() {
 
   
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
   
  lcd.setCursor(0, 0);
     
  // Print a message to the LCD.
  lcd.print("Initialisation");
  delay(2000);
  lcd.clear();
 
  /* Initialisation du port série */
 // Serial.begin(9600);//*****************
 Serial.begin(115200);
}
  
  
/** Fonction loop() **/
void loop() {
  float temperature;
     lcd.setCursor(0, 0);
  lcd.print("Temp.: ");
  /* Lit la température ambiante à ~1Hz */
  if (getTemperature(&temperature, true) != READ_OK) {
    Serial.println(F("Erreur de lecture du capteur"));
  }
 
if(temperature > 5 && temperature < 40){
  /* Affiche la température */
  lcd.print(temperature, 1);
  lcd.write(176);
  lcd.print("C");
  Serial.print(F("Temperature : "));
  Serial.print(temperature, 2);
  Serial.write(176); // Caractère degré
  Serial.write('C');
  Serial.println();
}
}