const int trigPin = 12;
const int echoPin = 14;
const int leds[] = {18, 19, 21, 22, 23};
const int distanciaVazio = 30;
const int distanciaCheio = 5;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
for (int i = 0; i < 5; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duracao = pulseIn(echoPin, HIGH);
int distancia = duracao * 0.034 / 2;
int nivel = map(distancia, distanciaCheio, distanciaVazio, 100, 0);
nivel = constrain(nivel, 0, 100);
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.print(" cm | Nivel: ");
Serial.print(nivel);
Serial.println(" %");
// Desliga todos os LEDs
for (int i = 0; i < 5; i++) {
digitalWrite(leds[i], LOW);
}
// Liga LEDs conforme o nível
if (nivel >= 20) digitalWrite(leds[0], HIGH);
if (nivel >= 40) digitalWrite(leds[1], HIGH);
if (nivel >= 60) digitalWrite(leds[2], HIGH);
if (nivel >= 80) digitalWrite(leds[3], HIGH);
if (nivel >= 100) digitalWrite(leds[4], HIGH);
delay(500);
}