Si7021

bon ... j'ai allégé le code (j'ai changer l'affichage multiplexé par un affichage dans la console) ... le code est le suivant :

#include <TimeLib.h>        //Time Library
#include <DS3232RTC.h>   //Real Time Clock Library
#include "Adafruit_Si7021.h"
#include <Wire.h>        //Auxiliary Library for DS1307RTC (Real-Time Clock) - Pins to Arduino UNO: A4 (SDA), A5 (SCL)

Adafruit_Si7021 sensor = Adafruit_Si7021();


int hora, minuto;
int temp, umid;
int unidadeHora, unidadeMinuto, dezenaHora, dezenaMinuto;
int unidadeTemp, dezenaTemp, centmTemp, unidadeUmid, dezenaUmid, centmUmid;
unsigned long ti;


time_t t = now();

void setup() {
  sensor.begin(); 
  Serial.begin(115200);
  
  setSyncProvider(RTC.get);   // Update the time with data of RTC (Real Time Clock)

}

void loop()  {
  //-------------------------------------------------------------------------------------------------
  //----------------------------Display Time---------------------------------------
  ti = millis(); // Initial time for the Timer of Hour/Time

  while ((millis() - ti) < 5000) { //Timer of 5 seconds to show the Hour

  hora = hour();
  minuto = minute();
  unidadeHora = hora % 10;
  dezenaHora = hora / 10;
  unidadeMinuto = minuto % 10;
  dezenaMinuto = minuto / 10;

 Serial.print("TEMPS = ");
 Serial.print(dezenaHora);
 Serial.print(unidadeHora);
 Serial.print(" : ");
 Serial.print(dezenaMinuto);
 Serial.println(unidadeMinuto);
    }
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
  delay(100);  //Wait for half second before go ahead to show the next feature
   Serial.println(" ------------------------------------ ");
//-------------------------------------------------------------------------------------------------
//------------------------------------Display Temp----------------------------------------------
  ti = millis(); //Initial time for the Timer of Temperature
 
 temp = 10 * (sensor.readTemperature());
 
  while ((millis() - ti) < 5000) { //Timer of 5 seconds for the Temperature
 
  dezenaTemp = temp / 100;
  unidadeTemp = (temp/10) % 10;
  centmTemp = temp % 10;

 Serial.print("TEMPERATURE = ");
 Serial.print(dezenaTemp);
 Serial.print(unidadeTemp);
 Serial.print(".");
 Serial.print(centmTemp);
 Serial.println(" °C ");
  
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
 delay(100);  //Wait for half second before go ahead to show the next feature
  Serial.println(" ------------------------------------ ");
//---------------------------------------------------------------------------------
//----------------------------Display Humd------------------------------------------

  ti = millis(); //Initial time for the Timer of Humidity

 umid = 10 * (sensor.readHumidity());
      
  while ((millis() - ti) < 5000) { //Timer of 5 seconds for the Humidity

      dezenaUmid = umid / 100;
      unidadeUmid = (umid/10) % 10;
      centmUmid = umid % 10;

 Serial.print("HUMIDITE = ");
 Serial.print(dezenaUmid);
 Serial.print(unidadeUmid);
 Serial.print(".");
 Serial.print(centmUmid);
 Serial.println(" % ");
}
 //-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
 delay(100);  //Wait for half second before go ahead to show the next feature
  Serial.println(" ------------------------------------ ");
//---------------------------------------------------------------------------------

}

la commande de lecture du sensor Si7021 à l'extérieur de la boucle while, ce qui implique que le code ne fait qu'une seule lecture de la température et de l'humidité ...

si je déplace la commande de lecture à l'intérieur de la boucle while, j'ai une mise à jour instantané, intéressant mais qui n'est pas bien digéré par mon affichage multiplexé

l'idéale c'est une mise à jour des valeur du sensor Si7021 chaque seconde ... sans que ca implique de problème sur mon affichage multiplexé ...

si vous avez une idée .. Merci

Merci