Bonjour @koko11073
Voici une idée de code, peut être pas la plus simple, ni la plus propre, mais je pense que ça fonctionne, a tester, car je n'ai pas de matériel, ce matin sous la main.
unsigned long tempo_R2;
int valeur_tempo_R2 = 30000;
byte status_R2 = false;
void setup()
{
// sortie commande relais R1 en bn13
pinMode(13, OUTPUT);
pinMode(6, OUTPUT); //relais 2
// entrées venant des opto en bn2-4-5-9-10-11-12
pinMode(2, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
}
void loop()
{
// conditions pour commande relais
if ((digitalRead( 2) && digitalRead(4) && digitalRead(5) && digitalRead(9) && digitalRead(10) &&
digitalRead(11) && digitalRead(12) ))
{
// actions commande relais
digitalWrite(13, HIGH );
if (!status_R2){
tempo_R2 = millis();
status_R2 = true;
}
if (tempo_R2 + valeur_tempo_R2 < millis()){
digitalWrite(6,HIGH);
}
}
else
{
digitalWrite(13, LOW );
digitalWrite(6,LOW);
status_R2 = false;
}
}
BAT