Revision Codigo para sesnsores corriente humedad/temperatura y Caudal de agua

Hola amigos de la comunidad,
soy nuevo en el mundo arduino y estoy realizando un proyecto
en el que quiero conectar 3 sensores a un arduino Mega 2560
He probado los sensores cada uno por sí solos y funcionan bien
el problema lo tengo cuando conecto junto los sketch en uno solo, el código
compila bien y me realiza mediciones de el sensor de humedad/temperatura y corriente
y no así con el de caudal, debo admitir que tengo una noción de programación bastante básica,
pero, por lo poco que sé, puedo deducir que el problema está entre definir las I/O.
Estos son los sensores que ocupé:

DHT22: Temperatura / Humedad
ACS712(30A): Corriente
Ys-201: Caudal de agua
Arduino Mega 2560

les adjunto el código y un pantallazo de las mediciones

#include "DHT.h"
#define DHTPIN 2     // A que pin digital nos conectamos
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

DHT dht(DHTPIN, DHTTYPE);

float Sensibilidad=0.066; //sensibilidad en Voltios/Amperio para sensor de 30A
volatile int NumPulsos; //variable para la cantidad de pulsos recibidos
int PinSensor = 3;    //Sensor conectado en el pin 3
float factor_conversion=7.11; //para convertir de frecuencia a caudal
float volumen=0;
long dt=0; //variación de tiempo por cada bucle
long t0=0; //millis() del bucle anterior

void ContarPulsos ()  
{ 
  NumPulsos++;  //incrementamos la variable de pulsos
} 

//---Función para obtener frecuencia de los pulsos--------
int ObtenerFrecuecia() 
{
  int frecuencia;
  NumPulsos = 0;   //Ponemos a 0 el número de pulsos
  interrupts();    //Habilitamos las interrupciones
  delay(2000);   //muestra de 1 segundo
  noInterrupts(); //Deshabilitamos  las interrupciones
  frecuencia=NumPulsos; //Hz(pulsos por segundo)
  return frecuencia;
}
  
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  dht.begin();
  pinMode(PinSensor, INPUT); 
  attachInterrupt(0,ContarPulsos,RISING);//(Interrupción 0(Pin3),función,Flanco de subida)
  Serial.println ("Envie 'r' para restablecer el volumen a 0 Litros"); 
  t0=millis();
  
  }

void loop() {

  if (Serial.available()) {
    if(Serial.read()=='r')volumen=0;//restablecemos el volumen si recibimos 'r'
  }
  float frecuencia=ObtenerFrecuecia(); //obtenemos la frecuencia de los pulsos en Hz
  float caudal_L_m=frecuencia/factor_conversion; //calculamos el caudal en L/m
  dt=millis()-t0; //calculamos la variación de tiempo
  t0=millis();
  volumen=volumen+(caudal_L_m/60)*(dt/1000); // volumen(L)=caudal(L/s)*tiempo(s)
  float voltajeSensor= analogRead(A0)*(5.0 / 1023.0); //lectura del sensor   
  float I=(voltajeSensor-2.5)/Sensibilidad; //Ecuación  para obtener la corriente
  
  Serial.print ("Caudal: "); 
  Serial.print (caudal_L_m,2); 
  Serial.print ("L/min\tVolumen: "); 
  Serial.print (volumen,2); 
  Serial.println (" L");
  
  Serial.print("Corriente: ");
  Serial.println(I,2); 
  delay(2000);
    
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");

}

Cualquier ayuda, comentario o información que me puedan enviar, la agradeceré

sensores.ino (3.15 KB)