#include "Ultrasonic.h"
#define TRIG_PIN 13
#define ECHO_PIN 12
#define RELAY_PIN 2
#define BUZZER_PIN 3
#define LED1_PIN 4
#define LED2_PIN 5
#define LED3_PIN 6
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
const int DISTANCE_THRESHOLD = 50;
const unsigned int TIME_INTERVAL = 10000;
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
}
void flashLED(int pin, unsigned long startTime, unsigned long duration) {
if (millis() - startTime > duration) {
digitalWrite(pin, HIGH);
} else {
digitalWrite(pin, LOW);
}
}
void loop() {
int distance = ultrasonic.read(CM);
if (distance < DISTANCE_THRESHOLD) {
digitalWrite(RELAY_PIN, HIGH);
digitalWrite(BUZZER_PIN,LOW);
unsigned long startTime = millis();
do {
flashLED(LED1_PIN, startTime, TIME_INTERVAL / 3);
flashLED(LED2_PIN, startTime, TIME_INTERVAL / 3 * 2);
flashLED(LED3_PIN, startTime, TIME_INTERVAL);
} while (ultrasonic.read(CM) < DISTANCE_THRESHOLD);
digitalWrite(RELAY_PIN, LOW);
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
unsigned long stopTime = millis();
if (stopTime - startTime < TIME_INTERVAL) {
digitalWrite(BUZZER_PIN, HIGH);
} else {
digitalWrite(BUZZER_PIN, LOW);
}
}
}