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