au final j'ai reussi a faire une fonction pour les temperature calibrer :
j'ai donc creer c'est variables
// calibrage sondes
float tempExtLueCalibre;
float tempUnitExtLueCalibre;
float tempEchangeurExtLueCalibre;
float tempUnitIntLueCalibre;
float tempEchangeurIntLueCalibre;
puis calculer :
avec :
struct Calibrage {
const char* nom;
float calibrage;
};
struct Calibrage calibrages[] = {
{ "calSExt", 0 },
{ "calSUExt", 0 },
{ "calSEExt", 0 },
{ "calSUInt", 0 },
{ "calSEInt", 0 }
};
constexpr size_t nombreDeCalibrages = sizeof calibrages / sizeof * calibrages;
size_t indexCalibrageEnCours = 0;
plus :
Sonde sondes[] = {
{ 2, "T""\xDF""Ext:" }, // pin sonde Exterieur
{ 3, "T""\xDF""UnitExt:" }, // pin sonde Unite Exterieur
{ 4, "T""\xDF""EchaExt:" }, // pin sonde Echangeur Exterieur
{ 5, "T""\xDF""UnitInt:" }, // pin sonde Unite Interieur
{ 6, "T""\xDF""EchaInt:" } // pin sonde Echangeur Interieur
};
constexpr size_t nombreDeSondes = sizeof sondes / sizeof * sondes;
size_t indexSondeEnCours = 0;
enum : byte { SondeExterieur,
UniteExterieur,
EchangeurExterieur,
UniteInterieur,
EchangeurInterieur
};
#define tempExtLue (sondes[SondeExterieur].temperature())
#define tempUnitExtLue (sondes[UniteExterieur].temperature())
#define tempEchangeurExtLue (sondes[EchangeurExterieur].temperature())
#define tempUnitIntLue (sondes[UniteInterieur].temperature())
#define tempEchangeurIntLue (sondes[EchangeurInterieur].temperature())
ce qui :
tempExtLueCalibre = tempExtLue + calibrages[0].calibrage;
tempUnitExtLueCalibre = tempUnitExtLue + calibrages[1].calibrage;
tempEchangeurExtLueCalibre = tempEchangeurExtLue + calibrages[2].calibrage;
tempUnitIntLueCalibre = tempUnitIntLue + calibrages[3].calibrage;
tempEchangeurIntLueCalibre = tempEchangeurIntLue + calibrages[4].calibrage;
et creation de la fonction :
void afficheTempsCalibre() {
if (millis() - tempoAfficheTemps >= 25000) {
tempoAfficheTemps = millis();
} else {
if (millis() - tempoAfficheTemps >= 20000) {
affiche(sondes[4].nom, tempEchangeurIntLueCalibre, 1);
} else if (millis() - tempoAfficheTemps >= 15000) {
affiche(sondes[3].nom, tempUnitIntLueCalibre, 1);
} else if (millis() - tempoAfficheTemps >= 10000) {
affiche(sondes[2].nom, tempEchangeurExtLueCalibre, 1);
} else if (millis() - tempoAfficheTemps >= 5000) {
affiche(sondes[1].nom, tempUnitExtLueCalibre, 1);
} else {
affiche(sondes[0].nom, tempExtLueCalibre, 1);
}
}
}
et ces bon pour ca !
voir a la ligne 860 de mon code pour le menu projet_Gainable Copy (2) - Wokwi ESP32, STM32, Arduino Simulator