#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);
}