Ciclo if che non riesco a far funzionare

Ciao a tutti, questo non funziona come vorrei:

digitalWrite(chocoA, HIGH);
delay(2000);
  if (digitalRead(chocolate) == HIGH) {
      digitalWrite(pompaChocolate, LOW); 
      delay(tempo); //5 minuti di acqua circa 330 mL
      digitalWrite(pompaChocolate, HIGH);
    }
  else {
//    delay(1000);
    digitalWrite(pompaChocolate, HIGH);
      delay(2000);
      }   
 delay(2000);
 digitalWrite(chocoA, LOW);
 delay(2000);

Vorrei che se il sensore digitale fosse HIGH si accendesse una elettrovalvola per 5 minuti, e poi uscisse dal ciclo if , ma ci rimane sino a quando il sensore non va su LOW. Deve fare successivamente altri controlli come questo su altri sensori, ma si blocca e non esce dal ciclo. Purtroppo i sensori che ho non sono tanto sensibili, quindi hanno bisogno di almeno 1 ora per stabilizzare la lettura.
Probabilmente sbaglio qualcosa, ma non riesco a capire dove.
Grazie a tutti

Ciao Docsavage! I peperoncini stanno bene, sicuramente meglio di me!
Purtroppo però sono stato preso da 1000 altre cose tra figli, lavoro, famiglia, stampante 3d, e sono solo riuscito a impostare tutto l'hardware dell'impianto. Domani devo allontanarmi per un mese e non sono riuscito a verificare almeno quanta acqua necessitano per evitare una morte certa. Avevo modificato come consigliatomi da voi:

digitalWrite(chocoA, HIGH);
delay(2000);
  if (digitalRead(chocolate) == HIGH) {
    while (digitalRead(chocolate) == HIGH) {
      // tengo attiva l'elettrovalvola
      digitalWrite(pompaChocolate, LOW); 
    }
    digitalWrite(pompaChocolate, HIGH); 
  } else {
    delay(1000);
    // chiudo l'elettrovalvola
    digitalWrite(pompaChocolate, HIGH);
      delay(2000);
      }   
 delay(2000);
 digitalWrite(chocoA, LOW);
 Serial.println(pompaChocolate);
 delay(2000);

ma il problema della sensibilità dei sensori mi aveva portato a modificare come il primo post. Però c'è qualcosa che non funziona :frowning:
E io non capisco cosa :frowning: :frowning:

I sensori si accendono in sequenza, quindi se si blocca su uno non passa al successivo!
posto tutto il codice:

const unsigned int chocoA = 2; //alimentazione digitale sensore
const unsigned int jaysA = 3; 
const unsigned int tigerA = 4; 
const unsigned int bocA = 5; 
const unsigned int cherioA = 6; 
const unsigned int pimentaA = 7;

const unsigned int chocolate = 22; //ingresso digitale sensore 
const unsigned int jays = 24; 
const unsigned int tiger = 26; 
const unsigned int boc = 28; 
const unsigned int cherio = 30; 
const unsigned int pimenta = 32;

const unsigned int pompaChocolate = 23; //rele di attivazione della pompa
const unsigned int pompaJays = 25; //rele di attivazione della pompa
const unsigned int pompaTiger = 27; //rele di attivazione della pompa
const unsigned int pompaBoc = 29; //rele di attivazione della pompa
const unsigned int pompaCherio = 31; //rele di attivazione della pompa
const unsigned int pompaPimenta = 33; //rele di attivazione della pompa

int tempo = 300000;
int ciclo = 7200000;

int valueChocolate = 0;
int valueJays = 0;
int valueTiger = 0;
int valueBoc = 0;
int valueCherio = 0;
int valuePimenta = 0;

/*
int pompaChocolate = 0;
int pompaJays = 0;
int pompaTiger = 0;
int pompaBoc = 0;
int pompaCherio = 0;
int pompaPimenta = 0;
*/
void setup() {
//Serial.begin( 9600 );
pinMode(chocoA, OUTPUT);
pinMode(jaysA, OUTPUT);
pinMode(tigerA, OUTPUT);
pinMode(bocA, OUTPUT);
pinMode(cherioA, OUTPUT);
pinMode(pimentaA, OUTPUT);

pinMode(pompaChocolate, OUTPUT);
pinMode(pompaJays, OUTPUT);
pinMode(pompaTiger, OUTPUT);
pinMode(pompaBoc, OUTPUT);
pinMode(pompaCherio, OUTPUT);
pinMode(pompaPimenta, OUTPUT);

}

void loop() {
/*Serial.println(pompaChocolate);
Serial.println("Inizio il loop");
  //chiudo tutto per sicurezza 
*/
digitalWrite(pompaJays, HIGH);
digitalWrite(pompaTiger, HIGH);
digitalWrite(pompaBoc, HIGH);
digitalWrite(pompaCherio, HIGH);
digitalWrite(pompaPimenta, HIGH);
digitalWrite(pompaChocolate, HIGH);

digitalWrite(chocoA, HIGH);
delay(2000);
  if (digitalRead(chocolate) == HIGH) {
      digitalWrite(pompaChocolate, LOW); 
      delay(tempo); //5 minuti di acqua circa 330 mL
      digitalWrite(pompaChocolate, HIGH);
    }
  else {
//    delay(1000);
    digitalWrite(pompaChocolate, HIGH);
      delay(2000);
      }   
 delay(2000);
 digitalWrite(chocoA, LOW);
 delay(2000);

      digitalWrite(jaysA, HIGH);
      delay(2000);
        if (digitalRead(jays) == HIGH) {
              digitalWrite(pompaJays, LOW);
              delay(tempo);
              digitalWrite(pompaJays, HIGH);
        } else {
         digitalWrite(pompaJays, HIGH);
         delay(2000);
         }
       delay(2000);    
       digitalWrite(jaysA, LOW);
       delay(2000);

  digitalWrite(tigerA, HIGH);
delay(2000);
  if (digitalRead(tiger) == HIGH) {
    digitalWrite(pompaTiger, LOW);
    delay(tempo);
    digitalWrite(pompaTiger, HIGH);
  } else {
   digitalWrite(pompaTiger, HIGH);
   delay(2000);
   }     
 digitalWrite(tigerA, LOW);
 delay(2000);
 
 digitalWrite(bocA, HIGH);
delay(2000);
  if (digitalRead(boc) == HIGH) {
      digitalWrite(pompaBoc, LOW);
      delay(tempo);
      digitalWrite(pompaBoc, HIGH);
  } else {
        digitalWrite(pompaBoc, HIGH); 
    delay(2000);
   }     
 digitalWrite(bocA, LOW);
 delay(2000);

digitalWrite(cherioA, HIGH);
delay(2000);
  if (digitalRead(cherio) == HIGH) {
    digitalWrite(pompaCherio, LOW); 
    delay(tempo);
    digitalWrite(pompaCherio, HIGH);
  } else {
    digitalWrite(pompaCherio, HIGH);
   delay(2000);
   }     
 digitalWrite(cherioA, LOW);
 delay(2000);

 digitalWrite(pimentaA, HIGH);
delay(2000);
  if (digitalRead(pimenta) == HIGH) {
    digitalWrite(pompaPimenta, LOW);
    delay(tempo);
    digitalWrite(pompaPimenta, HIGH);
  } else {
    digitalWrite(pompaPimenta, HIGH);
   delay(2000);
   }     
digitalWrite(pimentaA, LOW);
 delay(2000);

 delay(ciclo);
 }

Accendo i sensori in sequenza perchè altrimenti l'assorbimento è superiore alla quantità di corrente che arduino riesce a fornire.