// Define pins
const int trigPin = 2;
const int echoPin = 4;
const int redPin = 5;
const int greenPin = 12;
const int bluePin = 13;
// Other variables
long duration, cm;
int trigger = 0;
void setup() {
// Initialize pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(115200); // Use a higher baud rate for ESP32
}
void loop() {
// Trigger ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Calculate duration and distance
duration = pulseIn(echoPin, HIGH);
cm = duration * 0.0343 / 2;
// Handle LED based on distance
if (cm >= 2 && cm <= 100) {
trigger++;
if (trigger >= 1 && trigger <= 9) {
// Turn on red LED
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
} else {
// Reset trigger and turn on green LED
trigger = 0;
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
}
} else {
// Turn off all LEDs if out of range
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
trigger = 0; // Reset trigger if out of range
}
Serial.print("Distance: ");
Serial.print(cm);
Serial.println(" cm");
delay(1000);
}