#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int X;
int Y;
float TIME = 0;
float FREQUENCY = 0;
float AGUA = 0;
float TOTAL = 0;
float LS = 0;
const int input = A0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("GENIUS");
lcd.setCursor(0, 1);
lcd.print("GENIUS");
delay(2000);
pinMode(input, INPUT);
}
void loop() {
X = pulseIn(input, HIGH);
Y = pulseIn(input, LOW);
TIME = X + Y;
if (TIME > 0) { // Se o tempo medido for maior que zero, há fluxo de água
FREQUENCY = 1000000 / TIME; // Calcula a frequência (em pulsos por segundo)
AGUA = FREQUENCY / 7.5; // Converte a frequência para volume de água em litros por segundo (7.5 pulsos por litro)
LS = AGUA / 60; // Converte o volume de água em litros por minuto
TOTAL += LS; // Adiciona o volume de água ao total acumulado
} else { // Se não houver fluxo de água, exibe 0.00L/S
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Fluxo: 0.00L/S");
lcd.setCursor(0, 1);
lcd.print("TOTAL: ");
lcd.print(TOTAL, 2); // Exibe o total acumulado com duas casas decimais
lcd.print(" L");
delay(1000); // Espera antes de atualizar o display novamente
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("FLUXO:");
lcd.print(FREQUENCY, 2); // Exibe a frequência com duas casas decimais
lcd.print("L/S");
lcd.setCursor(0, 1);
lcd.print("TOTAL: ");
lcd.print(TOTAL, 2); // Exibe o total acumulado com duas casas decimais
lcd.print(" L");
delay(1000); // Espera antes de atualizar o display novamente
}