// Pin Definitions
#define TRIG_PIN_1 5
#define ECHO_PIN_1 4
#define TRIG_PIN_2 8
#define ECHO_PIN_2 9
#define LED_A 10
#define LED_B 11
#define LED_C 12
#define LED_D 13
#define LED_RED 2
// Constants
const float SPEED_OF_SOUND = 0.034; // Speed of sound in cm per microsecond
const int LED_THRESHOLD_A = 5; // Distance threshold for LED A
const int LED_THRESHOLD_B = 7; // Distance threshold for LED B
const int LED_THRESHOLD_C = 10; // Distance threshold for LED C
const int LED_THRESHOLD_D = 15; // Distance threshold for LED D
const int LED_THRESHOLD_RED = 20; // Distance threshold for LED RED
// Function prototypes
float measureDistance(int trigPin, int echoPin);
void setup() {
Serial.begin(9600);
// Ultrasonic Sensor Setup
pinMode(TRIG_PIN_1, OUTPUT);
pinMode(ECHO_PIN_1, INPUT);
pinMode(TRIG_PIN_2, OUTPUT);
pinMode(ECHO_PIN_2, INPUT);
// LED Setup
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
pinMode(LED_D, OUTPUT);
pinMode(LED_RED, OUTPUT);
}
void loop() {
// Measure distances from both sensors
float distance1 = measureDistance(TRIG_PIN_1, ECHO_PIN_1);
float distance2 = measureDistance(TRIG_PIN_2, ECHO_PIN_2);
// Control LEDs based on sensor readings
digitalWrite(LED_A, (distance1 > LED_THRESHOLD_A && distance1 < LED_THRESHOLD_B) ? HIGH : LOW);
digitalWrite(LED_B, (distance2 > LED_THRESHOLD_B && distance2 < LED_THRESHOLD_C) ? HIGH : LOW);
digitalWrite(LED_C, (distance1 > LED_THRESHOLD_C && distance1 < LED_THRESHOLD_D) ? HIGH : LOW);
digitalWrite(LED_D, (distance2 > LED_THRESHOLD_D && distance2 < LED_THRESHOLD_RED) ? HIGH : LOW);
digitalWrite(LED_RED, (distance1 > LED_THRESHOLD_RED || distance2 > LED_THRESHOLD_RED) ? HIGH : LOW);
// Delay before next iteration
delay(500);
}
// Function to measure distance using ultrasonic sensor
float measureDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) * SPEED_OF_SOUND / 2.0;
}