/*
int trig = 9;
int echo = 5;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trig, LOW);
delayMicroseconds(5);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
long time = pulseIn(echo, HIGH);
float distance = (340*time)/2;
Serial.println(distance);
delay(1000);
}
*/
// Define pin connections
const int TRIGGER_PIN = 13;
const int ECHO_PIN = 12;
const int LED_PINS[] = {7, 6, 5};
void setup() {
// Initialize pins
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.begin(9600);
// Initialize LED pins
for (int i = 0; i < 3; i++) {
pinMode(LED_PINS[i], OUTPUT);
}
}
void loop() {
// Send ultrasonic pulse
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(5);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(5);
digitalWrite(TRIGGER_PIN, LOW);
// Measure echo time
float echoTime = pulseIn(ECHO_PIN, HIGH);
// Calculate distance
float distance = (0.034 * echoTime) / 2; // cm/s speed of sound
Serial.println(distance);
// Update LEDs based on distance
updateLEDs(distance);
delay(1000);
}
void updateLEDs(float distance) {
// Define distance ranges for LED indicators
const int CLOSE_RANGE = 30;
const int FAR_RANGE = 200;
// Update LED states
if (distance <= CLOSE_RANGE) {
// Close range: Red LED
digitalWrite(LED_PINS[0], HIGH);
digitalWrite(LED_PINS[1], LOW);
digitalWrite(LED_PINS[2], LOW);
} else if (distance > CLOSE_RANGE && distance < FAR_RANGE) {
// Medium range: Yellow LED
digitalWrite(LED_PINS[0], LOW);
digitalWrite(LED_PINS[1], HIGH);
digitalWrite(LED_PINS[2], LOW);
} else {
// Far range: Green LED
digitalWrite(LED_PINS[0], LOW);
digitalWrite(LED_PINS[1], LOW);
digitalWrite(LED_PINS[2], HIGH);
}
}