// Pinos do Sensor Ultrassônico
const int trigPin = 25;
const int echoPin = 26;
// Pino do Buzzer
const int buzzerPin = 27;
// Array com os pinos dos LEDs (Branco, Verde, Amarelo, Vermelho)
const int leds[] = {13, 14, 16, 17, 18, 19, 21, 22};
const int totalLeds = 8;
// Distâncias de detecção em centímetros
const int distanciaMaxima = 40; // Primeiro LED (Branco) acende
const int distanciaMinima = 5; // Todos os LEDs acendem
void setup() {
Serial.begin(115200);
// Configuração dos pinos do sensor e buzzer
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Configuração de todos os pinos dos LEDs como saída
for (int i = 0; i < totalLeds; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
// 1. Gera o pulso para o sensor medir a distância
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 2. Lê o tempo de retorno do eco e calcula a distância em cm
long duracao = pulseIn(echoPin, HIGH);
int distancia = duracao * 0.034 / 2;
// Imprime no monitor serial para acompanhamento
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
// 3. Define quantos LEDs devem acender
int ledsAcesos = map(distancia, distanciaMinima, distanciaMaxima, totalLeds, 0);
ledsAcesos = constrain(ledsAcesos, 0, totalLeds);
// 4. Liga/Desliga os LEDs
for (int i = 0; i < totalLeds; i++) {
if (i < ledsAcesos) {
digitalWrite(leds[i], HIGH);
} else {
digitalWrite(leds[i], LOW);
}
}
// 5. Lógica do Buzzer (Apita a 10cm ou menos)
if (distancia <= 10 && distancia > 0) {
tone(buzzerPin, 1000); // Toca uma nota de 1000Hz
} else {
noTone(buzzerPin); // Desliga o som
}
delay(100);
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4