//exercicio 6
//Gabriel Lisboa Leite de Melo
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define PIN_TRIG 3
#define PIN_ECHO 2
#define led 4
const int minPorcentagem = 15;
const int maxPorcentagem = 98;
bool ledLigado = false;
bool podeLigar = true;
void setup() {
lcd.init();
pinMode(led, OUTPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}
void loop() {
lcd.setBacklight(1);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
int duration = pulseIn(PIN_ECHO, HIGH);
int distanciaCM = (duration/58);
int porcentagem = map(distanciaCM, 10, 110, 100, 0);
if(porcentagem < 0){
porcentagem = 0;
}
float volume = 3.14 * (20 * 20) * porcentagem;
if (!ledLigado && podeLigar && porcentagem >= minPorcentagem) {
digitalWrite(led, HIGH);
ledLigado = true;
podeLigar = false;
}
if (ledLigado && porcentagem >= maxPorcentagem) {
digitalWrite(led, LOW);
ledLigado = false;
}
if (!ledLigado && porcentagem < minPorcentagem) {
podeLigar = true;
}
int estado = digitalRead(led);
lcd.setCursor(1,0);
lcd.print("VolMin: ");
lcd.setCursor(10,0);
lcd.print("18840");
lcd.setCursor(1,1);
lcd.print("VolMax:");
lcd.setCursor(9,1);
lcd.print("123088");
delay(5000);
lcd.clear();
delay(50);
lcd.setCursor(1,0);
lcd.print("VolMed:");
lcd.setCursor(0,1);
lcd.print(volume);
lcd.setCursor(11,0);
lcd.print("LED:");
lcd.setCursor(12,1);
lcd.print(estado);
delay(5000);
lcd.clear();
delay(50);
}