#define TRIG_PIN D2
#define ECHO_PIN D3
#define LED_PIN D4
#define BUZZER_PIN D7
unsigned long duration;
float distance;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(TRIG_PIN, LOW);
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
Serial.println("Distance-Based Warning System Started");
}
void loop() {
// Send ultrasonic trigger pulse
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Read echo pulse
duration = pulseIn(ECHO_PIN, HIGH, 30000UL);
if (duration == 0) {
digitalWrite(LED_PIN, LOW);
noTone(BUZZER_PIN);
Serial.println("No echo detected - Check wiring");
delay(300);
return;
}
// Calculate distance in centimeters
distance = duration * 0.0343f / 2.0f;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Warning when obstacle is within 20 cm
if (distance <= 20.0f) {
digitalWrite(LED_PIN, HIGH);
tone(BUZZER_PIN, 1000);
Serial.println("WARNING! Object too close!");
} else {
digitalWrite(LED_PIN, LOW);
noTone(BUZZER_PIN);
}
delay(200);
}Loading
st-nucleo-c031c6
st-nucleo-c031c6