Bonjour,
Merci beaucoup, j'avoue avoir un peu de mal avec les variables ! Ne codant pas tous les jours j'ai essayé d'aller au plus simple.
Tout fonctionne à la perfection, testé ce matin en situation réelle c'est juste impeccable, je suis trop content !!
Voici le code finalisé :
/*
Démarrage automatique pour Onan Cummins depuis relais Victron Multiplus/Quattro
*/
int OnanSTART = 7; //Relais INT1 servant à démarrer le groupe sur D7
int OnanSTOP = 8; //Relais INT2 servant à éteindre le groupe sur D8
int VictronNO = 2; //Relais NO sur D2 Victron Multiplus, Quattro ...
int dureeSTART = 15000; //duree pour procédure de préchauffe/démarrage en ms
int dureeSTOP = 2000; //duree pour procédure d'extinction en ms
bool relais1 = false;
bool relais2 = false;
unsigned long chrono1 = 0;
unsigned long chrono2 = 0;
void setup() {
// put your setup code here, to run once:
pinMode(OnanSTART, OUTPUT);
pinMode(OnanSTOP, OUTPUT);
pinMode(VictronNO, INPUT_PULLUP);
}
void loop() {
//Procédure de démarrage
if (!relais1 && !digitalRead(VictronNO)) {
// la condition n'est plus lu dès que le relais1 est activé
chrono1 = millis();
digitalWrite(OnanSTART, LOW);// active le relais
relais1 = true;
relais2 = false;
chrono2 = 0;
}
if (millis() - chrono1 > dureeSTART) {
digitalWrite(OnanSTART, HIGH);// relais1 remis au repos
}
//Procédure d'extinction
if (!relais2 && digitalRead(VictronNO)) {
chrono2 = millis();
digitalWrite(OnanSTOP, LOW);// active le relais stop
relais1 = false;
relais2 = true;
chrono1 = 0;
}
if (millis() - chrono2 > dureeSTOP) {
digitalWrite(OnanSTOP, HIGH);// relais2 remis au repos
}
}
Matériel utilisé :
- Arduino Uno/Nano
- Module 2 relais 5v
Améliorations futures :
- Remplacer le délais de démarrage par le capteur de pression d'huile ...
Merci beaucoup !!