Conteggio litri al minuto per contalitri digitale

Ce l'ho fatta!!! Almeno credo... So che il codice è un po incasinato e bruttino e probabilmente ci sono cento modi migliori per fare la stessa cosa però sembra funzionare, per ora sto provando solo soffiando nel contalitri poi proverò a collegarlo all'acqua e vedere se i litri al minuto sono reali...
Comunque sono ripartito dal mio codice iniziale ed il ragionamento che ho fatto è stato di usare la milli() in modo che ogni secondo mi venga rilevata la quantità di impulsi dalla turbina, a quel punto ho gli impulsi al secondo, moltiplico x 60 = impulsi al minuto, moltiplico x 0,0037'37 (quantità acqua passata per ogni impulso) e ottengo i litri al minuto.
Sembra corretto, che ne dite? Accetto suggerimenti e critiche sul codice che vi riporto:

// Contalitri con display e visualizzazione totale litri
// con tasto per azzeramento e visualizzazione portata (lt/min.)

// Libreria display
#include <LiquidCrystal.h>

//Variabili
int x=0;
float cont=0;
int contlt=0;
int contltprint=0;
int stato=0;
int reset=0;
float litrimin=0;
float visual=0;
unsigned long tprec=0;
unsigned long tcorr;
unsigned long aggiorn=1000;


// Iniziazione libreria con numeri pin
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);        // set numero colonne e righe display
  pinMode (7,INPUT);       // impulso da contalitri
  pinMode (8,OUTPUT);      // led esterno
  pinMode (9,INPUT);       // pulsante reset conteggio litri
  Serial.begin(9600);      // apertura porta seriale
}

void loop() {
  tcorr=millis();
  reset=digitalRead(9);    // assegnazione pin tasto reset
  if (reset==1){           // arrivo impulso reset
    cont=0;                // reset contalitri
    lcd.clear();           // reset lcd
  }
  x=digitalRead(7);        // variabile impulso da contalitri
  if(x==HIGH) {            // arrivo impulso contalitri
    digitalWrite (8,HIGH); // accensione led esterno
    if(stato==0) {         // conteggia solo se ritorna l'impulso
      cont=(cont+1);       // conteggio impulsi
      contlt++;            // variabile che conta impulsi in tot. tempo
      stato=1;             // cambio stato per verifica ritonro impulso
    }
  }
  else {
    digitalWrite (8,LOW);  // spegnimento led esterno
    stato=0;               // cambio stato per verifica ritorno impulso
  }
    if (tcorr-tprec>aggiorn) {  // se passa un secondo...
    tprec=tcorr;                // aggiorna variabile tempo prec.
    contltprint=contlt;         // assegna alla variabile gli impulsi fatti in un secondo
    contlt=0;                   // resetta per prossimo conteggio -dopo un secondo-
    }
  
  visual=cont/270;         // conversione impulsi in litri
  litrimin=contltprint*60*0.0037037; // converti impulsi al secondo in lt/min
  lcd.setCursor(0, 0);     // posizionamento cursore display
  lcd.print("Lt. Tot: ");  // scritta
  lcd.print(visual);       // visualizzazione valore litri
  lcd.setCursor(0, 1);     // posizionamento cursore display
  lcd.print("Lt. Min: ");  // scritta
  lcd.print(litrimin);     // visualizzazione lt. ora ??????
  Serial.println(contltprint);    // visualizzazione impulsi al secondo su serial monitor
}

Grazie, buona serata!