#include <OneWire.h>

// DS18S20 Temperature chip i/o
_ _ _ _ _ _ _ _ _ _ _ _  // on pin 10
  
//Déclaration du tableau :
// ***** QUESTION 1.2 page 5 **********

_ _ _ _ _ _ _ _ _ _ _ _ 

// Déclaration d'un tableau de nom scratch pad de 12 octets
  _ _ _ _ _ _ _ _ _ _ _ _ ;
  
//Déclaration d’une variable de type Octet de nom octetdepoidsfort ; 
// ******* QUESTION 4.1 page 7
//Déclaration d’une variable de type Octet de nom octetdepoidsfaible ;
_ _ _ _ _ _ _ _ _ _ _ _  ;

//Déclaration d’une variable de taille 16 bits non signée de nom temperature ;
 _ _ _ _ _ _ _ _ _ _ _ _  ;

//Déclaration d’une variable de type nombre à virgule de nom temperaturecelsius ;
 _ _ _ _ _ _ _ _ _ _ _ _  ;
  
void setup(void) {
  // initialize inputs/outputs
  // start serial port
 _ _ _ _ _ _ _ _ _ _ _ _ ;
}

void loop(void) {
 
 // Demande de mesure de Température : Start Conversion Convert T [44h]
 
 // Following the conversion, the resulting thermal data is stored in the 2-byte temperature register in the scratch- pad memory
  // ***** QUESTION 2.1 page 6 **********              // Initialisation du Bus
  // ***** QUESTION 2.1 page 6 **********         // Selection de l'esclave ds.select(nomdutableau)
  // ***** QUESTION 2.1 page 6 **********        // the resulting thermal data is stored in the 2-byte temperature register.

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

// Lecture du SCRATCH PAD : Read Scratchpad 
  // ***** QUESTION 3.1 page 6 **********              // Initialisation du Bus
  // ***** QUESTION 3.1 page 6 **********         // Selection de l'esclave ds.select(nomdutableau)
  // ***** QUESTION 3.1 page 6 **********         // Read Scratchpad [BEh]
//The data transfer starts with the least sig- nificant bit of byte 0 and continues through the scratchpad until the 9th byte (byte 8 – CRC) is read. 

//Mise en mémoire des 9 Octets du "SCratch Pad"  dans le tableau data[i]
  for ( i = 0; i < 9; i++) {           
    scratchpad[i] = ds.read();
  }

// Octet de poids faible : La variable "Octet de poids faible" reçoit la case 0 du tabelau
 _ _ _ _ _ _ _ _ _ _ _  // Octet de poids fort : La variable "Octet de poids fort" reçoit la case 1 du tabelau
  _ _ _ _ _ _ _ _ _ _ _ _ ;

 // Affichage en hexa du contenu de l'octect de poids faible et de l'octet de poids fort
  Serial.println("Octets du Scratch PAd en Hexa = ");

  Serial.print("Octet de poids fort = ");
// Afficher sur le moniteur série le contenu de la variable octetdepoidsfort en hexadécimal
  _ _ _ _ _ _ _ _ _ _ _ _ 

  Serial.print("Octet de poids faible = ");
// Afficher sur le moniteur série le contenu de la variable octetdepoidsfaible en hexadécimal
  _ _ _ _ _ _ _ _ _ _ _ _ 
//Concaténation des deux octets dans la variable « temperature » 
  Temperature = word(octetdepoidsfort,octetdepoidsfaible);

Serial.print("Temperature en hexa = ");
//Afficher la valeur hexadécimale du mot « Temperature ».
_ _ _ _ _ _ _ _ _ _ _ _ 
 
 // Conversion en Température 
 
// Conversion à partir des éléments lus sur la documentation constructeur 
  _ _ _ _ _ _ _ _ _ _ _ _ ;

  Serial.print("Temperature en °C = ");
  // Affichage de la température sur le moniteur série
  _ _ _ _ _ _ _ _ _ _ _ _ 

}