Millis contre micmich ;millis 1,micmich 0

Bonjour et merci à ceux qui m'aideront
le problème:dans mon code je veux afficher des données sur un lcd pendant 5 secondes puis un autre affichage pendant 5 secondes,ce que j'ai codé marche si je commente les lignes 184 à 225 mais affiche n'importe quoi si je décommente et je ne comprends pas pourquoi ?
mon code:

[code]







#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

LiquidCrystal_I2C ecran(0x27, 16, 2);

// Broche du bus 1-Wire
const byte BROCHE_ONEWIRE = 12;

// Adresses des capteurs de température

const byte SENSOR_ADDRESS_0[] = { 0x28, 0x9D, 0x6C, 0x73, 0x4C, 0x20, 0x01, 0xE0 };// T° depart chauffage
const byte SENSOR_ADDRESS_1[] = { 0x28, 0x47, 0x08, 0x2F, 0x46, 0x20, 0x01, 0x45 };// T° retour chauffage
const byte SENSOR_ADDRESS_3[] = { 0x28, 0xC6, 0xA4, 0x11, 0x4C, 0x20, 0x01, 0xBD };// T° ballon milieux
const byte SENSOR_ADDRESS_2[] = { 0x28, 0xF6, 0x8D, 0x78, 0x4C, 0x20, 0x01, 0x58 };// T° ballon bas
const byte SENSOR_ADDRESS_4[] = { 0x28, 0xF6, 0x8A, 0x23, 0x46, 0x20, 0x01, 0x2F };// T° depart resistance
const byte SENSOR_ADDRESS_5[] = { 0x28, 0xEF, 0x00, 0xE5, 0x4B, 0x20, 0x01, 0xB4 };// T° arrivée resistance
/*
  const byte SENSOR_ADDRESS_0[] = { 0x28, 0xE8, 0x7C, 0x75, 0xD0, 0x01, 0x3C, 0x33 };
  const byte SENSOR_ADDRESS_1[] = { 0x28, 0xCA, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x47 };
  const byte SENSOR_ADDRESS_2[] = { 0x28, 0x63, 0x73, 0x75, 0xD0, 0x01, 0x3C, 0x4E };
  const byte SENSOR_ADDRESS_3[] = { 0x28, 0x2E, 0x53, 0x75, 0xD0, 0x01, 0x3C, 0x89 };
  const byte SENSOR_ADDRESS_4[] = { 0x28, 0x5B, 0x5D, 0x75, 0xD0, 0x01, 0x3C, 0x58 };
  const byte SENSOR_ADDRESS_5[] = { 0x28, 0x87, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x78 };
*/
// Création de l'objet OneWire pour manipuler le bus 1-Wire
OneWire ds(BROCHE_ONEWIRE);



// Fonction de démarrage de la prise de mesure de la température via un capteur DS18B20.

void startTemperatureMeasure(const byte addr[]) {
  // addr[] : Adresse du module 1-Wire détecté

  // 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);
}




// Fonction de récupération de la prise de mesure de la température via un capteur DS18B20.

float readTemperatureMeasure(const byte addr[])// addr[] : Adresse du module 1-Wire détecté
{
  byte data[9];  // data[] : Données lues depuis le scratchpad



  // 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
  return ((data[1] << 8) | data[0]) * 0.0625;
}
const int entreeTpSecurResistance = A2 ;// broche A3 reçois 5 volts sur circuit thermostat2 resistance fermé
const int entreeTpDepResist = A3;//broche 13 reçois 5 volts sur circuit thermostat resistance fermé
const int entreeTpBallon = A1;//broche A1 reçois 5 volts sur circuit termostat ballon fermé
const int entreeVoltPressostat = A0;//broche A0 reçois 5 volts sur circuit pressostat fermé


//relais statiques LOW = marche
//const int relaisVanne = 4;   //broche relais statique vanne
const int relaisTransfo = 5;  //broche relais statique enclenchement transfo et pac
const int relaisCircResistance = 6;   //broche relais statique circulateur resistance
const int relaisResistance = 7;//broche relais statique resistance(relais NF)

const int relaisOffPac = 8;// enclenche le off de la pac
const int relaisVentilateur9 = 9;   //broche relais elecmeca ventilateur
//const int relaisVentilateur10 = 10;   //broche relais elecmeca ventilateur
//const int relaisTransfo = 11; //broche relais elecmeca
int affichageLcd = 1;
int valResistancesecur = 0;
int valThBallon = 0;
int valResistance = 0;
int valPressostat = 0;
int reglTempBallon = 40;

const int pinBoutonPlus = 2 ;
const int pinBoutonMoins = 3 ;
volatile int etatBoutonPlus;
volatile int etatBoutonMoins;
unsigned long delaisLcd;// = 0;
unsigned long delaisLcd1;// = 0;

const unsigned long period = 15000;
unsigned long delais;
unsigned long delais2;

void setup()
{


  // digitalWrite(relaisCircPlancher, HIGH);
  //  digitalWrite (relaisVanne,LOW);
  digitalWrite(relaisOffPac, HIGH);
  digitalWrite(relaisTransfo , HIGH);
  digitalWrite(relaisCircResistance, HIGH);
  digitalWrite(relaisResistance, HIGH);
  // digitalWrite(relaisVentilateur10,HIGH);
  digitalWrite(relaisVentilateur9, HIGH);
  pinMode (relaisVentilateur9, OUTPUT);
  // pinMode (relaisVentilateur10, OUTPUT);
  pinMode (relaisOffPac, OUTPUT);
  pinMode (relaisCircResistance, OUTPUT);
  pinMode (relaisResistance, OUTPUT);
  pinMode (relaisTransfo , OUTPUT);
  pinMode (pinBoutonPlus, INPUT_PULLUP);
  pinMode (pinBoutonMoins, INPUT_PULLUP);

  etatBoutonMoins = LOW;
  etatBoutonPlus = LOW;
  // ecran.init();
  Serial.begin(9600);

}
void loop()
{


  boolean etatBoutonPlus = digitalRead(pinBoutonPlus);
  boolean etatBoutonMoins = digitalRead(pinBoutonMoins);

  //test des conditions
  if (etatBoutonPlus == HIGH) //test si bouton 1 appuyé
  {
    reglTempBallon++;//= reglTempBallon + 1;
    delay(50);
  }
  if (etatBoutonMoins == HIGH) //test si bouton 2 appuyé
  {
    reglTempBallon--;//= reglTempBallon - 1;
    delay(50);
  }

  float temperature[6];

  // Lit les températures des six capteurs

  startTemperatureMeasure(SENSOR_ADDRESS_0);// T° depart chauffage
  temperature[0] = readTemperatureMeasure(SENSOR_ADDRESS_0);  // T° depart chauffage

  startTemperatureMeasure(SENSOR_ADDRESS_1);// T° arrivée chauffage
  temperature[1] = readTemperatureMeasure(SENSOR_ADDRESS_1);  // T° arrivée chauffage

  startTemperatureMeasure(SENSOR_ADDRESS_3);// T° ballon milieux
  temperature[2] = readTemperatureMeasure(SENSOR_ADDRESS_3);  // T°ballon milieux

  startTemperatureMeasure(SENSOR_ADDRESS_2);// T° ballon bas
  temperature[3] = readTemperatureMeasure(SENSOR_ADDRESS_2);  // T° ballon bas

  startTemperatureMeasure(SENSOR_ADDRESS_4);// T° depart resistance
  temperature[4] = readTemperatureMeasure(SENSOR_ADDRESS_4);  // T° depart resistance

  startTemperatureMeasure(SENSOR_ADDRESS_5);// T° arrivée resistance
  temperature[5] = readTemperatureMeasure(SENSOR_ADDRESS_5);  //  T° arrivée resistance

  valResistance = analogRead(entreeTpDepResist);
  valResistancesecur = analogRead(entreeTpSecurResistance);
  valThBallon = analogRead(entreeTpBallon);
  valPressostat = analogRead(entreeVoltPressostat);

  //LOW diode relais allumée relais marche,HIGH diode eteinte relais arret_____________________________________________________________

  if (valThBallon > 800 )
  {
    digitalWrite (relaisOffPac , LOW); // enclenche "on" le OnOff de la pac
    digitalWrite (relaisTransfo , LOW);//enclenche les transfos de reduction de tension
    digitalWrite(relaisVentilateur9, LOW); //enclenche les ventilos
  }

  if (valThBallon < 800)
  {
    digitalWrite (relaisOffPac , HIGH); // coupe "off" le onOff de la pac,arret pac
  }

  if (valThBallon > 800) delais = millis();
  if ((valThBallon < 800) && (millis() - delais >= period))
  {
    digitalWrite (relaisTransfo , HIGH);   //arret transfo
    digitalWrite(relaisVentilateur9, HIGH); //arret ventilo
  }
  //______________________________________________________________________

  if (temperature [4] > 25 )//si la temperature de la resistance est plus grande que 90°
  {
    digitalWrite(relaisResistance, HIGH);//arrete la resistance
  }


  if (temperature [4] < 25) delais2 = millis();
  if ((temperature [4] > 25 ) && (millis() - delais2 >= period))
  {
    digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
  }



  else if (temperature [4] < 24)
  {
    digitalWrite(relaisResistance, LOW);//met en marche la resistance
    digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
  }


  //____________________________________________________________________

  if (millis() - delaisLcd >= 5000)
  {
    ecran.init();
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("T.depChauff: ");
    ecran.print(1);
    ecran.setCursor(0, 1);
    ecran.print("T.arrChauff : ");
    ecran.print(2);
    /*  ecran.setCursor(0, 2);
      ecran.print("Th.ballonM: ");
      ecran.print(valThBallon);
      ecran.setCursor(0, 3);
      ecran.print("T.ballonB: ");
      ecran.print(temperature [2]);*/
    //  delaisLcd = millis();

  }
  if (millis() - delaisLcd1 >= 10000)
  {
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("ThDepResist: ");
    ecran.print(3);
    ecran.setCursor(0, 1);
    ecran.print("securResist: ");
    ecran.print(4);
    /* ecran.setCursor(0, 2);
      ecran.print("Pressostat:  ");
      ecran.print(valPressostat);
      ecran.setCursor(0, 3);
      ecran.print("regTBallon:  ");
      ecran.print(reglTempBallon);*/
    //  delaisLcd1 = millis();

  }

  /*
    // Affiche les températures

      Serial.print(F("Temperatures : "));

      Serial.println();
      Serial.print(F("T depart chauffage : "));
      Serial.print(temperature[0], 2);

      Serial.println();
      Serial.print(F("T ballon milieux : "));
      Serial.print(temperature[2], 2);

      Serial.println();
      Serial.print(F("T ballon bas : "));
      Serial.print(temperature[3], 2);

      Serial.println();
      Serial.print(F("T depart resist : "));
      Serial.print(temperature[4], 2);

      Serial.println();
      Serial.print(F("T arrivee resist : "));
      Serial.print(temperature[5], 2);

      Serial.println();
      Serial.print(F("T arrivee chauff : "));
      Serial.print(temperature[1], 2);
      Serial.println();
  */

  //digitalWrite(relaisTransfo,LOW);
  /*
    //si la temperature de la resistance > depart pac ou T° resistance > T° ballon bas ,t4=resistance,t1=arrivée pac,t3=ballon bas,t0=depart pac
    if (valResistance > 55)//||(temperature[0]+2)) || (temperature[4] > (temperature[3])))
    {
     digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
    }
    else if (valResistance < 55)
    {
     digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
    } */
}
[/code]

je viens de voir que delaisLcd = millis() et delaisLcd1 = millis() sont commentés
alors que quand j'ai testé ils etaient décommentés,j'ai juste oublié de les décommentés lorsque j'ai inséré le code

vous ne maintenez pas delaisLcd à la bonne valeur.

si vous voulez alterner plusieurs affichages avec la même période, il y a sans doute plus simple

// les fonctions qui font l'affichage que vous voulez 
void affichageTemperature() { ...}
void affichageHumidite() { ...}


void alternerAffichage() {
  const unsigned long dureeAffichage = 5000ul;
  static unsigned long dernierAffichage = -dureeAffichage;
  static byte numeroAffichage = 0;

  if (millis() - dernierAffichage >= dureeAffichage) {     // il est temps de permuter l'affichage
    numeroAffichage = 1 - numeroAffichage;                 // alterne entre   0 et 1
    switch( numeroAffichage) {
      case 0: affichageTemperature(); break;
      case 1: affichageHumidite();    break;
      default: break;  /* c'est une erreur on ne devrait pas arriver là */
    }
    dernierAffichage = millis();
  }
}

si vous avez plus de 2 affichages, vous pouvez utiliser numeroAffichage et l'incrémenter puis revenir à 0 et rajouter des case dans le switch

dans la loop vous appelez alternerAffichage() et ça va gérer cela pour vous

merci ,je vais essayer ça,je me doutais qu'un switch pouvait faire l'affaire mais je ne maitrise pas encore

Mais je comprends quand même pas pourquoi le code marche quand je commente les lignes précédentes et ne marche plus lorsque je les décommente soit:

[code]
  if (valThBallon > 800 )
  {
    digitalWrite (relaisOffPac , LOW); // enclenche "on" le OnOff de la pac
    digitalWrite (relaisTransfo , LOW);//enclenche les transfos de reduction de tension
    digitalWrite(relaisVentilateur9, LOW); //enclenche les ventilos
  }

  if (valThBallon < 800)
  {
    digitalWrite (relaisOffPac , HIGH); // coupe "off" le onOff de la pac,arret pac
  }

  if (valThBallon > 800) delais = millis();
  if ((valThBallon < 800) && (millis() - delais >= period))
  {
    digitalWrite (relaisTransfo , HIGH);   //arret transfo
    digitalWrite(relaisVentilateur9, HIGH); //arret ventilo
  }
  //______________________________________________________________________

  if (temperature [4] > 25 )//si la temperature de la resistance est plus grande que 90°
  {
    digitalWrite(relaisResistance, HIGH);//arrete la resistance
  }


  if (temperature [4] < 25) delais2 = millis();
  if ((temperature [4] > 25 ) && (millis() - delais2 >= period))
  {
    digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
  }



  else if (temperature [4] < 24)
  {
    digitalWrite(relaisResistance, LOW);//met en marche la resistance
    digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
  }


[/code]

Je ne sais pas ce que vous voulez dire par marche ou marche pas

je veux dire que lorsque je commente les lignes postées en 5 l'alternance d'affichage s'effectue sans problème ,lorsque je les décommente l'alternance ne s'effectue plus et le lcd affiche des caractères erratiques et je ne vois pas pourquoi le fait de les décommenter influe sur l'affichage

vous avez conservé le pb que delaisLcd et delaisLcd1 ne sont pas mis à jour ?

➜ postez tout le code (proprement)

oui,comme je l'ai précisé en 2 j'ai oublié de décommenté ces lignes commentées suite à des tentatives pour résoudre le problème
voilà le code avec les lignes delaisLcd = millis(); et delaisLcd1 = millis(); décommentées

[code]







#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

LiquidCrystal_I2C ecran(0x27, 16, 2);

// Broche du bus 1-Wire
const byte BROCHE_ONEWIRE = 12;

// Adresses des capteurs de température

const byte SENSOR_ADDRESS_0[] = { 0x28, 0x9D, 0x6C, 0x73, 0x4C, 0x20, 0x01, 0xE0 };// T° depart chauffage
const byte SENSOR_ADDRESS_1[] = { 0x28, 0x47, 0x08, 0x2F, 0x46, 0x20, 0x01, 0x45 };// T° retour chauffage
const byte SENSOR_ADDRESS_3[] = { 0x28, 0xC6, 0xA4, 0x11, 0x4C, 0x20, 0x01, 0xBD };// T° ballon milieux
const byte SENSOR_ADDRESS_2[] = { 0x28, 0xF6, 0x8D, 0x78, 0x4C, 0x20, 0x01, 0x58 };// T° ballon bas
const byte SENSOR_ADDRESS_4[] = { 0x28, 0xF6, 0x8A, 0x23, 0x46, 0x20, 0x01, 0x2F };// T° depart resistance
const byte SENSOR_ADDRESS_5[] = { 0x28, 0xEF, 0x00, 0xE5, 0x4B, 0x20, 0x01, 0xB4 };// T° arrivée resistance
/*
  const byte SENSOR_ADDRESS_0[] = { 0x28, 0xE8, 0x7C, 0x75, 0xD0, 0x01, 0x3C, 0x33 };
  const byte SENSOR_ADDRESS_1[] = { 0x28, 0xCA, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x47 };
  const byte SENSOR_ADDRESS_2[] = { 0x28, 0x63, 0x73, 0x75, 0xD0, 0x01, 0x3C, 0x4E };
  const byte SENSOR_ADDRESS_3[] = { 0x28, 0x2E, 0x53, 0x75, 0xD0, 0x01, 0x3C, 0x89 };
  const byte SENSOR_ADDRESS_4[] = { 0x28, 0x5B, 0x5D, 0x75, 0xD0, 0x01, 0x3C, 0x58 };
  const byte SENSOR_ADDRESS_5[] = { 0x28, 0x87, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x78 };
*/
// Création de l'objet OneWire pour manipuler le bus 1-Wire
OneWire ds(BROCHE_ONEWIRE);



// Fonction de démarrage de la prise de mesure de la température via un capteur DS18B20.

void startTemperatureMeasure(const byte addr[]) {
  // addr[] : Adresse du module 1-Wire détecté

  // 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);
}




// Fonction de récupération de la prise de mesure de la température via un capteur DS18B20.

float readTemperatureMeasure(const byte addr[])// addr[] : Adresse du module 1-Wire détecté
{
  byte data[9];  // data[] : Données lues depuis le scratchpad



  // 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
  return ((data[1] << 8) | data[0]) * 0.0625;
}
const int entreeTpSecurResistance = A2 ;// broche A3 reçois 5 volts sur circuit thermostat2 resistance fermé
const int entreeTpDepResist = A3;//broche 13 reçois 5 volts sur circuit thermostat resistance fermé
const int entreeTpBallon = A1;//broche A1 reçois 5 volts sur circuit termostat ballon fermé
const int entreeVoltPressostat = A0;//broche A0 reçois 5 volts sur circuit pressostat fermé


//relais statiques LOW = marche
//const int relaisVanne = 4;   //broche relais statique vanne
const int relaisTransfo = 5;  //broche relais statique enclenchement transfo et pac
const int relaisCircResistance = 6;   //broche relais statique circulateur resistance
const int relaisResistance = 7;//broche relais statique resistance(relais NF)

const int relaisOffPac = 8;// enclenche le off de la pac
const int relaisVentilateur9 = 9;   //broche relais elecmeca ventilateur
//const int relaisVentilateur10 = 10;   //broche relais elecmeca ventilateur
//const int relaisTransfo = 11; //broche relais elecmeca
int affichageLcd = 1;
int valResistancesecur = 0;
int valThBallon = 0;
int valResistance = 0;
int valPressostat = 0;
int reglTempBallon = 40;

const int pinBoutonPlus = 2 ;
const int pinBoutonMoins = 3 ;
volatile int etatBoutonPlus;
volatile int etatBoutonMoins;
unsigned long delaisLcd;// = 0;
unsigned long delaisLcd1;// = 0;

const unsigned long period = 15000;
unsigned long delais;
unsigned long delais2;

void setup()
{


  // digitalWrite(relaisCircPlancher, HIGH);
  //  digitalWrite (relaisVanne,LOW);
  digitalWrite(relaisOffPac, HIGH);
  digitalWrite(relaisTransfo , HIGH);
  digitalWrite(relaisCircResistance, HIGH);
  digitalWrite(relaisResistance, HIGH);
  // digitalWrite(relaisVentilateur10,HIGH);
  digitalWrite(relaisVentilateur9, HIGH);
  pinMode (relaisVentilateur9, OUTPUT);
  // pinMode (relaisVentilateur10, OUTPUT);
  pinMode (relaisOffPac, OUTPUT);
  pinMode (relaisCircResistance, OUTPUT);
  pinMode (relaisResistance, OUTPUT);
  pinMode (relaisTransfo , OUTPUT);
  pinMode (pinBoutonPlus, INPUT_PULLUP);
  pinMode (pinBoutonMoins, INPUT_PULLUP);

  etatBoutonMoins = LOW;
  etatBoutonPlus = LOW;

  Serial.begin(9600);


}
void loop()
{


  boolean etatBoutonPlus = digitalRead(pinBoutonPlus);
  boolean etatBoutonMoins = digitalRead(pinBoutonMoins);

  //test des conditions
  if (etatBoutonPlus == HIGH) //test si bouton 1 appuyé
  {
    reglTempBallon++;//= reglTempBallon + 1;
    delay(50);
  }
  if (etatBoutonMoins == HIGH) //test si bouton 2 appuyé
  {
    reglTempBallon--;//= reglTempBallon - 1;
    delay(50);
  }

  float temperature[6];

  // Lit les températures des six capteurs

  startTemperatureMeasure(SENSOR_ADDRESS_0);// T° depart chauffage
  temperature[0] = readTemperatureMeasure(SENSOR_ADDRESS_0);  // T° depart chauffage

  startTemperatureMeasure(SENSOR_ADDRESS_1);// T° arrivée chauffage
  temperature[1] = readTemperatureMeasure(SENSOR_ADDRESS_1);  // T° arrivée chauffage

  startTemperatureMeasure(SENSOR_ADDRESS_3);// T° ballon milieux
  temperature[2] = readTemperatureMeasure(SENSOR_ADDRESS_3);  // T°ballon milieux

  startTemperatureMeasure(SENSOR_ADDRESS_2);// T° ballon bas
  temperature[3] = readTemperatureMeasure(SENSOR_ADDRESS_2);  // T° ballon bas

  startTemperatureMeasure(SENSOR_ADDRESS_4);// T° depart resistance
  temperature[4] = readTemperatureMeasure(SENSOR_ADDRESS_4);  // T° depart resistance

  startTemperatureMeasure(SENSOR_ADDRESS_5);// T° arrivée resistance
  temperature[5] = readTemperatureMeasure(SENSOR_ADDRESS_5);  //  T° arrivée resistance

  valResistance = analogRead(entreeTpDepResist);
  valResistancesecur = analogRead(entreeTpSecurResistance);
  valThBallon = analogRead(entreeTpBallon);
  valPressostat = analogRead(entreeVoltPressostat);

  //LOW diode relais allumée relais marche,HIGH diode eteinte relais arret_____________________________________________________________

  if (valThBallon > 800 )
  {
    digitalWrite (relaisOffPac , LOW); // enclenche "on" le OnOff de la pac
    digitalWrite (relaisTransfo , LOW);//enclenche les transfos de reduction de tension
    digitalWrite(relaisVentilateur9, LOW); //enclenche les ventilos
  }

  if (valThBallon < 800)
  {
    digitalWrite (relaisOffPac , HIGH); // coupe "off" le onOff de la pac,arret pac
  }

  if (valThBallon > 800) delais = millis();
  if ((valThBallon < 800) && (millis() - delais >= period))
  {
    digitalWrite (relaisTransfo , HIGH);   //arret transfo
    digitalWrite(relaisVentilateur9, HIGH); //arret ventilo
  }
  //______________________________________________________________________

  if (temperature [4] > 25 )//si la temperature de la resistance est plus grande que 90°
  {
    digitalWrite(relaisResistance, HIGH);//arrete la resistance
  }


  if (temperature [4] < 25) delais2 = millis();
  if ((temperature [4] > 25 ) && (millis() - delais2 >= period))
  {
    digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
  }



  else if (temperature [4] < 24)
  {
    digitalWrite(relaisResistance, LOW);//met en marche la resistance
    digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
  }

  //____________________________________________________________________

  if (millis() - delaisLcd >= 5000)
  {
    ecran.init();
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("T.depChauff: ");
    ecran.print(1);
    ecran.setCursor(0, 1);
    ecran.print("T.arrChauff : ");
    ecran.print(2);

    delaisLcd = millis();

  }
  if (millis() - delaisLcd1 >= 10000)
  {
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("ThDepResist: ");
    ecran.print(3);
    ecran.setCursor(0, 1);
    ecran.print("securResist: ");
    ecran.print(4); 

    delaisLcd1 = millis();

  }

  /*
    // Affiche les températures

      Serial.print(F("Temperatures : "));

      Serial.println();
      Serial.print(F("T depart chauffage : "));
      Serial.print(temperature[0], 2);

      Serial.println();
      Serial.print(F("T ballon milieux : "));
      Serial.print(temperature[2], 2);

      Serial.println();
      Serial.print(F("T ballon bas : "));
      Serial.print(temperature[3], 2);

      Serial.println();
      Serial.print(F("T depart resist : "));
      Serial.print(temperature[4], 2);

      Serial.println();
      Serial.print(F("T arrivee resist : "));
      Serial.print(temperature[5], 2);

      Serial.println();
      Serial.print(F("T arrivee chauff : "));
      Serial.print(temperature[1], 2);
      Serial.println();
  */


}
[/code]

en gros vous faites

si durée1 > 5s faire xxx
si durée2 > 10s faire yyy

ça se chevauche... (toutes les 10s vous faites xxx puis l'effacez tout de suite pour faire yyy)

Merci pour tous ces renseignements,je vais essayer de me débrouiller avec le modèle que vous m'avez indiqué,je sens que je vais galérer un peu mais je vais peut être arriver à me servir de switch
en tous cas merci de votre attention

alors après bricolage des infos de J-M-Lj'ai ceci qui alterne l'affichage

[code]
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

LiquidCrystal_I2C ecran(0x27, 16, 2);

void affichageTemperature()
{ 
 ecran.init();
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("T.depChauff: ");
    ecran.print(1);
    ecran.setCursor(0, 1);
    ecran.print("T.arrChauff : ");
    ecran.print(2);

  
  }
void affichageHumidite() 
{
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("ThDepResist: ");
    ecran.print(3);
    ecran.setCursor(0, 1);
    ecran.print("securResist: ");
    ecran.print(4); 
  
  }


void alternerAffichage() {
  const unsigned long dureeAffichage = 5000ul;
  static unsigned long dernierAffichage = -dureeAffichage;
  static byte numeroAffichage = 0;

  if (millis() - dernierAffichage >= dureeAffichage) {     // il est temps de permuter l'affichage
    numeroAffichage = 1 - numeroAffichage;                 // alterne entre   0 et 1
    switch( numeroAffichage) {
      case 0: affichageTemperature(); break;
      case 1: affichageHumidite();    break;
      default: break;  /* c'est une erreur on ne devrait pas arriver là */
    }
    dernierAffichage = millis();
  }
}


void setup()
{ 
}
 
 void loop() {
  alternerAffichage();
 }
 // les fonctions qui font l'affichage que vous voulez 


[/code]

ensuite aprés l'avoir introduit dans mon code j'ai ceci qui n'alterne pas l'affichage et laisse un ecran vierge,l'alternance a lieu que si je commente le morceau de code poster en 5

[code]







#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

LiquidCrystal_I2C ecran(0x27, 16, 2);

// Broche du bus 1-Wire
const byte BROCHE_ONEWIRE = 12;

// Adresses des capteurs de température

const byte SENSOR_ADDRESS_0[] = { 0x28, 0x9D, 0x6C, 0x73, 0x4C, 0x20, 0x01, 0xE0 };// T° depart chauffage
const byte SENSOR_ADDRESS_1[] = { 0x28, 0x47, 0x08, 0x2F, 0x46, 0x20, 0x01, 0x45 };// T° retour chauffage
const byte SENSOR_ADDRESS_3[] = { 0x28, 0xC6, 0xA4, 0x11, 0x4C, 0x20, 0x01, 0xBD };// T° ballon milieux
const byte SENSOR_ADDRESS_2[] = { 0x28, 0xF6, 0x8D, 0x78, 0x4C, 0x20, 0x01, 0x58 };// T° ballon bas
const byte SENSOR_ADDRESS_4[] = { 0x28, 0xF6, 0x8A, 0x23, 0x46, 0x20, 0x01, 0x2F };// T° depart resistance
const byte SENSOR_ADDRESS_5[] = { 0x28, 0xEF, 0x00, 0xE5, 0x4B, 0x20, 0x01, 0xB4 };// T° arrivée resistance
/*
  const byte SENSOR_ADDRESS_0[] = { 0x28, 0xE8, 0x7C, 0x75, 0xD0, 0x01, 0x3C, 0x33 };
  const byte SENSOR_ADDRESS_1[] = { 0x28, 0xCA, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x47 };
  const byte SENSOR_ADDRESS_2[] = { 0x28, 0x63, 0x73, 0x75, 0xD0, 0x01, 0x3C, 0x4E };
  const byte SENSOR_ADDRESS_3[] = { 0x28, 0x2E, 0x53, 0x75, 0xD0, 0x01, 0x3C, 0x89 };
  const byte SENSOR_ADDRESS_4[] = { 0x28, 0x5B, 0x5D, 0x75, 0xD0, 0x01, 0x3C, 0x58 };
  const byte SENSOR_ADDRESS_5[] = { 0x28, 0x87, 0x16, 0x75, 0xD0, 0x01, 0x3C, 0x78 };
*/
// Création de l'objet OneWire pour manipuler le bus 1-Wire
OneWire ds(BROCHE_ONEWIRE);



// Fonction de démarrage de la prise de mesure de la température via un capteur DS18B20.

void startTemperatureMeasure(const byte addr[]) {
  // addr[] : Adresse du module 1-Wire détecté

  // 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);
}




// Fonction de récupération de la prise de mesure de la température via un capteur DS18B20.

float readTemperatureMeasure(const byte addr[])// addr[] : Adresse du module 1-Wire détecté
{
  byte data[9];  // data[] : Données lues depuis le scratchpad



  // 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
  return ((data[1] << 8) | data[0]) * 0.0625;
}
const int entreeTpSecurResistance = A2 ;// broche A3 reçois 5 volts sur circuit thermostat2 resistance fermé
const int entreeTpDepResist = A3;//broche 13 reçois 5 volts sur circuit thermostat resistance fermé
const int entreeTpBallon = A1;//broche A1 reçois 5 volts sur circuit termostat ballon fermé
const int entreeVoltPressostat = A0;//broche A0 reçois 5 volts sur circuit pressostat fermé


//relais statiques LOW = marche
//const int relaisVanne = 4;   //broche relais statique vanne
const int relaisTransfo = 5;  //broche relais statique enclenchement transfo et pac
const int relaisCircResistance = 6;   //broche relais statique circulateur resistance
const int relaisResistance = 7;//broche relais statique resistance(relais NF)

const int relaisOffPac = 8;// enclenche le off de la pac
const int relaisVentilateur9 = 9;   //broche relais elecmeca ventilateur
//const int relaisVentilateur10 = 10;   //broche relais elecmeca ventilateur
//const int relaisTransfo = 11; //broche relais elecmeca
int affichageLcd = 1;
int valResistancesecur = 0;
int valThBallon = 0;
int valResistance = 0;
int valPressostat = 0;
int reglTempBallon = 40;

const int pinBoutonPlus = 2 ;
const int pinBoutonMoins = 3 ;
volatile int etatBoutonPlus;
volatile int etatBoutonMoins;
unsigned long delaisLcd;// = 0;
unsigned long delaisLcd1;// = 0;

const unsigned long period = 15000;
unsigned long delais;
unsigned long delais2;

void affichage1()
{ 
 ecran.init();
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("T.depChauff: ");
    ecran.print(1);
    ecran.setCursor(0, 1);
    ecran.print("T.arrChauff : ");
    ecran.print(2);

  
  }
void affichage2() 
{
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("ThDepResist: ");
    ecran.print(3);
    ecran.setCursor(0, 1);
    ecran.print("securResist: ");
    ecran.print(4); 
  
  }


void alternerAffichage() {
  const unsigned long dureeAffichage = 5000ul;
  static unsigned long dernierAffichage = -dureeAffichage;
  static byte numeroAffichage = 0;

  if (millis() - dernierAffichage >= dureeAffichage) {     // il est temps de permuter l'affichage
    numeroAffichage = 1 - numeroAffichage;                 // alterne entre   0 et 1
    switch( numeroAffichage) {
      case 0: affichage1(); break;
      case 1: affichage2();    break;
      default: break;  /* c'est une erreur on ne devrait pas arriver là */
    }
    dernierAffichage = millis();
  }
}




void setup()
{


  // digitalWrite(relaisCircPlancher, HIGH);
  //  digitalWrite (relaisVanne,LOW);
  digitalWrite(relaisOffPac, HIGH);
  digitalWrite(relaisTransfo , HIGH);
  digitalWrite(relaisCircResistance, HIGH);
  digitalWrite(relaisResistance, HIGH);
  // digitalWrite(relaisVentilateur10,HIGH);
  digitalWrite(relaisVentilateur9, HIGH);
  pinMode (relaisVentilateur9, OUTPUT);
  // pinMode (relaisVentilateur10, OUTPUT);
  pinMode (relaisOffPac, OUTPUT);
  pinMode (relaisCircResistance, OUTPUT);
  pinMode (relaisResistance, OUTPUT);
  pinMode (relaisTransfo , OUTPUT);
  pinMode (pinBoutonPlus, INPUT_PULLUP);
  pinMode (pinBoutonMoins, INPUT_PULLUP);

  etatBoutonMoins = LOW;
  etatBoutonPlus = LOW;

  Serial.begin(9600);


}
void loop()
{
  
   alternerAffichage();

  boolean etatBoutonPlus = digitalRead(pinBoutonPlus);
  boolean etatBoutonMoins = digitalRead(pinBoutonMoins);

  //test des conditions
  if (etatBoutonPlus == HIGH) //test si bouton 1 appuyé
  {
    reglTempBallon++;//= reglTempBallon + 1;
    delay(50);
  }
  if (etatBoutonMoins == HIGH) //test si bouton 2 appuyé
  {
    reglTempBallon--;//= reglTempBallon - 1;
    delay(50);
  }

  float temperature[6];

  // Lit les températures des six capteurs

  startTemperatureMeasure(SENSOR_ADDRESS_0);// T° depart chauffage
  temperature[0] = readTemperatureMeasure(SENSOR_ADDRESS_0);  // T° depart chauffage

  startTemperatureMeasure(SENSOR_ADDRESS_1);// T° arrivée chauffage
  temperature[1] = readTemperatureMeasure(SENSOR_ADDRESS_1);  // T° arrivée chauffage

  startTemperatureMeasure(SENSOR_ADDRESS_3);// T° ballon milieux
  temperature[2] = readTemperatureMeasure(SENSOR_ADDRESS_3);  // T°ballon milieux

  startTemperatureMeasure(SENSOR_ADDRESS_2);// T° ballon bas
  temperature[3] = readTemperatureMeasure(SENSOR_ADDRESS_2);  // T° ballon bas

  startTemperatureMeasure(SENSOR_ADDRESS_4);// T° depart resistance
  temperature[4] = readTemperatureMeasure(SENSOR_ADDRESS_4);  // T° depart resistance

  startTemperatureMeasure(SENSOR_ADDRESS_5);// T° arrivée resistance
  temperature[5] = readTemperatureMeasure(SENSOR_ADDRESS_5);  //  T° arrivée resistance

  valResistance = analogRead(entreeTpDepResist);
  valResistancesecur = analogRead(entreeTpSecurResistance);
  valThBallon = analogRead(entreeTpBallon);
  valPressostat = analogRead(entreeVoltPressostat);

  //LOW diode relais allumée relais marche,HIGH diode eteinte relais arret_____________________________________________________________
/*
  if (valThBallon > 800 )
  {
    digitalWrite (relaisOffPac , LOW); // enclenche "on" le OnOff de la pac
    digitalWrite (relaisTransfo , LOW);//enclenche les transfos de reduction de tension
    digitalWrite(relaisVentilateur9, LOW); //enclenche les ventilos
  }

  if (valThBallon < 800)
  {
    digitalWrite (relaisOffPac , HIGH); // coupe "off" le onOff de la pac,arret pac
  }

  if (valThBallon > 800) delais = millis();
  if ((valThBallon < 800) && (millis() - delais >= period))
  {
    digitalWrite (relaisTransfo , HIGH);   //arret transfo
    digitalWrite(relaisVentilateur9, HIGH); //arret ventilo
  }
  //______________________________________________________________________

  if (temperature [4] > 25 )//si la temperature de la resistance est plus grande que 90°
  {
    digitalWrite(relaisResistance, HIGH);//arrete la resistance
  }


  if (temperature [4] < 25) delais2 = millis();
  if ((temperature [4] > 25 ) && (millis() - delais2 >= period))
  {
    digitalWrite(relaisCircResistance, HIGH);//arrete le circulateur de la resistance
  }



  else if (temperature [4] < 24)
  {
    digitalWrite(relaisResistance, LOW);//met en marche la resistance
    digitalWrite(relaisCircResistance, LOW);//met en marche le circulateur de la resistance
  }*/

  //____________________________________________________________________
/*
  if (millis() - delaisLcd >= 5000)
  {
    ecran.init();
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("T.depChauff: ");
    ecran.print(1);
    ecran.setCursor(0, 1);
    ecran.print("T.arrChauff : ");
    ecran.print(2);

    delaisLcd = millis();

  }
  if (millis() - delaisLcd1 >= 5000)
  {
    ecran.backlight();
    ecran.clear();
    ecran.setCursor(0, 0);
    ecran.print("ThDepResist: ");
    ecran.print(3);
    ecran.setCursor(0, 1);
    ecran.print("securResist: ");
    ecran.print(4); 

    delaisLcd1 = millis();

  }*/

  /*
    // Affiche les températures

      Serial.print(F("Temperatures : "));

      Serial.println();
      Serial.print(F("T depart chauffage : "));
      Serial.print(temperature[0], 2);

      Serial.println();
      Serial.print(F("T ballon milieux : "));
      Serial.print(temperature[2], 2);

      Serial.println();
      Serial.print(F("T ballon bas : "));
      Serial.print(temperature[3], 2);

      Serial.println();
      Serial.print(F("T depart resist : "));
      Serial.print(temperature[4], 2);

      Serial.println();
      Serial.print(F("T arrivee resist : "));
      Serial.print(temperature[5], 2);

      Serial.println();
      Serial.print(F("T arrivee chauff : "));
      Serial.print(temperature[1], 2);
      Serial.println();
  */


}
[/code]sissez ou collez du code ici

dans le code ci dessus la partie de code postée en 5 est commentée donc l'alternance de l'affichage est ok

le code posté en 5 n'a pas de boucles qui pourraient bloquer
se peut-il que votre Arduino crash ?

rajoutez des print pour voir ce qu'il se passe

A quoi ressemble le circuit ?

pour l'instant je n'ai qu'un arduino uno et un ecran pour tester l'alternance

peut-être problème d'arduino je l'ai changé et apparemment il alterne l'affichage

ça a l'air de faire l'arduino tout pourris affiche l'alternance et pas le tout neuf,je vais de ce pas charger le code sur mon circuit pour vérifier ,mais si c'est bien cela c'est 3 jours de prise de tête sans penser à cette possibilité.

chargement du code sur mon circuit et affichage impec ,Je suis confus de ne pas avoir pensé a cette possibilité n'étant pas très doué pour le codage je n'ai pas cherché plus loin
bravo à toi J-M-L d'y avoir songé et merci encore .(bien ta solution je doit pouvoir simplifier des chose avec en m'y interressant un peu....)

c'est comme cela qu'on apprend !