// Definindo os pinos
const int trigPin = 4;
const int echoPin = 5;
const int buzzerPin = 7;
const int ledPin1 = 13;
const int ledPin2 = 12;
const int ledPin3 = 11;
const int ledPin4 = 10;
// Definindo as distâncias para os LEDs (em centímetros)
const int distanceLevel1 = 100;
const int distanceLevel2 = 200;
const int distanceLevel3 = 300;
const int distanceLevel4 = 400;
void setup() {
// Inicializando o monitor serial
Serial.begin(9600);
// Configurando os pinos
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
}
void loop() {
// Limpar o pino TRIG
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Gerar um pulso de 10 microssegundos para o TRIG
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Ler o tempo do pulso do ECHO
long duration = pulseIn(echoPin, HIGH);
// Calcular a distância em centímetros
float distance = (duration / 2.0) * 0.0344;
// Imprimir a distância no monitor serial
Serial.print("Distância: ");
Serial.print(distance);
Serial.println(" cm");
// Lógica para acender os LEDs de acordo com a distância
if (distance < distanceLevel1) {
digitalWrite(ledPin1, HIGH); // Acender LED1
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
else if (distance < distanceLevel2) {
digitalWrite(ledPin1, HIGH); // Acender LED1 e LED2
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
else if (distance < distanceLevel3) {
digitalWrite(ledPin1, HIGH); // Acender LED1, LED2 e LED3
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
}
else if (distance < distanceLevel4) {
digitalWrite(ledPin1, HIGH); // Acender todos os LEDs
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
else {
// Se a distância for maior que o limite, apagar todos os LEDs
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
}
// Se a distância for menor que o último limite, acionar o buzzer
if (distance < distanceLevel4) {
digitalWrite(buzzerPin, HIGH); // Acionar o buzzer
delay(100); // Duração do bip
digitalWrite(buzzerPin, LOW); // Desligar o buzzer
delay(100);
}
// Atraso antes da próxima leitura
delay(200);
}