Ajuda com Sensor de Fluxo e RFID

Ola pessoal, sou novo no mundo de arduino, estou fazendo um projeto teste porém estou com um pouco de dificuldade no codigo.

Estou fazendo com RFID e Sensor de Fluxo.

1 - Ler o cartão RFID, caso seja Permitido é liberado o fluxo por uma Solenoide.
2 - O Fluxo deve passar por um Sensor de Fluxo e exibir na tela o fluxo e ao final o total do fluxo passado pelo cartão.

Meu problema esta no loop, como ainda sou novato, não estou conseguindo combinar o sensor de fluxo com o RFID.

Se puderem me ajudar, segue meu codigo:

#include <SPI.h>                 // Inclui a biblioteca SPI.h
#include <Wire.h>                // Inclui a biblioteca Wire.h
#include <LiquidCrystal.h>       // Inclui a biblioteca LiquidCrystal.h
#include <MFRC522.h>

LiquidCrystal lcd(6, 7, 5, 4, 3, 8);    // Declara os pinos do display

#define SS_PIN 10                       // Define os pinos do RFID
#define RST_PIN 9                       // Define os pinos do 
#define solenoide A1
MFRC522 rfid(SS_PIN, RST_PIN);             //Iniciliza as configurações da biblioteca RFID

float vazao; //Variável para armazenar o valor em L/min
float media = 0; //Variável para fazer a média
int contaPulso; //Variável para a quantidade de pulsos
int i = 0; //Variável para segundos
int Min = 00; //Variável para minutos
float Litros = 0; //Variável para Quantidade de agua
float MiliLitros = 0; //Variavel para Conversão

String IDtag = "";
bool Permitido = false;

String TagsCadastradas [] = {"fbe6791c",
                             "ID_2",
                             "ID_3"};
                             

void setup() {
  // put your setup code here, to run once:

  Serial.begin(9600);
  lcd.begin(16, 2);
  SPI.begin();
  rfid.PCD_Init();

  pinMode(solenoide, OUTPUT);
  digitalWrite(solenoide, HIGH);
  
  lcd.setCursor (0, 0);
  lcd.print(F(" Controle RFID"));
  lcd.setCursor (0, 1);
  lcd.print(F("   de Acesso"));
  delay (3000);
  
  msgdisplay();  

 pinMode(2, INPUT);
 attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
}

void loop() {
  // put your main code here, to run repeatedly:
 Leitura();
 fluxo();
}

void Leitura() {

  IDtag = "";

  if ( !rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial() ) {
  delay(50);
  return;
  }

  for (byte i = 0; i < rfid.uid.size; i++) {
    IDtag.concat(String(rfid.uid.uidByte[i], HEX));
  }  

  for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++) {
   if( IDtag.equalsIgnoreCase(TagsCadastradas[i]) ) {
    Permitido = true;
   }
  }

  if(Permitido == true) acessoLiberado();
  else acessoNegado();

  delay(2000);
     
  }

  void acessoLiberado() {
    Serial.println ("Tag Cadastrada:" + IDtag);
    lcd.clear();
    lcd.print ("   Bem Vindo   ");
    lcd.setCursor (0, 1);
    lcd.print ("TAG: " + IDtag);
    digitalWrite(solenoide, LOW);
    for (int i = 5; i > 0; i--) {
    lcd.setCursor (15, 1); lcd.print(i);
    delay (1000);
    }
    
    Permitido = false;
    msgdisplay();
    digitalWrite(solenoide, HIGH);
  }

void acessoNegado(){
  Serial.println("Tag Não Cadastrada: " + IDtag);
    lcd.clear();
    lcd.print (" Acesso Negado ");
    lcd.setCursor (0, 1);
    lcd.print ("TAG: " + IDtag);
    delay(3000);

    msgdisplay();
}

void msgdisplay(){
 
  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.print(F(" Fluxo de Agua "));
  lcd.setCursor (0, 1);
  lcd.print(F(" Aguardando COD"));
 
  }  

void fluxo(){
 contaPulso = 0;//Zera a variável
 sei(); //Habilita interrupção
 delay (1000); //Aguarda 1 segundo
 cli(); //Desabilita interrupção
 
 vazao = contaPulso / 5.5; //Converte para L/min
 media = media + vazao; //Soma a vazão para o calculo da media
 i++;
 lcd.setCursor(0, 0);
 lcd.print(vazao); //Escreve no display o valor da vazão
 lcd.print(" L/min "); //Escreve L/min
 lcd.setCursor(0, 1);
 lcd.print(Min);
 lcd.print(":"); //Escreve :
 lcd.print(i); //Escreve a contagem i (segundos)
 lcd.print("Min "); //Escreve :
 MiliLitros = vazao / 60;
 Litros = Litros + MiliLitros;
 lcd.print(Litros);
 lcd.print("L ");
 
 // Neste conjunto de linhas fizemos a média das leituras obtidas a cada 1 minuto
 if (i == 60)  {
 Min++;
 lcd.print(Min);
 
 if (Min >= 60)  {
 Min = 0;
 }
 media = media / 60; //faz a média
 Serial.print("nMedia por minuto = "); //Imprime a frase Media por minuto =
 Serial.print(media); //Imprime o valor da media
 Serial.println(" L/min - "); //Imprime L/min
 media = 0; //Zera a variável media para uma nova contagem
 i = 0; //Zera a variável i para uma nova contagem
 }
}

void incpulso ()  {
 contaPulso++; //Incrementa a variável de pulsos
}