const int trigPins[] = {13,11,9,7}; // Trig pins for ultrasonic sensors
const int echoPins[] = {12,10,8,6}; // Echo pins for ultrasonic sensors
const int ledPins[] = {2,3,4,5}; // LED pins
const int proximityThreshold = 100; // Distance in centimeters
const int detectionTime = 5000; // Time in milliseconds (5 seconds)
bool sensors[] = {false, false, false, false};
void setup() {
Serial.begin(9600);
for (int i = 0; i < 4; i++) {
pinMode(trigPins[i], OUTPUT);
pinMode(echoPins[i], INPUT);
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
int detectionCount = 0;
unsigned long startTime = 0;
digitalWrite(ledPins[2], HIGH); // Turn on LED
while (detectionCount < 4) {
for (int i = 0; i < 4; i++) {
// Trigger the ultrasonic sensor
digitalWrite(trigPins[i], LOW);
delayMicroseconds(2);
digitalWrite(trigPins[i], HIGH);
delayMicroseconds(10);
digitalWrite(trigPins[i], LOW);
// Read the echo duration in microseconds
long duration = pulseIn(echoPins[i], HIGH);
// Convert the duration to centimeters
int distance = duration * 0.034 / 2;
// Serial.print("Sensor ");
// Serial.print(i + 1);
// Serial.print(" Distance: ");
// Serial.println(distance);
if (distance < proximityThreshold) {
sensors[i] = true;
}
else
{
sensors[i] = false;
}
}
if (millis() - startTime >= detectionTime && sensors[0] == true && sensors[1] == true && sensors[2] == true && sensors[3] == true ){
// All sensors detected an object closer than 10cm for 5 seconds
// HERE YOU CAN TURN ON LEDS BASED ON WHICH SENSOR IS true or false
digitalWrite(ledPins[0], HIGH); // Turn on LED 1
digitalWrite(ledPins[1], HIGH); // Turn on LED 2
digitalWrite(ledPins[2], HIGH); // Turn on LED 3
digitalWrite(ledPins[3], HIGH); // Turn on LED 4
delay(1000);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
}
else if (millis() - startTime >= detectionTime && ((sensors[0] == true && sensors[1] == true && sensors[2] == true) || (sensors[0] == true && sensors[1] == true && sensors[3] == true) || (sensors[0] == true && sensors[2] == true && sensors[3] == true) || (sensors[1] == true && sensors[2] == true && sensors[3] == true))){
// All sensors detected an object closer than 10cm for 5 seconds
// HERE YOU CAN TURN ON LEDS BASED ON WHICH SENSOR IS true or false
digitalWrite(ledPins[0], HIGH); // Turn on LED 1
digitalWrite(ledPins[1], HIGH); // Turn on LED 2
digitalWrite(ledPins[2], HIGH); // Turn on LED 3
delay(1000);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
}
else if (millis() - startTime >= detectionTime && ((sensors[0] == true && sensors[1] == true )|| (sensors[0] == true && sensors[2] == true)||(sensors[0] == true && sensors[3] == true) || (sensors[1] == true && sensors[2] == true) || (sensors[1] == true && sensors[3] == true) || (sensors[2] == true && sensors[3] == true))){
// All sensors detected an object closer than 10cm for 5 seconds
// HERE YOU CAN TURN ON LEDS BASED ON WHICH SENSOR IS true or false
digitalWrite(ledPins[0], HIGH); // Turn on LED 1
digitalWrite(ledPins[1], HIGH); // Turn on LED 2
delay(1000);
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
}
else if (millis() - startTime >= detectionTime && ((sensors[0] == true) || (sensors[1] == true) || (sensors[2] == true) || (sensors[3] == true))){
// All sensors detected an object closer than 10cm for 5 seconds
// HERE YOU CAN TURN ON LEDS BASED ON WHICH SENSOR IS true or false
digitalWrite(ledPins[0], HIGH); // Turn on LED 1
delay(1000);
digitalWrite(ledPins[0], LOW); // Turn on LED 1
}
else {
// Reset LEDs
for (int i = 2; i < 6; i++) {
// Serial.print("no");
digitalWrite(ledPins[i], LOW); // Turn off LED
}
}
}
delay(1000); // Adjust the delay as needed
}