//https://autocorerobotica.blog.br/aprenda-utilizar-o-sensor-vazao-de-agua-com-arduino/

volatile int Pulso; //Variável para a quantidade de pulsos
int j=0; //Variável para contagem
float vazaoagua; //Variável para armazenar o valor em L/min
float valormedia=0; //Variável para tirar a média a cada 1 minuto
void IRAM_ATTR incrpulso(){
  Pulso++;
}
void setup()
{ 
Serial.begin(9600);
pinMode(5, INPUT_PULLUP);
attachInterrupt(0, incrpulso, RISING); //Configura a porta digital 2, para interrupção
}


void loop ()
{
sei(); //liga interrupção
delay (2000); //Espera 2 segundos
cli(); //Desliga interrupção
vazaoagua = Pulso / 5.5; //Converte para Litros/minuto
valormedia=valormedia+vazaoagua; //Soma a vazão para o calculo da valormedia
j++;
Serial.print(Pulso);
Serial.print("\t");
Serial.print(vazaoagua); //Imprime na serial o valor da vazão
Serial.println(" L/minuto - "); //Imprime L/min
if(j==60)
{
cli(); //Desliga interrupção
valormedia = valormedia/60; //Tira a valormedia dividindo por 60
Serial.print("\n Media por minuto = "); //Imprime a frase valormedia por minuto =
Serial.print(valormedia); //Imprime o valor da valormedia
Serial.println(" Litros/minutos - "); //Imprime L/min
valormedia = 0; //Torna variável valormedia = 0, para uma nova contagem
j=0; //Torna a variável 0,para uma nova contagem
Pulso = 0; //Começa do 0 variável para contar os giros das pás internas,ek segundos
sei(); //liga interrupção
}

}


/*

{
// Conta acionamentos do botão considerando debounce  
if ( (millis() - timestamp_ultimo_acionamento) >= TEMPO_DEBOUNCE )
{
contador_acionamentos++;
timestamp_ultimo_acionamento = millis();
}
}
*/
/*
void incrpulso ()
{ 
Pulso++;
}
*/