Tempo sur relais

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 !!