bonjour,
La routine n'est pas utilisée dans le programme.
Dans le CurrentMonitor, la valeur 300 correspond à la valeur par défaut si tu ne le précises pas.
il faut l'initialier avec la valeur que tu souhaites:
begin (int pin, const char *msg, float inSampleMax = 300)
Dans ton cas, le loop fait appel à la fonction stop_DCC.
L'avantage de passer par 2 fonctions et pouvoir faire autre chose . pas seulement arrêter ou démarrer DCC.
en modifiant les 2 fonctions:
void start_DCC(PIN_DCC) { // Démarre DCC en fonction de la PIN passée en paramètre (Main ou Prog)
digitalWrite(PIN_DCC,HIGH);
digitalWrite(LEDROUGE, HIGH); // eteint led rouge ou autre
}
void stop_DCC(PIN_DCC) { // Stop DCC en fonction de la PIN passée en paramètre (Main ou Prog)
digitalWrite(PIN_DCC,LOW);
digitalWrite(LEDROUGE, LOW); // allume led rouge ou autre
delay(1000);
}
void loop() {
///////////////// Declenchement DCCpp ///////////////////////////////////
DCCpp::loop();
//// Affichage courant, détection de court-circuit et de faux contact ////
// affichage courant = la valeur maxi pendant 500 ms pour la voie Prog
if ((millis() - gCurrentSampleTimeMain) > 500) {
gCurrentSampleTimeMain = millis();
#ifdef DEBUG
Serial.println(gCurrentMain*5);Serial.print(' '); // en mA réels
#endif
gCurrent = 0;
}
int iCurrentMain = analogRead(Max471_Main);
if (iCurrentMain > gCurrentMain) {
gCurrentMain = iCurrentMain;
if (gCurrentMain > CurrentMaxMain) { // 400 * 5 = 2000 mA
stop_DCC(LMD_PWM_Main);
}
}
if ((iCurrentMain == 0) && (mAutomate.auto_etat > 2)) { // perte de consommation
if ((millis() - gCurrentNulTimeMAin) > NULCURRENT_TIME) {
mAutomate.auto_etat=INIT; // RAZ automate
mAutomate.LRclignote=true; // led rouge clignote
mTrain.cran_vitesse = 0; // vitesse = 0
mTrain.lumiere=false;
delay(2000);
stop_DCC(LMD_PWM_Main); // arrêt DCC
#ifdef DEBUG
Serial.println("Faucon_Main"); // panne de courant
#endif
}
} else {
gCurrentNulTimeMain = millis(); // relance tempo
}
// affichage courant = la valeur maxi pendant 500 ms pour la voie Prog
if ((millis() - gCurrentSampleTimeProg) > 500) {
gCurrentSampleTimeProg = millis();
#ifdef DEBUG
Serial.println(gCurrentProg*5);Serial.print(' '); // en mA réels
#endif
gCurrent = 0;
}
int iCurrentProg = analogRead(Max471_Prog);
if (iCurrentProg > gCurrentProg) {
gCurrentProg = iCurrentProg;
if (gCurrentProg > CurrentMaxProg) { // 400 * 5 = 2000 mA
stop_DCC(LMD_PWM_Prog);
}
}
if ((iCurrentProg == 0) && (mAutomate.auto_etat > 2)) { // perte de consommation
if ((millis() - gCurrentNulTimeProg) > NULCURRENT_TIME) {
mAutomate.auto_etat=INIT; // RAZ automate
mAutomate.LRclignote=true; // led rouge clignote
mTrain.cran_vitesse = 0; // vitesse = 0
mTrain.lumiere=false;
delay(2000);
stop_DCC(LMD_PWM_Prog); // arrêt DCC
#ifdef DEBUG
Serial.println("Faucon_Prog"); // panne de courant
#endif
}
} else {
gCurrentNulTimeProg = millis(); // relance tempo
}
} //loop
A toi de voir les morceaux qui te conviennent.
Bonne recherche
Yannick