/*
* Sensor de Estacionamento - Adaptado de um exemplo HC-SR04
*
* Liga o LED e emite um som que fica mais rápido
* à medida que a distância diminui.
*
* Refatorado por Gemini
*/
#define ECHO_PIN 2
#define TRIG_PIN 3
#define SPEAKER_PIN 8
#define LED_PIN 13
// Frequência do bipe em Hertz
const int BEEP_FREQUENCY = 500;
// Limites de distância em centímetros
const int DISTANCE_LIMIT_1 = 100;
const int DISTANCE_LIMIT_2 = 50;
const int DISTANCE_LIMIT_3 = 20;
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(SPEAKER_PIN, OUTPUT);
}
// Função para ler a distância em centímetros
float readDistanceCM() {
// Limpa o pino TRIG
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
// Ativa o pino TRIG por 10 microssegundos para gerar o pulso ultrassônico
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Lê a duração do pulso de retorno no pino ECHO
long duration = pulseIn(ECHO_PIN, HIGH);
// Calcula a distância: tempo * velocidade do som (0.034 cm/µs) / 2 (ida e volta)
return duration * 0.034 / 2;
}
void loop() {
float distance = readDistanceCM();
Serial.print("Distancia medida: ");
Serial.print(distance);
Serial.println(" cm");
// Lógica do sensor de estacionamento
if (distance > DISTANCE_LIMIT_1) {
// Muito longe - Sem bipe
digitalWrite(LED_PIN, LOW);
noTone(SPEAKER_PIN);
} else if (distance > DISTANCE_LIMIT_2) {
// Proximidade moderada - Bipes lentos
digitalWrite(LED_PIN, HIGH);
tone(SPEAKER_PIN, BEEP_FREQUENCY);
delay(200); // Duração do bipe
noTone(SPEAKER_PIN);
delay(800); // Pausa entre os bipes
} else if (distance > DISTANCE_LIMIT_3) {
// Proximidade maior - Bipes mais rápidos
digitalWrite(LED_PIN, HIGH);
tone(SPEAKER_PIN, BEEP_FREQUENCY);
delay(200);
noTone(SPEAKER_PIN);
delay(300);
} else {
// Muito perto - Bipe contínuo
digitalWrite(LED_PIN, HIGH);
tone(SPEAKER_PIN, BEEP_FREQUENCY);
}
// Pequeno delay para estabilidade, mas a maior parte da espera
// já é controlada pelos delays condicionais acima.
delay(50);
}