// Pin definitions
const int trigPin = 5;
const int echoPin = 18;
const int pirPin = 19;
// Variables for distance and motion
long duration;
float distance;
bool motionDetected = false;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(pirPin, INPUT);
Serial.println("ESP32 Ultrasonic + PIR Sensor Initialized");
}
void loop() {
// Read PIR motion sensor
motionDetected = digitalRead(pirPin);
if (motionDetected) {
Serial.println("Motion Detected!");
// Trigger ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read echo pin
duration = pulseIn(echoPin, HIGH);
// Calculate distance (cm)
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
} else {
Serial.println("No Motion Detected.");
}
delay(1000); // Wait before next read
}