// Definição dos pinos do sensor HC-SR04
const int trigPin = 9;
const int echoPin = 10;
// Definição do pino do buzzer piezoelétrico
const int buzzerPin = 11;
// Variáveis para armazenar o tempo e a distância
long duration;
int distance;
void setup() {
// Configura os pinos como entrada ou saída
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Inicializa a comunicação serial
Serial.begin(9600);
}
void loop() {
// Gera o pulso do Trig para iniciar a medição
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lê o pulso no Echo e calcula a duração
duration = pulseIn(echoPin, HIGH);
// Calcula a distância em centímetros
distance = duration * 0.034 / 2;
// Exibe a distância no monitor serial
Serial.print("Distância: ");
Serial.print(distance);
Serial.println(" cm");
// Condição para acionar o buzzer com base na distância
if (distance <= 110 && distance > 90) {
// 1 sinal sonoro por segundo
tone(buzzerPin, 1000); // Toca o buzzer com frequência de 1000 Hz
delay(500); // Tempo do sinal sonoro
noTone(buzzerPin);
delay(500); // Tempo sem sinal (1 segundo no total)
} else if (distance <= 90 && distance > 70) {
// 2 sinais sonoros por segundo
tone(buzzerPin, 1000);
delay(250); // Tempo do sinal sonoro
noTone(buzzerPin);
delay(250); // Tempo sem sinal (2 sinais por segundo)
} else if (distance <= 70 && distance > 60) {
// 3 sinais sonoros por segundo
tone(buzzerPin, 1000);
delay(167); // Tempo do sinal sonoro
noTone(buzzerPin);
delay(167); // Tempo sem sinal (3 sinais por segundo)
} else if (distance <= 60) {
// Som contínuo
tone(buzzerPin, 1000); // Toca o buzzer continuamente
} else {
noTone(buzzerPin); // Desativa o buzzer se a distância for maior que 110 cm
}
delay(50); // Pequena pausa antes da próxima leitura
}