Problème débitmètre Arduino

Bonjour à tous.

Je suis nouveau sur ce forum et j'aurais besoin de vous (les experts d'arduino).

J'ai créer un petit programme avec un bouton poussoir et un débitmètre.

Je voudrais :

Qaund j'appuis une seule fois sur le bouton poussoir (appuis puis relâche)
= le relais_EV (relais pour une électrovanne) s'active (le contact se ferme)
= par conséquence, l'électrovanne s'ouvre et me laisse passer le liquide
= le débitmètre tourne et "envoie" des impulsions +5v à la arduino
= la arduino compte le nombres d'impulsions
= une fois arrivé à X impulsions
= Le relais_EV ce ferme
Fin de la boucle void loop.

#define relais_EV 13 //le relais de l'électrovanne est connecté à la broche 3 de la carte Adruino

const int bouton_NO = 4; //le bouton NO est connecté à la broche 4 de la carte Adruino
const int debitmetre = 3; //le débit mètre est connecté à la broche 2 de la carte Arduino

int etat_bouton_NO; //variable qui enregistre l'état du bouton
int etat_debitmetre; //variable qui enregistre l'état du débit mètre
int Nb_impulsion; //variable qui enregistre le nombre d'impulsions du débitmètre

int valeur_bouton; // variable memoire du bouton NO


void setup() {
  pinMode(bouton_NO, INPUT); //le bouton est une entrée
  pinMode(relais_EV, OUTPUT); //le relais de l'électrovanne est une sortie
  digitalWrite(relais_EV, HIGH); //on initialise le relais de l'électrovanne comme "éteint"
  pinMode(debitmetre, INPUT); //le débit mètre est une entrée
  Nb_impulsion = 0;
  valeur_bouton = 0;
}
void loop() {
 etat_debitmetre = digitalRead(debitmetre); 
 etat_bouton_NO = digitalRead(bouton_NO);
  
  if(etat_bouton_NO == LOW ) // Si variable etat_bouton_NO est a l'état bas (low)
  {
    valeur_bouton = 1; // alors la variable valeur_bouton se mets a 1
  }
  
  else
  {
    valeur_bouton = 0; // sinon la variable valaur_bouton se mets a 0
  }  
   
  
  if(valeur_bouton == 1) // Si la variable valeur_bouton est égale 1
  {
    digitalWrite(relais_EV, LOW); // alors le relais_EV se ferme
  }  
  
  if(relais_EV == LOW) // SI relais_EV est a l'etat bas
    {if(etat_debitmetre == LOW) //Si le débitmètre est en position "fermé"
     {
      Nb_impulsion++; //on incrémente de "1" la variable Nb_impulsion 
     }
 
     if(Nb_impulsion >= 10); //Si la variable Nb_impulsion est supérieure ou égale à "10" 
     {
      digitalWrite(relais_EV, HIGH); //Alors le relais de l'électrovanne se ferme
      valeur_bouton = 0; // Je remets la variable valeur_bouton a "0"
      Nb_impulsion = 0; // remise à "0" du compteur d'impulsions.
     }
    } 
}

Mais le problème c'est que quand j'appuis sur le bouton, le relais ce ferme bien mais quand le débitmètre "tourne" le relais ne ce ferme jamais!
Je pense donc que j'ai un problème avec mon programme?

Pouvez-vous me dire si ce que j'ai écrit est correct?
D'où peux venir le problème?

Merci d'avance pour vos réponses.

Erreur :

  if(relais_EV == LOW) // SI relais_EV est a l'etat bas

Un conseil : quand un programme ne fait pas ce que tu veux, ajoute des Serial.print() pour voir où il passe, quelles sont les valeurs de variables, etc.

Là tu aurais vu qu'il n'entre jamais dans le if