/* * ============================================================ * HC-SR04 Ultrasonic Distance Sensor — Sample Sketch * Tishvi Electronics | guide.tishvi.com * ============================================================ * Wiring: * HC-SR04 VCC → Arduino 5V * HC-SR04 GND → Arduino GND * HC-SR04 TRIG → Arduino Pin 9 * HC-SR04 ECHO → Arduino Pin 10 * * What this sketch does: * 1. Sends a 10µs ultrasonic pulse every 200 ms * 2. Measures how long the echo takes to return * 3. Converts the time to distance in centimetres * 4. Prints the distance to the Serial Monitor * 5. Prints a simple proximity alert if object < 10 cm * * No external libraries needed — uses built-in pulseIn() * ============================================================ */ // ── Pin Definitions ────────────────────────────────────────── const int TRIG_PIN = 9; // Trigger: Arduino → Sensor const int ECHO_PIN = 10; // Echo: Sensor → Arduino // ── Settings ──────────────────────────────────────────────── const int ALERT_CM = 10; // Distance threshold for "close" alert const float SPEED_SOUND = 0.0343; // Speed of sound at ~20°C (cm/µs) void setup() { pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); Serial.begin(9600); Serial.println("HC-SR04 Distance Sensor — Tishvi Sample Sketch"); Serial.println("-------------------------------------------"); Serial.println("Open Serial Monitor at 9600 baud to see readings."); } void loop() { // ── 1. Fire the ultrasonic pulse ─────────────────────────── digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); // 10µs HIGH pulse digitalWrite(TRIG_PIN, LOW); // ── 2. Measure the echo return time ──────────────────────── // pulseIn() waits for the ECHO pin to go HIGH, measures how long it stays HIGH // Timeout = 25000µs → max measurable distance ≈ 430 cm long durationUs = pulseIn(ECHO_PIN, HIGH, 25000); // ── 3. Convert to centimetres ────────────────────────────── // Sound travels to object AND back, so divide by 2 float distanceCm = (durationUs * SPEED_SOUND) / 2.0; // ── 4. Print result ──────────────────────────────────────── if (durationUs == 0) { // Timeout: nothing detected within range Serial.println("Distance: OUT OF RANGE (> 430 cm or no echo)"); } else { Serial.print("Distance: "); Serial.print(distanceCm, 1); // 1 decimal place Serial.print(" cm"); // ── 5. Proximity alert ───────────────────────────────── if (distanceCm < ALERT_CM) { Serial.print(" ⚠ CLOSE!"); } Serial.println(); } delay(200); // Wait 200 ms before next measurement }