Irrigazione automatica

Qualcosa non va con la funzione del troppopieno... in pratica funziona al contrario cioè quando l'interruttore del troppopieno è CHIUSO l'elettrovalvola si apre e viceversa. Ovviamente la prima cosa che ho fatto è stata quella di invertire le costanti APERTO a 1 e CHIUSO a 0 ma in questo modo non funziona proprio.
Sarà che nel codice non c'è una condizione che gli dice espressamente cosa deve fare quando è APERTO?

const byte ACCESO = LOW;
const byte SPENTO = HIGH;
const byte APERTO = 0;
const byte CHIUSO = 1;

....

if (first_pass) {
    Serial.println("Fase: RIEMPIMENTO / RABOCCO");
    digitalWrite(pinElettrovalvola, ACCESO);             // valvola aperta
}

if (digitalRead(pinTroppopieno) == CHIUSO) {        // se bidone pieno
    digitalWrite(pinElettrovalvola, SPENTO);        // chiudi valvola
    if (ePausa == ATTIVO) { fase = PAUSA_24H; }     // Se ePausa e true vai a PAUSA 24
    else                  { fase = RIPOSO;    }     // altrimenti vai a RIPOSO
}
else if (trascorso >= 180) {                        // e se timeout riempimento supera i 3 minuti
    digitalWrite(pinElettrovalvola, SPENTO);        // chiudi valvola
    fase = ALLARME;                                 // vai ad allarme contatto guasto o manca acqua
}

0.8.zip (17.9 KB)