/*
* Código para um sensor de proximidade com ESP32,
* sensor ultrassônico HC-SR04, LED e Buzzer.
*
* Baseado no diagrama de circuito fornecido. Quando um objeto está
* mais perto do que o DISTANCE_THRESHOLD, o LED e o buzzer são ativados.
*/
// --- Mapeamento dos Pinos ---
const int PINO_TRIG = 2; // Pino Trigger do HC-SR04
const int PINO_ECHO = 4; // Pino Echo do HC-SR04
const int PINO_LED = 17; // Pino do LED
const int PINO_BUZZER = 5; // Pino do Buzzer
// --- Constantes ---
// Distância em centímetros para acionar o alarme
const int DISTANCIA_LIMITE = 20;
// Velocidade do som em cm/µs (aproximadamente 343 m/s)
const float VELOCIDADE_SOM = 0.0343;
void setup() {
// Inicia a comunicação serial para depuração
Serial.begin(115200);
// Define o modo dos pinos
pinMode(PINO_TRIG, OUTPUT);
pinMode(PINO_ECHO, INPUT);
pinMode(PINO_LED, OUTPUT);
pinMode(PINO_BUZZER, OUTPUT);
// Garante que os atuadores comecem desligados
digitalWrite(PINO_LED, LOW);
digitalWrite(PINO_BUZZER, LOW);
}
void loop() {
// --- Etapa 1: Medir a Distância com o Sensor Ultrassônico ---
// Para garantir um pulso limpo, define o pino TRIG em nível baixo por um instante
digitalWrite(PINO_TRIG, LOW);
delayMicroseconds(2);
// Envia um pulso ultrassônico de 10 microssegundos
digitalWrite(PINO_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PINO_TRIG, LOW);
// Mede o tempo que o pulso leva para retornar (em microssegundos)
long duracao = pulseIn(PINO_ECHO, HIGH);
// --- Etapa 2: Calcular a Distância ---
// Distância (cm) = (Duração do pulso * Velocidade do som) / 2
float distancia = (duracao * VELOCIDADE_SOM) / 2;
// --- Etapa 3: Lógica do Alarme ---
// Verifica se a distância medida é menor que o limite e maior que 0
if (distancia < DISTANCIA_LIMITE && distancia > 0) {
// Se um objeto for detectado, liga o LED e aciona o buzzer
digitalWrite(PINO_LED, HIGH);
tone(PINO_BUZZER, 1000); // Aciona o buzzer com uma frequência de 1000 Hz
} else {
// Caso contrário, desliga o LED e o buzzer
digitalWrite(PINO_LED, LOW);
noTone(PINO_BUZZER); // Para o som do buzzer
} // <--- ESTA PARTE ESTAVA FALTANDO ---
// --- Etapa 4: Exibir a Distância no Monitor Serial (para depuração) ---
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println(" cm");
// Pequeno atraso antes da próxima leitura
delay(100);
} // <--- E ESTA CHAVE FINAL TAMBÉM ESTAVA FALTANDO ---