Délai différent sur plusieurs output

Bonjour. J'aimerai pouvoir mettre différent délai pour activer quelques sorties sur un arduino NANO.
Je m'explique.

Je met l'INPUT A5 a HIGH
après 5 secondes je met L'OUTPUT 12 a HIGH, après 10 autres secondes je met l'OUTPUT 13 a HIGH
mais lorsque je met L'INPUT A5 a LOW, J'aimerai que les deux output soit mis a l'état LOW immédiatement, ce qui n'est pas le cas présentement car le délai de 10 secondes s'applique.
C'est quoi que je dois modifier pour qu'il n'y ai pas de délai lors de la mise a LOW de l'entrée ?

const int entree = A5;
const int sortie1 =  13;
const int sortie2 = 12;

int etatentree = 0;

void setup() {
  pinMode(sortie1, OUTPUT);
  pinMode(sortie2, OUTPUT);
  pinMode(entree, INPUT);
}

void loop() {
  etatentree = digitalRead(entree);

  if (etatentree == LOW) {
    delay(0);
    digitalWrite(sortie1, LOW);
    digitalWrite(sortie2, LOW);
  }
  
  if (etatentree == HIGH) {
    delay(5000);
    digitalWrite(sortie1, HIGH);
    delay(10000);
    digitalWrite(sortie2, HIGH);
  }  
}

Merci de votre aide

Jacques3012

Bonjour

Il faut oublier le delay et passer le tout avec les millis()

@+

Ok Merci pour votre aide.

Je suis en train de travailler ça avec millis. Plus complexe un peu mais a date, ça semble fonctionner.

Merci encore

Jacques3012

Voila, ça fonctionne a mon goût.

Pourriez vous me dire si j'aurai pu faire plus court ou c'est OK comme ça ?

Merci

const int R1 = A5; //relais signal de panne Hydro
const int R2 = 12; //contacteur 120v alimentation par Hydro
const int R3 = 13; // relais alimentation urgence (12 volts)

int etatR1 = 0;

unsigned long ResetCompteur1 = 0;
unsigned long ResetCompteur2 = 0;

// délai des compteurs
const long délai1 = 2500;
const long délai2 = 5000;
const long délai3 = 1500;
const long délai4 = 5500;

void setup() {
  
  pinMode(R1, INPUT);
  pinMode(R2, OUTPUT);
  pinMode(R3, OUTPUT);
}

void loop() {
 
  unsigned long Compteur1 = millis();
  unsigned long Compteur2 = millis();
  etatR1 = digitalRead(R1);

// LOW
  if (etatR1 == LOW and Compteur2 - ResetCompteur2 >= délai3){
  digitalWrite (R3, LOW);
  }
  if (etatR1 == LOW and Compteur2 - ResetCompteur2 >= délai4){
  digitalWrite (R2, HIGH);
  ResetCompteur1 = Compteur1;
  }
 

// HIGH
  if (etatR1 == HIGH and Compteur1 - ResetCompteur1 >= délai1){ 
  digitalWrite(R2, LOW);  
  }
  if (etatR1 == HIGH and Compteur1 - ResetCompteur1 >= délai2){ 
  digitalWrite(R3, HIGH);
  ResetCompteur2 = Compteur2;  
  }
   
}

Jacques3012