Na minha opinião tens um erro ao inicializares a variável pulso dentro do loop.
Depois o teu cálculo não está a calcular vazão... está a calcular quantidade de água. Vazão é calculada dividindo a quantidade de água por uma unidade de tempo.
unsigned long pulso = 0; //Começa do 0 variável para contar os giros das pás internas
unsigned long tempoAnterior = 0;
void loop (){
if (millis() - tempoAnterior >= 60000) { //litros por minuto
vazao = pulso * 0.00225; //converto os pulsos em L
tempoAnterior = millis();
}
if (vazao > 1) //fecha o registro
{
digitalWrite(pinRegistro, HIGH);
delay(500);
digitalWrite(pinRegistro, LOW);
}
if (digitalRead(pinAgua) == HIGH) {
digitalWrite(pinBomba, LOW);
}
else {
digitalWrite(pinBomba, HIGH);
}
}
Assim de minuto a minuto recebes a vazão de água em litros/minuto. Podes aumentar a frequência a que o valor é calculado, mas terás de corrigir o cálculo. Por exemplo, podes calcular o valor de 30 em 30 segundos, mas tens de multiplicar a variável vazao por 2 para continuares com litros por minuto.