// Define pin numbers for components
const int ldrPin = A0; // LDR pin
const int ultrasonicTrigPin = 9; // Ultrasonic sensor trigger pin
const int ultrasonicEchoPin = 10; // Ultrasonic sensor echo pin
const int buzzerPin = 8; // Buzzer pin
const int ledPins[] = {2, 3, 4, 5, 6}; // Array of LED pins
// Define variables
int ldrThreshold = 500; // LDR threshold for night mode
long distance;
int distanceLEDs[5] = {1, 2, 3, 4, 5}; // LEDs corresponding to distance levels
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Initialize ultrasonic sensor pins
pinMode(ultrasonicTrigPin, OUTPUT);
pinMode(ultrasonicEchoPin, INPUT);
// Initialize buzzer pin
pinMode(buzzerPin, OUTPUT);
// Initialize LED pins
for (int i = 0; i < 5; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Read LDR value
int ldrValue = analogRead(ldrPin);
// Check if it's night mode
if (ldrValue < ldrThreshold) {
// Night mode
// Enable ultrasonic sensor
digitalWrite(ultrasonicTrigPin, LOW);
delayMicroseconds(2);
digitalWrite(ultrasonicTrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(ultrasonicTrigPin, LOW);
// Read ultrasonic sensor
distance = pulseIn(ultrasonicEchoPin, HIGH) * 0.034 / 2; // Convert to cm
// Display distance value
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Display corresponding LED pattern based on distance
if (distance == 50) {
displayLEDs(0);
} else if (distance == 75) {
displayLEDs(1);
} else if (distance == 100) {
displayLEDs(2);
} else if (distance == 125) {
displayLEDs(3);
} else if (distance == 150) {
displayLEDs(4);
}
// Check if specific distance values encountered and display on monitor
if (distance == 50 || distance == 75 || distance == 100 || distance == 125 || distance == 150) {
Serial.print("Distance of ");
Serial.print(distance);
Serial.println(" cm encountered.");
}
} else {
// Day mode
// Disable ultrasonic sensor
digitalWrite(ultrasonicTrigPin, LOW);
// Turn off all LEDs
for (int i = 0; i < 5; i++) {
digitalWrite(ledPins[i], LOW);
}
}
}
// Function to display LEDs based on distance level
void displayLEDs(int level) {
for (int i = 0; i < 5; i++) {
if (i <= level) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
}