#define TRIG_PIN 4
#define ECHO_PIN 2
#define LED_VERMELHO 13
#define LED_LARANJA 12
#define LED_AMARELO 14
#define LED_VERDE 27
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_VERMELHO, OUTPUT);
pinMode(LED_LARANJA, OUTPUT);
pinMode(LED_AMARELO, OUTPUT);
pinMode(LED_VERDE, OUTPUT);
}
void loop() {
long duracao;
float distancia_cm;
// Envia pulso de 10us para TRIG
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Leitura do tempo do ECHO
duracao = pulseIn(ECHO_PIN, HIGH, 30000); // timeout de 30ms
if (duracao == 0) {
Serial.println("Falha na leitura do sensor!");
apagarLEDs();
delay(500);
return;
}
distancia_cm = duracao * 0.034 / 2;
Serial.print("Distância: ");
Serial.print(distancia_cm);
Serial.println(" cm");
// Apaga todos os LEDs
apagarLEDs();
// Acende o LED correspondente
if (distancia_cm <= 100) {
digitalWrite(LED_VERMELHO, HIGH);
} else if (distancia_cm <= 200) {
digitalWrite(LED_LARANJA, HIGH);
} else if (distancia_cm <= 300) {
digitalWrite(LED_AMARELO, HIGH);
} else if (distancia_cm <= 400) {
digitalWrite(LED_VERDE, HIGH);
}
delay(500);
}
void apagarLEDs() {
digitalWrite(LED_VERMELHO, LOW);
digitalWrite(LED_LARANJA, LOW);
digitalWrite