const int trig = 4;
const int echo = 2;
long duration;
int distance;
const int relayPin = 12;
void setup() {
Serial.begin(115200);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(relayPin, OUTPUT);
pinMode(5, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
pinMode(21, OUTPUT);
}
void loop() {
// Trigger the ultrasonic sensor
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
// Read the echo pin
duration = pulseIn(echo, HIGH);
distance = (duration * 0.034 / 2) + 1;
// Control the LEDs and relay based on distance
if (distance == 30) {
digitalWrite(5, HIGH);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(relayPin, LOW); // Relay OFF
} else if (distance <= 20 && distance >= 10) {
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(relayPin, LOW); // Relay OFF
} else if (distance <= 10 && distance >= 6) {
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, LOW);
digitalWrite(relayPin, LOW); // Relay OFF
} else if (distance < 5 && distance >= 4) {
digitalWrite(5, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
digitalWrite(21, HIGH);
digitalWrite(relayPin, HIGH); // Relay ON
} else if (distance == 41) {
digitalWrite(relayPin, HIGH); // Relay ON
digitalWrite(5, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
} else {
digitalWrite(5, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
digitalWrite(21, LOW);
digitalWrite(relayPin, LOW); // Relay OFF
}
// Print distance to the Serial Monitor
Serial.println("Distance: " + String(distance) + " cm");
}