delays d'affichage et gestion temps

Bonjour,

Je bloque dans mon code sur une petite bêtise qui je pence est toute bête.
J'ai une gestion de mon aquarium avec des fonction associer a l'heure.
j'ai plusieurs message a afficher celons les fonction active.
Le problème est le temps que tout mes message soit apparu, cela me bloque l'heure et les fonction associer jusque au moment ou le loop recommence.
J'ai essayer la fonction "int millis" mais ou je ne sait pas l'utiliser correctement ou alors cette fonction ne me convient pas car cela me fais scintiller l’écran toute les demi seconde.

pouvez vous me dire la fonction a utiliser et comment l’appliquer svp ?

Merci d'avance

tu utilise quoi comme matériel ? (arduino model, ecran, etc) ...
et aussi le code ..

Bonjour,
j'utilise un arduino uno et un lcd 16*2
voici mon code

#include <Time.h>
#include "LiquidCrystal.h"
#include "WProgram.h"
#include "Wire.h"
#include "DS1307.h"

/*
 sorti /entre Arduino
 Analog Pin 0 = Température Sensor
 Analog Pin 4 = SDA pour ds1307
 Analog Pin 5 = SCL pour ds1307
 Digital Pin 2 = LCD
 Digital Pin 3 = LCD
 Digital Pin 4 = LCD
 Digital Pin 5 = LCD
 Digital Pin 6 = power led
 Digital Pin 7 = ventilateur
 Digital pin 9 = rouge 
 Digital pin 10 = blanc
 Digital Pin 11 = LCD
 Digital Pin 12 = LCD
 Digital Pin 8 = bleu uv
 */

//Configuration des Pin de cablage**********************

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0;
int power_led = 6;
int bleu_uv = 8;
int rouge = 10;
int blanc = 9;
int ventilateur = 7;
int time;
float temp;
int timerPWM = 0;
int valeurPWM=0;
float GAMMA_CORRECTION = 2.2;
float PWMStep = 0;
int SeuilMini = 15;

//Configuration des heures allumage/extinction ( format HHMM )**********************

int bleu_uv_on_time = 1930;  //allume la pompe à cette heure 
int bleu_uv_off_time = 2359; //éteint la pompe à cette heure
int ventilateur_on_temp = 27;  //allume chauffage à cette température
int ventilateur_off_temp = 26.3; //éteint le chauffage à cette température

int minut;
int heure;
int seconde;
int date;
int mois;
int annee;
int temps_perso;

//Configuration de l'heure ( pour modifier l'heure de votre Arduino, enlevez les /* et */ puis une foi le programe envoyé, remettez les )**********************

void setup() {
   
  RTC.stop();
  RTC.set(DS1307_SEC,50);           //réglage secondes
  RTC.set(DS1307_MIN,29);              //réglage minutes
  RTC.set(DS1307_HR,8);               //réglage heures
  RTC.set(DS1307_DOW,1);               //réglage jour de la semaine
  RTC.set(DS1307_DATE,10);             //réglage date
  RTC.set(DS1307_MTH,9);               //réglage mois
  RTC.set(DS1307_YR,12);                 //réglage année
  RTC.start();
  
  
 //Configuration des entrées/sorties********************** 
  
  pinMode(ventilateur, OUTPUT);  // digital pin ventilateur 1 
  pinMode(bleu_uv, OUTPUT);  // digital pin pour bleu uv
  pinMode(blanc, OUTPUT);  // digital pin pour blanc
  pinMode(rouge, OUTPUT);  // digital pin pour rouge
  pinMode(power_led, OUTPUT);  // digital pin pour power led

lcd.begin(16, 2);
Serial.begin(9600);  

}

void loop(){

  
  //Récupération de l'heure du DS1307**********************************************************************************************

  heure = RTC.get(DS1307_HR,true);  
  minut = RTC.get(DS1307_MIN,false);
  seconde = RTC.get(DS1307_SEC,false);
  date = RTC.get(DS1307_DATE,false);
  mois = RTC.get(DS1307_MTH,false);
  annee = RTC.get(DS1307_YR,false);
  temps_perso = (heure * 100) + minut;  

  //Récupération de la température du LM35 ***************************************************************************************

  temp = analogRead(sensorPin);  
  temp = temp * 0.48828125;
 

  //****************ventilateur
   if(temp > ventilateur_on_temp){
    digitalWrite(ventilateur, HIGH);
      }  
  if(temp < ventilateur_off_temp){    
    digitalWrite(ventilateur, LOW);
  }
  
    //*****Controle des sorties eclairage *********
  
   //**on-off******* bleu uv *************
  if(bleu_uv_on_time > temps_perso  || bleu_uv_off_time <= temps_perso){
    digitalWrite(bleu_uv, LOW);
   }
  else{
    
    digitalWrite(bleu_uv, HIGH);
   }
   
    //***on-off***** rouge ***
  
if (heure ==  8)  { 
    PWMStep = 255 / 59;
    timerPWM = minut-60;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
  lcd.setCursor(0,1);
    lcd.print(" + + ROUGE + + ");
    delay(2000);
  }
  
 else if ((heure == 20) && (minut >30)) { // entre 20:00 et 20:59:59 
    PWMStep = 255 / 29;
    timerPWM = 30-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" - - ROUGE - - ");
    delay(2000);
 
  }  
  
  else if ((heure >= 9 ) && (heure < 21)) {
    analogWrite(rouge, 255);
   lcd.setCursor(0,1);
    lcd.print("ROUGE     on");
    delay(2000);
  }
else if (heure <= 21) {
    analogWrite(rouge, 0);
  }
   
 //***on-off***** blanc ***
  
 if ((heure ==  8) && (minut >30)) { 
    PWMStep = 255 / 29;
    timerPWM = minut-30;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (blanc, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" + + BLANC + + ");
    delay(2000);
  
  }
  
 else if (heure == 20) { // entre 20:00 et 20:59:59 
    PWMStep = 255 / 60;
    timerPWM = 60-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (blanc, valeurPWM); 
lcd.setCursor(0,1);
    lcd.print(" - - BLANC - - ");
    delay(2000)
  }  
  
  else if ((heure >= 9 ) && (heure < 21)) {
    analogWrite(blanc, 255);
    lcd.setCursor(0,1);
    lcd.print("BLANC     on");
    delay(2000);
  }
else if (heure <= 21) {
    analogWrite(blanc, 0);
  }

//***on-off***** power led ***

  if (heure ==  9)  { 
    PWMStep = 255 / 59;
    timerPWM = minut-60;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (power_led, valeurPWM);
    if( valeurPWM < SeuilMini ) valeurPWM = 0;
lcd.setCursor(0,1);
    lcd.print(" + POWER led + ");
    delay(2000);

  }
else if (heure == 20) { // entre 20:00 et 20:59:59 
    PWMStep = 255 / 60;
    timerPWM = 60-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (power_led, valeurPWM);
  if( valeurPWM < SeuilMini ) valeurPWM = 0;
lcd.setCursor(0,1);
    lcd.print(" - POWER led - ");
    delay(2000);

  }
else if ((heure >= 10 ) && (heure < 21)) {
    analogWrite(power_led, 255);
lcd.setCursor(0,1);
    lcd.print("POWER led   on");
    delay(2000);

  }
else if (heure <= 21) {
    analogWrite(power_led, 0);
  }
 
//****Gestion de l'Affichage Sur l'écran ******** 

 //Affichage température*****************************************************************************

  lcd.setCursor(10,0);
  lcd.print(temp);
  lcd.print((char)223);

  //Affichage heure******************************************************************************************
  lcd.setCursor(0,0);
  if (heure < 10)
  {
    lcd.print("0");
  }
  lcd.print(RTC.get(DS1307_HR,true));
  lcd.print("H");
  if (minut < 10)
  {
    lcd.print("0");
  }
  lcd.print(RTC.get(DS1307_MIN,false));
  lcd.print(" ");
  delay (100);
    //****Affichage ventilateur ********

  lcd.setCursor(0,1);
  if(digitalRead(ventilateur) == HIGH)
  {
    lcd.println("ventilateur ON   ");
   int millis (5000);
  }
  else
  {
    lcd.println("ventilateur OFF  ");
int millis (5000);
  }
 

}

tu utilise quelle version de l'IDE arduino?

sinon déjà pour le ds1307 .. y'a la lib ds1307new qui existe..

Tien voilà une p'tite version que j'ai fais .. j'ai organiser le code .. tester sur mon afficheur .. pas de blocage..

#include <LiquidCrystal.h>
#include <Wire.h>
#include <DS1307new.h>

/*
 sorti /entre Arduino
 Analog Pin 0 = Température Sensor
 Analog Pin 4 = SDA pour ds1307
 Analog Pin 5 = SCL pour ds1307
 Digital Pin 2 = LCD
 Digital Pin 3 = LCD
 Digital Pin 4 = LCD
 Digital Pin 5 = LCD
 Digital Pin 6 = power led
 Digital Pin 7 = ventilateur
 Digital pin 9 = rouge 
 Digital pin 10 = blanc
 Digital Pin 11 = LCD
 Digital Pin 12 = LCD
 Digital Pin 8 = bleu uv
 */

//Configuration des Pin de cablage**********************

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin          = 0;
int power_led          = 6;
int bleu_uv            = 8;
int rouge              = 10;
int blanc              = 9;
int ventilateur        = 7;

// variable
int timerPWM           = 0;
int valeurPWM          = 0;
float GAMMA_CORRECTION = 2.2;
float PWMStep          = 0;
int SeuilMini          = 15;
int temp               = 0;
//Configuration des heures allumage/extinction ( format HHMM )**********************

int bleu_uv_on_time      = 1930; //allume la pompe à cette heure 
int bleu_uv_off_time     = 2359; //éteint la pompe à cette heure
int ventilateur_on_temp  = 27;   //allume chauffage à cette température
int ventilateur_off_temp = 26.3; //éteint le chauffage à cette température


int temps;         // plus d'utilité d'avoir les autres avec le ds1307new.. exemple: RTC.hour est une variable.. 
int oldMinute = 0; // pour eviter de faire la boucle tout le temps.

//Configuration de l'heure ( pour modifier l'heure de votre Arduino, enlevez les /* et */ puis une foi le programe envoyé, remettez les )**********************

void setup(void) {
  Serial.begin(9600); 
  
  /* Reglage horloge */
  /*RTC.stopClock();
  RTC.fillByYMD(2012,9,10); // Annéé, mois, jour
  RTC.fillByHMS(8,29,50);   // heure, minute, seconde
  RTC.setTime();
  RTC.startClock();
  */
  //Configuration des entrées/sorties********************** 
  
  pinMode(ventilateur, OUTPUT);  // digital pin ventilateur 1 
  pinMode(bleu_uv,     OUTPUT);  // digital pin pour bleu uv
  pinMode(blanc,       OUTPUT);  // digital pin pour blanc
  pinMode(rouge,       OUTPUT);  // digital pin pour rouge
  pinMode(power_led,   OUTPUT);  // digital pin pour power led
  
  /* Reglage lcd */
  lcd.begin(16, 2); 
}

void loop(void){
  getTemps();
  getTempAndVent();
  
  //****Gestion de l'Affichage Sur l'écran ******** 
  afficheTemperature();
  afficheVentilation();
  
  if(RTC.minute != oldMinute) { // petite astuce qui permet de faire les calcule et l'affichage qu'une fois par minute.
    //**** Affiche l'heure et minute 
    afficheHorloge();
    
    //*****Controle des sorties eclairage *********
    lumiereBleu();
    lumiereRouge();
    powerLed();
    oldMinute = RTC.minute;
  }
}

void getTemps(void) {
  RTC.getTime();  // récupération de temps et du jour
  temps = (RTC.hour * 100) + RTC.minute; 
  Serial.println(RTC.hour);
}
  
void getTempAndVent(void) {
  //Récupération de la température du LM35 ****
  temp = analogRead(sensorPin);  
  temp = temp * 0.48828125;
  
  //****************ventilateur
  if(temp > ventilateur_on_temp){
    digitalWrite(ventilateur, HIGH);
  } else if(temp < ventilateur_off_temp) {    
    digitalWrite(ventilateur, LOW);
  }
}
  
void lumiereBleu(void) {
  //**on-off******* bleu uv *************
  if(bleu_uv_on_time > temps  || bleu_uv_off_time <= temps){
    digitalWrite(bleu_uv, LOW);
  } else { 
    digitalWrite(bleu_uv, HIGH);
  }
}
  
void lumiereRouge(void) {
  //***on-off***** rouge ***
  if (RTC.hour ==  8) { 
    PWMStep = 255 / 59;
    timerPWM = RTC.minute-60;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
    lcd.setCursor(0,1);
    lcd.print(" + + ROUGE + +  ");
  } else if ((RTC.hour == 20) && (RTC.minute >30)) { // entre 20:00 et 20:59:59 
    PWMStep = 255 / 29;
    timerPWM = 30-RTC.minute;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
    lcd.setCursor(0,1);
    lcd.print(" - - ROUGE - -  ");
  } else if ((RTC.hour >= 9 ) && (RTC.hour < 21)) {
    analogWrite(rouge, 255);
    lcd.setCursor(0,1);
    lcd.print("ROUGE     on    ");
  } else if (RTC.hour <= 21) {
    analogWrite(rouge, 0);
  }
  delay(2000);
}

void powerLed(void) {
  //***on-off***** power led ***
  if (RTC.hour ==  9)  { 
    PWMStep = 255 / 59;
    timerPWM = RTC.minute-60;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (power_led, valeurPWM);
    if( valeurPWM < SeuilMini ) valeurPWM = 0;
    lcd.setCursor(0,1);
    lcd.print(" + POWER led +  ");
  } else if (RTC.hour == 20) { // entre 20:00 et 20:59:59 
    PWMStep = 255 / 60;
    timerPWM = 60-RTC.minute;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (power_led, valeurPWM);
    if( valeurPWM < SeuilMini ) valeurPWM = 0;
    lcd.setCursor(0,1);
    lcd.print(" - POWER led -  ");
  } else if ((RTC.hour >= 10 ) && (RTC.hour < 21)) {
    analogWrite(power_led, 255);
    lcd.setCursor(0,1);
    lcd.print("POWER led   on  ");
  } else if (RTC.hour <= 21) {
    analogWrite(power_led, 0);
  }
  delay(2000);
}
  
void afficheTemperature(void) {
  //Affichage température
  lcd.setCursor(10,0);
  lcd.print(temp);
  lcd.print((char)223);
}

void afficheHorloge(void) {
  //Affichage horloge
  lcd.setCursor(0,0);
  // heure
  if (RTC.hour < 10) lcd.print("0");
  lcd.print(RTC.hour);
  lcd.print("H");
  // minute
  if (RTC.minute < 10) lcd.print("0");
  lcd.print(RTC.minute);
  lcd.print(" ");
}

void afficheVentilation(void) {
  //****Affichage ventilateur ********
  lcd.setCursor(0,1);
  if(digitalRead(ventilateur) == HIGH) {
    lcd.print("Ventilateur ON  ");
  } else  {
    lcd.print("Ventilateur OFF ");
  }
}

tu remarquera qu'il y'a une condition avec oldMinute.. tout tes calcules sont fais par rapport aux minute donc inutile de les faire toute les secondes..
Par contre j'ai changer le ds1307 par ds1307New .. (celui que j'utilise maintenant) .. apres a toi de faire avec celui que tu veux.. ^^..
j'ai juste fais le test d'affichage.. pas regarder le reste.. si le reste tourné déjà .. normalement pas de raison qu'il tourne plu..

voilà j'espere t'avoir aidé un poil.. ^^.. 30min a perdre.. avec le montage.. ^^..

Salut,

Desoler de ne pas avoir repondu avant mais j'etait sur la route du retour des vacance =(
Tout d abord MERCI.
Je vient de teste le code modifier mais l'heure ne s’affiche pas a la place j'ai : 0!(une barre vertical)H
J'ai bien télécharger la libraire ds1307new et je n'est pas d'erreur.
Pourquoi cette affichage ?

alors.. la bizarre... j'ai tester l'affichage.. sa fonctionner .. ton branchement avec le ds1307 et bon? pas inverser? (sa met arrivé hier.. lol)..

salut

Avec mon code j'ai bien l'heure qui s'affichait donc mes branchement son ok.

bizarre.. sinon ben remet la lib ds1307 et rechange comme tu l'avais fais ..

ok c'est se que je vais faire mais du coup comment solutionner mon delay d'affichage ?
en ajoutant ta formule oldMinute ?

ben sa reste pareil.. tu garde mon code.. et tu rajoute juste

 heure = RTC.get(DS1307_HR,true);  
  minut = RTC.get(DS1307_MIN,false);
  seconde = RTC.get(DS1307_SEC,false);
  date = RTC.get(DS1307_DATE,false);
  mois = RTC.get(DS1307_MTH,false);
  annee = RTC.get(DS1307_YR,false);
  temps_perso = (heure * 100) + minut;

dans la fonction getTemps();
sans oublie les déclaration avant..

puis apres dans les fonctions d'allumage led tu remplace RTC.hour par heure et RTC.minute par minute..

bonjour,

voila tout marche correctement :slight_smile:
merci a tout se qui mon aider depuis le début.

voici mon code pour tout les germanophile

#include "LiquidCrystal.h"
#include "WProgram.h"
#include "Wire.h"
#include "DS1307.h"

/*
 sorti /entre Arduino
 Analog Pin 0 = Température Sensor
 Analog Pin 4 = SDA pour ds1307
 Analog Pin 5 = SCL pour ds1307
 Digital Pin 2 = LCD
 Digital Pin 3 = LCD
 Digital Pin 4 = LCD
 Digital Pin 5 = LCD
 Digital Pin 6 = power led
 Digital Pin 7 = ventilateur
 Digital pin 9 = rouge 
 Digital pin 10 = blanc
 Digital Pin 11 = LCD
 Digital Pin 12 = LCD
 Digital Pin 8 = bleu uv
 */

//Configuration des Pin de cablage**********************

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0;
int power_led = 6;
int bleu_uv = 8;
int rouge = 10;
int blanc = 9;
int ventilateur = 7;
int time;
float temp;
int timerPWM = 0;
int valeurPWM=0;
float PWMStep = 0;

//Configuration des heures allumage/extinction ( format HHMM )**********************

int bleu_uv_on_time = 2030;  
int bleu_uv_off_time = 2359; 
int ventilateur_on_temp = 26.75;  
int ventilateur_off_temp = 26.00;

int minut;
int heure;
int temps_perso;

//Configuration de l'heure ( pour modifier l'heure de votre Arduino, enlevez les /* et */ puis une foi le programe envoyé, remettez les )**********************

void setup() {
   /*
  RTC.stop();
  RTC.set(DS1307_SEC,30);           //réglage secondes
  RTC.set(DS1307_MIN,52);              //réglage minutes
  RTC.set(DS1307_HR,11);               //réglage heures
  RTC.set(DS1307_DOW,6);               //réglage jour de la semaine
  RTC.set(DS1307_DATE,15);             //réglage date
  RTC.set(DS1307_MTH,9);               //réglage mois
  RTC.set(DS1307_YR,12);                 //réglage année
  RTC.start();
  */
  
 //Configuration des entrées/sorties********************** 
  
  pinMode(ventilateur, OUTPUT);  // digital pin ventilateur 1 
  pinMode(bleu_uv, OUTPUT);  // digital pin pour bleu uv
  pinMode(blanc, OUTPUT);  // digital pin pour blanc
  pinMode(rouge, OUTPUT);  // digital pin pour rouge
  pinMode(power_led, OUTPUT);  // digital pin pour power led

lcd.begin(16,2);
Serial.begin(9600);  

}

void loop(){
 
   //Récupération de la température du LM35 ***************************************************************************************

 int reading = analogRead(sensorPin);  
  float voltage = reading * 5.52 / 1024;
  int temp = voltage * 100 ;
 
  //Récupération de l'heure du DS1307**********************************************************************************************

  heure = RTC.get(DS1307_HR,true);  
  minut = RTC.get(DS1307_MIN,false);
  temps_perso = (heure * 100) + minut; 
 
  
  lcd.clear();
   lcd.setCursor(0,0);
   lcd.print ("  AQUA GESTION  ");
       lcd.setCursor(6,1);
  if (heure < 10)
  {
    lcd.print("0");
  }
  lcd.print(heure);
  lcd.print("H");
  if (minut < 10)
  {
    lcd.print("0");
  }
  lcd.print(minut);
  lcd.print(" ");   
   delay(5000);
    lcd.setCursor(0,1);
  lcd.print("       ");
  lcd.print(temp);
  lcd.print((char)223);
  lcd.print("      ");
  delay(5000);

   lcd.setCursor(0,0);
   lcd.print ("    GESTION     ");
  lcd.setCursor(0,1);
   lcd.print ("      lune      ");
   delay(1500);
   lcd.setCursor(0,1);
   lcd.print ("     soleil      ");
   delay(1500);
     lcd.setCursor(0,1);
     lcd.print ("  temperature   ");
   delay(1500);
    lcd.setCursor(0,1);
     lcd.print ("  niveau d'eau  ");
   delay(1500);
   lcd.clear();
  
    //Affichage heure******************************************************************************************
  lcd.setCursor(0,0);
  if (heure < 10)
  {
    lcd.print("0");
  }
  lcd.print(heure);
  lcd.print("H");
  if (minut < 10)
  {
    lcd.print("0");
  }
  lcd.print(minut);
  lcd.print(" ");
  delay (100);


 
  //Affichage température*****************************************************************************

  lcd.setCursor(13,0);
  lcd.print(temp);
  lcd.print((char)223);

  //****************ventilateur
   if(temp > ventilateur_on_temp){
    digitalWrite(ventilateur, HIGH);
      }  
  if(temp < ventilateur_off_temp){    
    digitalWrite(ventilateur, LOW);
  }
  

  
    //*****Controle des sorties eclairage *********
  
   //**on-off******* bleu uv *************
  if(bleu_uv_on_time > temps_perso  || bleu_uv_off_time <= temps_perso){
    digitalWrite(bleu_uv, LOW);
   }
  else{
    
    digitalWrite(bleu_uv, HIGH);
   }
   
    //***on-off***** rouge ***
  
if (heure ==  8)  { 
    PWMStep = 255 / 59;
    timerPWM = minut-60;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
  lcd.setCursor(0,1);
    lcd.print(" + + ROUGE + +  ");
    delay(5000);
  }
  
 else if ((heure == 20) && (minut >30)) { 
    PWMStep = 255 / 29;
    timerPWM = 30-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (rouge, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" - - ROUGE - -  ");
    delay(5000);
 
  }  
  
  else if ((heure >= 9 ) && (heure < 21)) {
    analogWrite(rouge, 255);
   lcd.setCursor(0,1);
    lcd.print("  ROUGE     on  ");
    delay(5000);
  }
else if ((heure <= 21) && (heure > 8 )){
    analogWrite(rouge, 0);
  }
   
 //***on-off***** blanc ***
  
 if ((heure ==  8) && (minut >30)) { 
    PWMStep = 255 / 29;
    timerPWM = minut-30;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (blanc, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" + + BLANC + +  ");
    delay(5000);
  
  }
  
 else if (heure == 20) { 
    PWMStep = 255 / 60;
    timerPWM = 60-minut;
    valeurPWM = (int)(timerPWM * PWMStep);
    analogWrite (blanc, valeurPWM); 
lcd.setCursor(0,1);
    lcd.print(" - - BLANC - -  ");
    delay(5000);
  }  
  
  else if ((heure >= 9 ) && (heure < 21)) {
    analogWrite(blanc, 255);
    lcd.setCursor(0,1);
    lcd.print("  BLANC     on  ");
    delay(5000);
  }
else if ((heure <= 21) && (heure > 8 )){
    analogWrite(blanc, 0);
  }

//***on-off***** power led ***

  if ((heure ==  9) && (minut >3))  { 
    PWMStep = 240 / 59;
    timerPWM = minut-60;
    valeurPWM = (int)(timerPWM * PWMStep)+ 15;
    analogWrite (power_led, valeurPWM);
    
lcd.setCursor(0,1);
    lcd.print(" + POWER led +  ");
    delay(5000);

  }
else if (heure == 20) { // entre 20:00 et 20:59:59 
    PWMStep = 240 / 60;
    timerPWM = 60-minut;
    valeurPWM = (int)(timerPWM * PWMStep) + 15;
    analogWrite (power_led, valeurPWM);
lcd.setCursor(0,1);
    lcd.print(" - POWER led -  ");
    delay(5000);

  }
else if ((heure >= 10 ) && (heure < 21)) {
    analogWrite(power_led, 255);
lcd.setCursor(0,1);
    lcd.print(" POWER led   on ");
    delay(5000);

  }
else if ((heure <= 21) && (heure > 9 )){
    analogWrite(power_led, 0);
  } 
       //****Affichage ventilateur ********

  lcd.setCursor(0,1);
  if(digitalRead(ventilateur) == HIGH)
  {
    lcd.println("ventilateur ON  ");
   delay(5000);
  }
  else
  {
    lcd.println("ventilateur OFF ");
    delay(5000);
  }
 }