#include <ESP32Servo.h>
Servo myservo; // create servo object to control a servo
// Define pin numbers
const int trigPin = 5;
const int echoPin = 4;
const int buzzerPin = 19;
const int led1 = 21;
const int led2 = 22;
const int led3 = 23;
long duration;
int distance;
void setup() {
myservo.attach(18); // attaches the servo on pin 18 to the servo object
pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
pinMode(led1, OUTPUT); // LED pin as OUTPUT
pinMode(led2, OUTPUT); // LED pin as OUTPUT
pinMode(led3, OUTPUT); // LED pin as OUTPUT
pinMode(buzzerPin, OUTPUT); // Buzzer pin as OUTPUT
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Clear the trigPin by setting it LOW for a moment
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Trigger the sensor by setting trigPin HIGH for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the echoPin and calculate the distance
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // Calculate the distance
// LED and buzzer control based on distance
if (distance > 300) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(buzzerPin, LOW);
myservo.write(0); // Servo at 0 degrees
}
else if (distance > 250) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(buzzerPin, LOW);
myservo.write(0); // Servo at 0 degrees
}
else if (distance < 200) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(buzzerPin, HIGH); // Activate buzzer
myservo.write(180); // Rotate servo to 180 degrees
}
else { // Distance between 200 and 250 cm
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(buzzerPin, LOW);
myservo.write(0); // Servo at 0 degrees
}
delay(100); // Delay to improve simulation
}