@Artouste : oui et non. Il est vrai que je n'ai pas précisé que ma régulation est derrière une pompe à chaleur, ce qui veut dire qu'au démarrage de la pompe, j'ai instantanément +5 et je dois aussi géré le passage pompe à chaleur-> chaudière fuel(haute température).
De toute façon ce temps est un détail.
je complète mon code :
int Correc[5];//valeur stockée des corrections
void setup() {
pinMode(2, INPUT);//high = inversion du demux
digitalWrite(2, HIGH);//par defaut haut direct sur correction
//inversion sur température extérieur par un transistor NPN (actif)
attachInterrupt(0, correction, FALLING); //validation des corrections
//on charge les valeurs de correction dans le tableau Correc
correction();
}
void correction(){
digitalWrite(2, LOW);//bascule sur le multiplex correction
for(int i=0;i<5;i++){
digitalWrite(15, i & 0x04); // bit de poids fort, entrée C
digitalWrite(16, i & 0x02); // bit de poids moyen, entrée B
digitalWrite(17, i & 0x01); // bit de poids faible, entrée A
delay(1);
Correc[i]= analogRead(A0);
}
digitalWrite(2, HIGH);//on remet sur le multiplexeur température
}
à chaque m=0, je stocke les températures dans un tableau
les valeurs de corrections de chaque circuit sont stockées à l'initialisation ou seront actualisées par attachInterrupt(0
elles servent à adapter les températures au différents type de bâtiment, plancher chauffant, atelier, bureau ...
et une correction sur la courbe générale pour monter ou descendre tout l'ensemble
il n'y a plus qu'a additionner.
@zoroastre : j’ai regardé ton code mais ça me dépasse complètement !
Merci
Gérard