#include <NewPing.h>
#define TRIGGER_PIN 12 // Ultrasonic sensor trigger pin
#define ECHO_PIN 11 // Ultrasonic sensor echo pin
#define MAX_DISTANCE 300 // Maximum distance in centimeters
#define BUZZER_PIN 6 // Buzzer pin
#define LED1_PIN 3 // LED 1 pin
#define LED2_PIN 8 // LED 2 pin
#define LED3_PIN 5 // LED 3 pin
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
unsigned long lastDistanceChangeTime = 0; // Time of the last distance change
const unsigned long distanceChangeDelay = 20000; // 5 seconds
int currentDistance = 0;
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
unsigned int distance = sonar.ping_cm();
if (distance != currentDistance) {
// Distance has changed
currentDistance = distance;
lastDistanceChangeTime = millis();
if (distance < 5) {
// Distance is less than 5 meters
allComponentsOff();
} else if (distance >= 5 && distance <= 10) {
// Distance is between 5 meters and 10 meters
buzzerAndLEDsOn();
} else if (distance > 10 && distance <= 20) {
// Distance is between 10 meters and 20 meters
twoLEDsAndBuzzerOn();
} else if (distance > 20 && distance <= 30) {
// Distance is between 20 meters and 30 meters
oneLEDAndBuzzerOn();
}
}
// Check if the distance has remained constant for 5 seconds
}
void allComponentsOff() {
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
}
void buzzerAndLEDsOn() {
if (millis() - lastDistanceChangeTime >= distanceChangeDelay) {
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
} else {
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, HIGH);
delay(500);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(500);
}
}
void twoLEDsAndBuzzerOn() {
if (millis() - lastDistanceChangeTime >= distanceChangeDelay) {
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
} else {
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED1_PIN, HIGH);
digitalWrite(LED2_PIN, HIGH);
digitalWrite(LED3_PIN, LOW);
delay(500);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(500);
}
}
void oneLEDAndBuzzerOn() {
if (millis() - lastDistanceChangeTime >= distanceChangeDelay) {
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
} else {
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, HIGH);
delay(500);
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
delay(500);
}
}