define TRIG_PIN 9
define ECHO_PIN 8
define LED_PIN 13
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Configure pins
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.println("Distance Sensor Initialized!");
}
void loop() {
// Trigger the ultrasonic sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2; // Speed of sound = 0.034 cm/us
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (distance > 0 && distance <= 200) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
delay(100); // Small delay for stability
}
LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the I2C address (0x27) for a 16x2 LCD
void setup() {
Serial.begin(115200); // Start Serial Monitor
// Pin configuration
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
// Initialize LCD
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Distance:");
Serial.println("HC-SR04 + PIR + LCD Initialized!");
}
void loop() {
// === Ultrasonic Sensor Logic ===
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.0343 / 2;
// === PIR Motion Sensor Logic ===
int pirState = digitalRead(PIR_PIN);
// === LED Control Logic ===
if ((distance > 0 && distance <= 200) || pirState == HIGH) {
digitalWrite(LED_PIN, HIGH); // Turn ON LED
} else {
digitalWrite(LED_PIN, LOW); // Turn OFF LED
}
// === Display on LCD ===
lcd.setCursor(10, 0);
if (distance > 0 && distance < 400) { // Display valid distance range
lcd.print(distance);
lcd.print("cm ");
} else {
lcd.print("Out of Range ");
}
lcd.setCursor(0, 1); // Second line: Motion Status
if (pirState == HIGH) {
lcd.print("Motion: Detected ");
} else {
lcd.print("Motion: None ");
}
// Debugging output
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print("PIR State: ");
Serial.println(pirState == HIGH ? "Motion Detected" : "No Motion");
delay(500); // Wait for stability
}