#define TRIG_PIN 4
#define ECHO_PIN 18
#define LED1 15
#define LED2 16
#define LED3 17
#define RELAY_PIN 19
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
// Inicializar todos los LEDs y el relé en estado bajo
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(RELAY_PIN, LOW);
}
void loop() {
// Generar pulso de disparo
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Medir duración del pulso de eco
long duration = pulseIn(ECHO_PIN, HIGH);
// Calcular distancia en cm
float distance = duration * 0.034 / 2;
// Mostrar distancia medida en el monitor serial
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Controlar LEDs y relé basado en la distancia medida
if (distance >= 150) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(RELAY_PIN, HIGH);
} else if (distance >= 100) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(RELAY_PIN, LOW);
} else if (distance >= 50) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(RELAY_PIN, LOW);
} else {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(RELAY_PIN, LOW);
}
// Esperar 2 segundos antes de la siguiente medición
delay(2000);
}