Calculateur température moteur


Voici un projet qui n’a jamais dépassé le stade de prototype 100% fonctionnel suite à un moteur cassé Et à la vente du véhicule concerné.

Le Principe

Ce projet devais servir à refroidir un moteur de Jeep cherokee qui était connu pour des problèmes de mauvais refroidissement du dernier cylindre.
Il se compose d’une sonde de température reliée au bloc moteur sur le dernier cylindre.
Lorsque l’on démarre le véhicule le calculateur se reveille et commence son initialisation,
Il affiche la température à tout moment sur un écran oled dans la planche de bord dans les espaces non remplis des indicateur à cotes du compteur.
Dépassé une certaine température il met le ventilateur électrique en route jusqu’a une température de consigne.
Si le moteur est trop chaud et que l’on arrête la voiture le ventilateur reste allumé jusque la température consigne. Il se coupe et le calculateur se met en veille prolongé en éteignant tout jusqu’au prochain démarrage.

Composants:

  • Arduino mini ou atmega328pu(avec son quartz ,condensateurs et resistance)
  • Photocoupleur
  • LM7805
  • Perfboard
  • écran I2C
  • 1 Tip31
  • 2 petits transistors pnp
  • 1 sonde DS18B20
  • 1 relais 12V 25A

Le Montage

Comme dis plus haut le moteur a rendu l’âme avant que je puisse monter le tout dans la voiture donc pas de photo du projet finalisé mais il était 100% fonctionnel.

Code

/*
 ***********************
 *      LIBRAIRIES     *
 ***********************
*/
#include OneWire.h                         //Librairie du bus OneWire
#include DallasTemperature.h               //Librairie du capteur DS18B20
#include avr/sleep.h                       //Librairie de l'avr pour la mise en veille
#include avr/interrupt.h                   //Librairie de l'avr pour les interrupts
#include avr/power.h                       //Librairie de l'avr pour l'arret
#include SPI.h                             //Librairie pour communiquer en SPI avec l'ecran SSD1306
#include Wire.h                            //Librairie pour complementaire pour l'ecran SSD1306
#include Adafruit_SSD1306.h                //Librairie pour l'ecran SSD1306
#define OLED_RESET 4                        //Je ne sais pas ce que c'est mais sans ca l'ecran ne marche pas
Adafruit_SSD1306 display(OLED_RESET);       //Definition de l'ecran
OneWire oneWire(10);                        //Bus One Wire sur la pin 10 de l'arduino
DallasTemperature sensors(&oneWire);        //Utilistion du bus Onewire pour les capteurs
DeviceAddress sensorDeviceAddress;          //Vérifie la compatibilité du capteur avec la librairie


/*
 *******************
 *      IMAGES     *
 *******************
*/
static const unsigned char PROGMEM ventil[] = {     //Image ventilateur lors de l'arret du vehicule

B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B11100000, B00000011, B10000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B01110000, B00011100, B00000111, B11111000, B00001111, B11100000, B00011100, B00000111, B00000000, B00000000, B00000000, B00000000,
B00000111, B11111111, B11111111, B10000000, B11111000, B00111110, B00000111, B11111000, B00011111, B11110000, B00111110, B00001111, B10000000, B11111111, B11111111, B11110000,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00001111, B11111000, B00111111, B11111000, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00001111, B11111000, B01111111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11111000, B11111111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11111000, B11111111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00001111, B11111101, B11111111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00001111, B11111101, B11111111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00001111, B11111111, B11111111, B11110000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00000111, B11111111, B11111000, B00000000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00000011, B11111111, B11110000, B00000000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00000000, B11111111, B11111100, B00000000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00000000, B01111111, B11111111, B00000000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00000000, B00011111, B11111111, B11000000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00000000, B00001111, B11111111, B11100000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00000001, B11111111, B11111111, B11110000, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00000111, B11111111, B11111111, B10000001, B11111100, B01111111, B00001111, B11111111, B11111111, B11110000, B01111111, B00011111, B11000000, B11111111, B11111111, B11110000,
B00000000, B00000000, B00000000, B00000001, B11111100, B01111111, B00001111, B11111111, B11011111, B11111000, B01111111, B00011111, B11000000, B00000000, B00000000, B00000000,
B00000111, B11111111, B11111111, B10000001, B11111100, B01111111, B00011111, B11111111, B10011111, B11111000, B01111111, B00011111, B11000000, B11111111, B11111111, B11110000,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00011111, B11111111, B10011111, B11111000, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11111111, B00011111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00001111, B11111111, B00011111, B11111000, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00001111, B11111110, B00001111, B11110000, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00000111, B11111111, B11111111, B10000000, B11111000, B00111110, B00000111, B11111100, B00001111, B11110000, B00111110, B00001111, B10000000, B11111111, B11111111, B11110000,
B00000000, B00000000, B00000000, B00000000, B01110000, B00011100, B00000011, B11110000, B00000111, B11000000, B00011100, B00000111, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000001, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 };

static const unsigned char PROGMEM jeep[] = {        //image jeep lors du demarrage du vehicule
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B01110000, B00011100, B00000111, B00000001, B11000000, B01110000, B00011100, B00000111, B00000000, B00000000, B00000000, B00000000,
B00000111, B11111111, B11111111, B10000000, B11111000, B00111110, B00001111, B10000011, B11100000, B11111000, B00111110, B00001111, B10000000, B11111111, B11111111, B11110000,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00000111, B11111111, B11111111, B10000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000000, B11111111, B11111111, B11110000,
B00000000, B00000000, B00000000, B00000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000000, B00000000, B00000000, B00000000,
B00000111, B11111111, B11111111, B10000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000000, B11111111, B11111111, B11110000,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00011111, B11111111, B11111111, B11100001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000011, B11111111, B11111111, B11111100,
B00001111, B11111111, B11111111, B11000001, B11111100, B01111111, B00011111, B11000111, B11110001, B11111100, B01111111, B00011111, B11000001, B11111111, B11111111, B11111000,
B00000111, B11111111, B11111111, B10000000, B11111000, B00111110, B00001111, B10000011, B11100000, B11111000, B00111110, B00001111, B10000000, B11111111, B11111111, B11110000,
B00000000, B00000000, B00000000, B00000000, B01110000, B00011100, B00000111, B00000001, B11000000, B01110000, B00011100, B00000111, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000 };

static const unsigned char PROGMEM picture[] = {       // image du ventilateur

B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000,
B00000001, B11100000, B00000011, B10000000,
B00000111, B11111000, B00001111, B11100000,
B00000111, B11111000, B00011111, B11110000,
B00001111, B11111000, B00111111, B11111000,
B00001111, B11111000, B01111111, B11111000,
B00011111, B11111000, B11111111, B11111000,
B00011111, B11111000, B11111111, B11111000,
B00001111, B11111101, B11111111, B11111000,
B00001111, B11111101, B11111111, B11111000,
B00001111, B11111111, B11111111, B11110000,
B00000111, B11111111, B11111000, B00000000,
B00000011, B11111111, B11110000, B00000000,
B00000000, B11111111, B11111100, B00000000,
B00000000, B01111111, B11111111, B00000000,
B00000000, B00011111, B11111111, B11000000,
B00000000, B00001111, B11111111, B11100000,
B00000001, B11111111, B11111111, B11110000,
B00001111, B11111111, B11111111, B11110000,
B00001111, B11111111, B11011111, B11111000,
B00011111, B11111111, B10011111, B11111000,
B00011111, B11111111, B10011111, B11111000,
B00011111, B11111111, B00011111, B11111000,
B00001111, B11111111, B00011111, B11111000,
B00001111, B11111110, B00001111, B11110000,
B00000111, B11111100, B00001111, B11110000,
B00000011, B11110000, B00000111, B11000000,
B00000000, B00000000, B00000001, B00000000,
B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000 };

static const unsigned char PROGMEM picture2[] = { //image degres celcius
B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000,
B00011110, B00000001, B11111111, B11100000,
B00011110, B00000001, B11111111, B11100000,
B01100001, B10000001, B11111111, B11100000,
B01100001, B10000001, B11111111, B11100000,
B01100001, B10011110, B00000000, B00011110,
B01100001, B10011110, B00000000, B00011110,
B00011110, B00011110, B00000000, B00011110,
B00011110, B00011110, B00000000, B00011110,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00000000,
B00000000, B00011110, B00000000, B00011110,
B00000000, B00011110, B00000000, B00011110,
B00000000, B00011110, B00000000, B00011110,
B00000000, B00011110, B00000000, B00011110,
B00000000, B00000001, B11111111, B11100000,
B00000000, B00000001, B11111111, B11100000,
B00000000, B00000001, B11111111, B11100000,
B00000000, B00000001, B11111111, B11100000,
B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000 };







/*
 ***********************************************
 *      DEFINITION DES BROCHES ET VARIABLES    *
 ***********************************************
*/

// I/O pins:
const int Relais_pin= 9;          //broche du transistor pour le relais actif haut
const int Interrupt_pin= 2;       // broche pour la detection de l'allumage
const int ecran = 3;              //broche pour demmarage ecran 
const int sonde = 11;             //broche pour demmarage de la sonde

// Constantes de Fonctionement:
const int Temp_max= 100;          //temperature max autorisee 
const int Temp_min= 80;           //temperature minimale autorisee
const int Delay_arret= (1*6000);  //temps avant arret du vehicule en minutes * 6000

// Variables:
int Temp_inst ;                   //tenperature lors de la lecture de la sonde
int ventstate;                    //etat du ventilateur 
int sleepstate;                   //etat du sleep mode





/*
 ******************************************
 *      DEFINITION DU TYPE DES BROCHES    *
 ******************************************
*/
void setup() {
sleepstate = 1;                                //definir imediatement l'etat comme en veille pour l'activation de la sequence de demmarage
pinMode(Relais_pin,OUTPUT);                    //definir relais comme sortie
pinMode(ecran,OUTPUT);                         //definir ecran comme sortie
pinMode(sonde,OUTPUT);                         //definir sonde comme sortie
}




/*
 ******************************
 *      PROGRAME PRINCIPAL    *
 ******************************
*/
void loop() {

/*
 *********************************
 *      SEQUENCE DE DEMMARAGE    *
 *********************************
*/
  if (sleepstate == 1){
   digitalWrite(ecran,HIGH);                            //allumage de l'ecran
   digitalWrite(sonde,HIGH);                            //allumage de la sonde de temperature 
   delay(250);                                          //delais de mise en route 
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);            //initialisation de l'ecran
  sensors.begin();                                      //Activation de la sonde de temperature 
  display.clearDisplay();                               //effacement de l'ecran
  display.setTextSize(4);                               //definition de la taille de police
  display.setTextColor(WHITE);                          //couleur du texte
  display.setCursor(15,2);                              // placement du curseur
  display.println("Jeep");                              //affichage du splash screen JEEP
  display.display();                                    //Affiche
  sensors.getAddress(sensorDeviceAddress, 0);           //Demande l'adresse du capteur à l'index 0 du bus
  sensors.setResolution(sensorDeviceAddress, 9);        //Résolutions possibles: 9,10,11,12 bits
  delay(2500);                                          //delais de mise en route de la sonde
  display.clearDisplay();                               //effacement de l'ecran
  display.drawBitmap(0, 0, jeep, 128, 32, 1);           //dessine la calandre 
  display.display();                                    //afficher
  delay(2500);                                          //delais d'affichage de la calandre
  sleepstate = 0;                                       //deffinir l'etat comme allumé
  }



 /*
 *************************************
 *      LECTURE DE LA TEMPERATURE    *
 *************************************
*/
 for (int i=0; i <= 30; i++){                         //lecture et affichage 60x de suite de la temperature pour pouvoir la faire changer en live
  sensors.requestTemperatures();                      //Demande la température au capteur
  Temp_inst = sensors.getTempCByIndex(0);             //Récupération de la température en celsius du capteur
  display.clearDisplay();                             //effacement de l'ecran
  display.drawBitmap(86, 0, picture2, 32, 32, 1);     //dessin du °C
  display.setTextSize(4);                             //definition de la taille de police
  display.setTextColor(WHITE);                        //couleur du texte
  display.setCursor(10,2);                            // placement du curseur
  display.println(Temp_inst);                         //affichage temperature
  display.display();                                  //afficher sur l'ecran


 /*
 ********************************************
 *      INTERPRETATION DE LA TEMPERATURE    *
 ********************************************
*/ 

  if (Temp_inst < -50){                                 //detection de l'erreur sonde
    digitalWrite(Relais_pin,HIGH);                      //activer le ventilo
    ventstate = 1;                                      //definir l'etait du ventilo comme activé
    display.clearDisplay();                             //effacement de l'ecran
    display.setTextSize(3);                             //definition de la taille de police
    display.setTextColor(WHITE);                        //couleur du texte
    display.setCursor(15,7);                            // placement du curseur
    display.println("ERREUR");                          //affichage erreur
    display.display();                                  //afficher sur l'ecran
    delay(1000);
    display.clearDisplay();                             //effacement de l'ecran
    display.setTextSize(3);                             //definition de la taille de police
    display.setTextColor(WHITE);                        //couleur du texte
    display.setCursor(15,7);                            // placement du curseur
    display.println("SONDE");                           //affichage sonde
    display.display();                                  //afficher sur l'ecran
    delay(1000); 
    Dispstate();                                        //appele la fonction d'affichage de l'etat du ventilo
    delay(1000); 
  }
  else if (Temp_inst<Temp_min){                         //si temperature est inferieur a temperature de consigne basse
    digitalWrite(Relais_pin,LOW);                       //desactiver le ventilo
    ventstate = 0;}                                     //definir etat du ventilo comme arreté
  else if (Temp_inst>Temp_max){                         //si temperature superieure a temperature de consigne
    digitalWrite(Relais_pin,HIGH);                      //activer le ventilo
    ventstate = 1;}                                     //definir l'etait du ventilo comme activé
    }
  Dispstate();                                          //appele la fonction d'affichage de l'etat du ventilo
  delay(2000);                                          // delais d'affichage de l'etat du ventilo




 /*
 ****************************************************
 *      DETECTION DE L'ARRET ET SEQUENCE D'ARRET    *
 ****************************************************
*/
 if (digitalRead(Interrupt_pin) == LOW){                 // si plus d'apres contact 
  if (Temp_inst>Temp_max){                               //et si temperture superieure a temperature de consigne maximale
   digitalWrite(Relais_pin,HIGH);                        //activation du ventilo
   display.clearDisplay();                               //effacement de l'ecran
 display.drawBitmap(0, 0, ventil, 128, 32, 1);           //affichage de la face avant avec le ventilo
  display.display();                                     //afficher
   delay(Delay_arret);                                   //application du delais de refroidissement moteur apres arret
    }
    digitalWrite(Relais_pin,LOW);                        //arret du ventilateur
    sleepNow();                                          //appelle la fonction mettre en veille
 }
 
}                                                        //FIN DU PROGRAMME PRINCIPAL




/*
 **********************************************
 *      PROGRAMME APRES REVEIL(obligatoire)    *
 **********************************************
*/
void wakeUpNow(){sleepstate = 1;}          //fonction appelee au redemarage du cherokee qui indique que le chero vient de redemmarer





 /*
 *****************************
 *      PROGRAMME D'ARRET    *
 *****************************
*/
void sleepNow(){                            //fonction d'arret de l'avr
  display.clearDisplay();                   //effacement de l'ecran
  display.setTextSize(4);                   //definition de la taille de police
  display.setTextColor(WHITE);              //couleur de texte 
  display.setCursor(30,2);                  //placement du curseur
  display.println("BYE");                   //mot d'arret 
  display.display();                        //afficher
  delay(2000);                              //delais pendant lequel ca reste affiché
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);      //deffiniton du type de mise en veille de l'avr
  sleep_enable();                           //active les bit permetant la mise en veile de l'avr en langage machine
  digitalWrite(ecran , LOW);                //arret de l'ecran 
  digitalWrite(sonde , LOW);                //arret de la sonde
  attachInterrupt(0, wakeUpNow, RISING);    //instruction interrupt de utilisation de la pin 2 lors d'un redemarage passe a High avec un rising edge
  sleep_mode();                             //mise en veille de l'avr ne peut etre reveillé que par l'interrupt ou un reset
  sleep_disable();                          //apres etre reveillé desactiver la mise en veille
  detachInterrupt(0);                       //detacher t'interrupt pour eviter le redemarage continu de l'avr
}                                           //fin fonction d'arret de l'avr



 /*
 ********************************************
 *      PROGRAMME AFFICHAGE ETAT VENTILO    *
 ********************************************
*/
void Dispstate(){                                  //fonction de l'affichage de l'etat du ventilo
 display.clearDisplay();                           //effacement de l'ecran 
 display.drawBitmap(10, 0, picture, 32, 32, 1);    //dessiner le ventilo au debut 
 display.setTextSize(4);                           //taille du texte
 display.setTextColor(WHITE);                      //couleur du texte 
 if (ventstate == 1 ){                             //si l'etat du ventilo est 1
  display.setCursor(65,2);                         //alors on affiche ON
  display.println("ON");                           //affichage de ON
  display.display();}                              //afficher 
else if (ventstate == 0 ){                         //sinon si etat = 0
    display.setCursor(55,2);                       //alors on affiche OFF 
    display.println("OFF");                        //affichage de OFF
    display.display();}                            //afficher 
}                                                  //fin fonction de l'affichage de l'etat du ventilo