
Video
Skema rangkaian

Kode sumber
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Pengukuran Jarak HC-SR04 (Tampilan Serial)
4// ─────────────────────────────────────────
5// Mengukur jarak dengan sensor ultrasonik HC-SR04 dan mengirim hasil
6// antara 3 dan 100 cm ke Serial Monitor dalam cm setiap 0.5 s.
7//
8// Pin:
9// D7 -> Trig HC-SR04
10// D6 -> Echo HC-SR04
11// VCC HC-SR04 ke 5V, GND ke GND
12
13int echoPin = 6; // Input echo
14int trigPin = 7; // Output trigger
15int maxDistance = 100; // Jarak terbesar yang ditampilkan (cm)
16int minDistance = 3; // Jarak terkecil yang ditampilkan (cm)
17
18void setup() {
19 pinMode(trigPin, OUTPUT);
20 pinMode(echoPin, INPUT);
21 Serial.begin(9600);
22}
23
24void loop() {
25 // Pulsa trigger 10 us mengirim semburan suara
26 digitalWrite(trigPin, HIGH);
27 delayMicroseconds(10);
28 digitalWrite(trigPin, LOW);
29
30 // Lama Echo tetap HIGH (us) adalah waktu bolak-balik. Suara merambat 0.034 cm/us; membagi dua
31 // lintasannya memberi jarak
32 unsigned long duration = pulseIn(echoPin, HIGH);
33 double totalPath = (double)duration * 0.034;
34 int distance = totalPath / 2;
35
36 // Kirim hanya di dalam rentang yang valid
37 if (distance > minDistance && distance < maxDistance) {
38 Serial.print("Distance: ");
39 Serial.print(distance);
40 Serial.println("cm");
41 }
42
43 delay(500); // Tunggu 0.5 s
44}
45
FAQ
Bagaimana HC-SR04 mengukur jarak?
Sensor memancarkan gelombang suara 40 kHz dan mengukur waktu yang dibutuhkan pantulannya untuk kembali. Suara bergerak di udara dengan kecepatan sekitar 343 m/s; jaraknya diubah ke sentimeter dengan rumus: jarak = waktu × 0,0343 / 2 (dibagi 2 karena suaranya pergi dan pulang).
Berapa jarak terpendek dan terjauh yang bisa diukurnya?
Dalam praktiknya, sensor ini mengukur jarak dari sekitar 2 cm sampai 400 cm. Pengukuran bisa tidak akurat atau terbaca 0 ketika jaraknya kurang dari 2 cm, ketika mengukur jarak yang sangat jauh, atau pada permukaan yang menyerap suara (seperti kain atau busa).
Kadang bacaannya 0 atau sangat besar, kenapa?
Jika tidak ada pantulan yang diterima, `pulseIn` akan kehabisan waktu. Pastikan sensor menghadap permukaan yang rata dan keras, beri jeda minimal 60 ms di antara pengukuran, dan saring bacaan yang salah di kodemu.
Bisakah aku memakainya dengan ESP32?
HC-SR04 bekerja di 5 V, dan pin ECHO-nya mengeluarkan 5 V. Karena ESP32 memakai logika 3,3 V, kamu sebaiknya menambahkan pembagi tegangan (mis. 1 kΩ + 2 kΩ) di jalur ECHO atau memakai model HC-SR04P yang kompatibel dengan 3,3 V.
