Arduino programme de gestion thermostat

Bonjour,

J'ai programmé un arduino qui reçoit l'information ( contact sec ) de 2 thermostats de température.
En fonction du thermostat l'arduino ouvre la vanne 1 ou vanne 2 + la chaudière.

L'arduino fonctionne bien pendant quelques jours puis plante ..... :confused: :confused: :confused: :confused: :confused:

Du coup j'ai le chauffage ne démarre pas !!! et la vanne ne s'ouvre pas.

Au vu du code ci-dessous quelqu'un aurait une idée du problème ?

const int Vanne1=2;
const int Vanne2=3;
const int Thermostat1=4;
const int Thermostat2=5;
const int ContactChaudiere=6;
boolean LectThermo1;
boolean LectThermo2;
const int led = 13;

void setup() {
 pinMode(led, OUTPUT); 
 pinMode(Vanne1, OUTPUT);
 pinMode(Vanne2, OUTPUT);
 pinMode(ContactChaudiere, OUTPUT);
 pinMode(Thermostat1, INPUT_PULLUP);
 pinMode(Thermostat2, INPUT_PULLUP);
}
void loop(){
 LectThermo1 = digitalRead(Thermostat1);
 LectThermo2 = digitalRead(Thermostat2);
 digitalWrite (Vanne1, LectThermo1);
 digitalWrite (Vanne2, LectThermo2); 
 digitalWrite ( ContactChaudiere,LectThermo1 * LectThermo2);
   digitalWrite(led, HIGH);    
   delay (1000);
   digitalWrite(led, LOW);    
   delay (9000);

}

Merci.

Même si ça fonctionne, ce n'est pas très beau de mettre HIGH ou LOW dans un booléen et encore moins beau de multiplier deux booléens entre eux...

si vous voulez conservez des booléens, pour être propre il faudrait écrire

 LectThermo1 = (digitalRead(Thermostat1) == LOW); // vrai si Thermostat1 "appuyé"
digitalWrite (Vanne1, LectThermo1 ? LOW : HIGH);
...
digitalWrite ( ContactChaudiere,LectThermo1 && LectThermo2);

les pins c'est aussi mieux en const byte que const int

Sinon pas de raison que le code plante - vous devez avoir un soucis électrique peut-être ? vous pilotez des relais ?

bonjour,

Avec un peu plus d'informations sur l'installation...

De quel genre de thermostats, de vannes et de contact chaudière (chez moi c'est du 220V...) s'agit-il ? Comment est réalisé l'interface entre vannes, thermostats, chaudière et arduino ? quel modèle d'arduino ? quelle alimentation ? antiparasitage ?

Ca peut aider à trouver une solution...

Sinon, pour les montages destinés à fonctionner en continu, il est d'usage d'installer un "watch dog" (chien de garde) qui fait un reset lorsqu'un certain temps s'est écoulé sans que le programme ne réarme un timer. Ce qui ne signifie pas qu'il faut "accepter" un montage instable. :slight_smile: