#include <LiquidCrystal.h>
#define trigPin 24
#define echoPin 25
#define relay1Pin 8
#define relay2Pin 9
#define redled 7
#define yellowled 6
#define greenled 10
#define buzzerPin 13
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(redled,OUTPUT);
pinMode(yellowled,OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("Distance:");
}
void loop() {
// Trigger the ultrasonic sensor to send a pulse
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the pulse duration from the echo pin
long duration = pulseIn(echoPin, HIGH);
// Calculate distance in centimeters
int distance = duration / 58;
lcd.setCursor(11, 0);
lcd.print(" ");
lcd.setCursor(11, 0);
lcd.print(distance);
// Print the distance to the serial monitor
Serial.print("Distance: ");
Serial.println(distance);
// Control relays based on distance
if (distance >200 ) {
digitalWrite(relay1Pin, LOW); // Activate Relay 1
digitalWrite(relay2Pin, LOW);
digitalWrite(yellowled,LOW);
digitalWrite(redled,LOW);// Deactivate Relay 2
digitalWrite(greenled, HIGH);
} else if (distance >= 100) {
digitalWrite(relay1Pin, HIGH); // Deactivate Relay 1
digitalWrite(relay2Pin, HIGH);// Activate Relay 2
digitalWrite(yellowled, HIGH);
digitalWrite(redled, LOW);
digitalWrite(greenled, LOW);
digitalWrite(buzzerPin, HIGH);
delay(500);
digitalWrite(buzzerPin, LOW);
} else if (distance<100) {
digitalWrite(relay1Pin, HIGH); // Deactivate Relay 1
digitalWrite(relay2Pin, LOW);
digitalWrite(yellowled, LOW);
digitalWrite(redled, HIGH);
digitalWrite(greenled, LOW);
digitalWrite(buzzerPin, HIGH);
delay(200);
digitalWrite(buzzerPin, LOW);
}
delay(100); // Delay for stability
}