// Exercício 6
// Breno Correia Lociks
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define PIN_ECHO 2
#define PIN_TRIG 3
#define BOMBA_AGUA 4
unsigned long millisAnteriorLCD = 0;
int telaAtual = 0;
char status = false;
void setup() {
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(BOMBA_AGUA, OUTPUT);
lcd.init();
lcd.setBacklight(HIGH);
}
void loop() {
unsigned long millisAtual = millis();
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
int duration = pulseIn(PIN_ECHO, HIGH);
int distCM = duration / 58;
if(distCM >= 95){
digitalWrite(BOMBA_AGUA, HIGH);
status = true;
}
if(distCM <= 12){
digitalWrite(BOMBA_AGUA, LOW);
status = false;
}
unsigned long VolMed = map(distCM, 95, 12, 18240, 123088);
if((millisAtual - millisAnteriorLCD) > 2000){
millisAnteriorLCD = millisAtual;
if(telaAtual == 0){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("V.Max=123088cm3");
lcd.setCursor(0,1);
lcd.print("V.Min=18240cm3");
telaAtual = 1;
}
else if(telaAtual == 1){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("V.Med=");
lcd.print(VolMed);
lcd.print("cm3");
if(status == false){
lcd.setCursor(0,1);
lcd.print("Bomba desligada");
}
if(status == true){
lcd.setCursor(0,1);
lcd.print("Bomba ligada");
}
telaAtual = 0;
}
}
}