#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int botState;
int g = 15;
int y = 2;
int r = 4;
int leda = 13;
int ledf = 12;
int bomba = 23;
int trigger = 5;
int echo = 18;
int bot = 19;
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(115200);
pinMode(echo, INPUT);
pinMode(trigger, OUTPUT);
pinMode(g, OUTPUT);
pinMode(y, OUTPUT);
pinMode(r, OUTPUT);
pinMode(leda, OUTPUT);
pinMode(ledf, OUTPUT);
pinMode(bomba, OUTPUT);
pinMode(bot, INPUT_PULLUP);
}
void loop() {
digitalWrite(trigger, LOW);
delayMicroseconds(10);
digitalWrite(trigger, HIGH);
int distance = (pulseIn(echo, HIGH)/58.75);
Serial.println(distance);
Serial.println(botState);
// Atualizando os LEDs com base na distância
if (distance < 20) {
digitalWrite(r, HIGH); // Vermelho - estado crítico
digitalWrite(y, LOW);
digitalWrite(g, LOW);
} else if (distance >= 20 && distance < 40) {
digitalWrite(r, LOW);
digitalWrite(y, HIGH); // Amarelo - estado de atenção
digitalWrite(g, LOW);
} else {
digitalWrite(r, LOW);
digitalWrite(y, LOW);
digitalWrite(g, HIGH); // Verde - estado normal
}
lcd.setCursor(0, 0);
lcd.print("Litros:");
lcd.setCursor(8, 0);
if (distance >= 100){
lcd.print(distance);
}
else if (distance >= 10){
lcd.print("0");
lcd.print(distance);
}
else{
lcd.print("00");
lcd.print(distance);
}
if(digitalRead(bot) == LOW){
botState = !botState;
delay(175);
}
if (botState == true && distance >= 20){
digitalWrite(bomba, HIGH);
delay(250);
digitalWrite(bomba, LOW);
delay(250);
lcd.setCursor(0,1);
lcd.print("Funcionando");
}
else{
lcd.setCursor(0,1);
lcd.print("Parada ");
}
if(distance < 400){
digitalWrite(ledf, HIGH);
digitalWrite(leda, LOW);
lcd.setCursor(13, 0);
lcd.print("ABR");
}
else{
digitalWrite(ledf, LOW);
digitalWrite(leda, HIGH);
lcd.setCursor(13, 0);
lcd.print("FCH");
}
delay(100);
}