/* * UltrasonicRead.ino * XIAO ESP32-C3 on HelloWorld board (Week 8) * * HC-SR04 ultrasonic distance sensor: * Trig -> D1, Echo -> D2 * VCC -> 5V, GND -> GND * * Sends a 10 µs trigger pulse, measures echo pulse width, * and prints distance in cm over USB serial. */ const int trigPin = D1; const int echoPin = D2; const unsigned long PULSE_TIMEOUT_US = 30000; // ~5 m max range const int SAMPLES = 5; float readDistanceCm() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); unsigned long duration = pulseIn(echoPin, HIGH, PULSE_TIMEOUT_US); if (duration == 0) { return -1.0; } return duration * 0.034 / 2.0; // round-trip time -> one-way distance (cm) } void setup() { Serial.begin(115200); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { float sum = 0; int valid = 0; for (int i = 0; i < SAMPLES; i++) { float d = readDistanceCm(); if (d > 0) { sum += d; valid++; } delay(10); } if (valid == 0) { Serial.println("Out of range"); } else { float avg = sum / valid; Serial.print("Distance: "); Serial.print(avg, 1); Serial.println(" cm"); } delay(200); }