Saludos busco la forma de como poder cerrar paso de agua cuando el sensor de flujo reconozca la cantidad de litros que requiero en este caso son 1 litro y 5 litros, el cual la idea es escribir en el monitor serial 1 o 5 y solo deje fuir un litro o los 5, cuando termine vuelva el conteo de litro a 0.0, el corte de paso es activando o desactivando el paso de una electro válvula en el pin 8, alguien me puede ayudar saludos son algo principiante.
1 litro = 450
5 litros = 2250
#include <Wire.h> // Librería comunicación I2C
const int sensor = 2; // Pin digital para el sensor de flujo YF-S201
int litros_Hora; // Variable que almacena el caudal (L/hora)
volatile int pulsos = 0; // Variable que almacena el número de pulsos
unsigned long tiempoAnterior = 0; // Variable para calcular el tiempo transcurrido
unsigned long pulsos_Acumulados = 0; // Variable que almacena el número de pulsos acumulados
float litros; // // Variable que almacena el número de litros acumulados
// Rutina de servicio de la interrupción (ISR)
void flujo()
{
pulsos++; // Incrementa en una unidad el número de pulsos
}
void setup()
{
pinMode(sensor, INPUT_PULLUP); // Pin digital como entrada con conexión PULL-UP interna
interrupts(); // Habilito las interrupciones
// Interrupción INT0, llama a la ISR llamada "flujo" en cada flanco de subida en el pin digital 2
attachInterrupt(digitalPinToInterrupt(sensor), flujo, RISING);
tiempoAnterior = millis(); // Guardo el tiempo que tarda el ejecutarse el setup
Serial.begin(9600);
}
void loop ()
{
// Cada segundo calculamos e imprimimos el caudal y el número de litros consumidos
if(millis() - tiempoAnterior > 1000)
{
// Realizo los cálculos
tiempoAnterior = millis(); // Actualizo el nuevo tiempo
pulsos_Acumulados += pulsos; // Número de pulsos acumulados
litros_Hora = (pulsos * 60 / 7.5); // Q = frecuencia * 60/ 7.5 (L/Hora)
litros = pulsos_Acumulados*1.0/450; // Cada 450 pulsos son un litro
pulsos = 0; // Pongo nuevamente el número de pulsos a cero
Serial.println(litros);
}
}