#include <Servo.h>
const int trigPin = 7;
const int echoPin = 6;
const int irSensorPin = 8;
const int servoPin = 9;
const int laneIndicatorLED = 4;
long duration;
float distance;
Servo controlServo;
void setup() {
Serial.begin(9600);
// Initialize pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(irSensorPin, INPUT);
pinMode(laneIndicatorLED, OUTPUT);
controlServo.attach(servoPin);
controlServo.write(0);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.0343) / 2;
int laneDetected = digitalRead(irSensorPin);
if (distance < 30) {
controlServo.write(0);
} else {
controlServo.write(90);
}
if (laneDetected == HIGH) {
digitalWrite(laneIndicatorLED, HIGH);
controlServo.write(90);
} else {
digitalWrite(laneIndicatorLED, LOW);
controlServo.write(80);
}
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(100);
}