ThingerBits
beginnerArduino

Arduino සමඟ HC-SR04 Ultrasonic Sensor එක භාවිතා කරන හැටි

by Test Admin10 Jul 2026 4 0 0
Arduino සමඟ HC-SR04 Ultrasonic Sensor එක භාවිතා කරන හැටි

සම්පූර්ණ Tutorial එක — Wiring, Diagrams, Code Examples සමඟ Sinhala + English Technical Terms

1. හැඳින්වීම (Introduction)

Robot එකකට ඉස්සරහ තියෙන බාධකයක් අඳුනගන්න, water tank එකක level එක බලන්න, parking sensor එකක් හදන්න — මේ ඔක්කොටම ඕන වෙන්නේ distance measure කරන sensor එකක්. Arduino world එකේ ඒකට තියෙන ජනප්‍රියම සහ ලාබම විසඳුම තමයි HC-SR04 Ultrasonic Sensor එක. රුපියල් කීපසීයකට ගන්න පුළුවන් මේ sensor එකෙන් 2cm ඉඳන් 400cm (මීටර් 4ක්) දක්වා දුර 3mm accuracy එකකින් measure කරන්න පුළුවන්.

වඩාත්ම ලස්සන දේ — මේක වැඩ කරන්නේ වවුලෙක් (bat) වගේමයි! වවුලා sound waves යවලා, ඒවා ආපහු එනකම් බලාගෙන ඉඳලා, ඒ time එකෙන් දුර දැනගන්නවා වගේ, HC-SR04 එකත් ultrasonic sound waves use කරලා දුර measure කරනවා.

මේ tutorial එකේදී අපි ඉගෙන ගන්නේ:

  • Ultrasonic sensor එකක් දුර measure කරන විදිහ (echo + timing)
  • Distance calculation formula එක සහ ඒක code එකේ use කරන හැටි
  • HC-SR04 pinout එක සහ Arduino UNO එකට wire කරන හැටි
  • Trig/Echo pins වලින් distance කියවන complete sketch එකක්
  • Sensor එකේ limitations සහ accuracy වැඩි කරගන්න tips

2. Ultrasonic Sensor එක වැඩ කරන හැටි

"Ultrasonic" කියන්නේ මිනිස් කනට ඇහෙන්නේ නැති තරම් frequency එක වැඩි sound waves වලට. HC-SR04 එක use කරන්නේ 40kHz sound waves — අපිට ඇහෙන උපරිමය 20kHz විතර නිසා මේවා අපිට ඇහෙන්නේ නැහැ.

Arduino සමඟ HC-SR04 Ultrasonic Sensor එක භාවිතා කරන හැටි
රූපය 1: HC-SR04 එක දුර measure කරන විදිහ

Sensor එකේ මූණේ speaker වගේ පේන round components දෙක තමයි transducers. එකක් transmitter (T) — electrical signal එක ultrasonic sound බවට හරවනවා. අනිත් එක receiver (R) — ආපහු එන echo එක අහගෙන ඉන්නවා.

Measurement cycle එක මෙහෙම වැඩ කරනවා:

  • පියවර 1 — Arduino එක Trig pin එකට 10µs (microseconds 10ක) HIGH pulse එකක් දෙනවා. මේක "measure කරන්න පටන් ගන්න" කියන command එක.
  • පියවර 2 — Sensor එක 40kHz pulses 8ක burst එකක් අහසට යවනවා. Pulses 8ක් යවන්නේ echo එක noise වලින් වෙන් කරලා අඳුනගන්න ලේසි වෙන්න.
  • පියවර 3 — ඒ මොහොතේම Echo pin එක HIGH වෙනවා. Sound waves object එකේ වැදිලා ආපහු receiver එකට ආවම Echo pin එක LOW වෙනවා.
  • පියවර 4 — Echo pin එක HIGH වෙලා තිබ්බ කාලය = sound එක ගිහින් එන්න ගත්ත මුළු time එක. ඒකෙන් දුර calculate කරනවා.

Object එකක් හම්බුනේ නැත්නම් Echo pin එක 38ms කට පස්සේ timeout වෙලා LOW වෙනවා — ඒ කියන්නේ "range එකේ මුකුත් නැහැ".

2.1 Distance Calculation එක

Sound speed එක වාතයේ 340 m/s — ඒක microseconds වලින් ගත්තම 0.034 cm/µs. දුර calculate කරන formula එක:

distance (cm) = (echo time in µs × 0.034) / 2

2න් බෙදන්නේ ඇයි? Echo time එක කියන්නේ sound එක object එකට ගිහින් ආපහු එන්න ගත්ත මුළු කාලය — ඒ කියන්නේ දුර දෙගුණයක් travel කරලා. අපිට ඕන එක පැත්තක දුර විතරක් නිසා දෙකෙන් බෙදනවා.

උදාහරණයක්: Echo time එක 500µs නම් → (500 × 0.034) / 2 = 8.5cm. සරලයි!

3. Specifications සහ Pinout එක

Arduino සමඟ HC-SR04 Ultrasonic Sensor එක භාවිතා කරන හැටි
රූපය 2: HC-SR04 pinout එක

4. Arduino UNO එකට Wire කිරීම

Wiring එක හරිම simple — wires 4යි. Trig සහ Echo ඕනෑම digital pins දෙකකට connect කරන්න පුළුවන් — අපි D9 සහ D10 use කරමු:

Arduino සමඟ HC-SR04 Ultrasonic Sensor එක භාවිතා කරන හැටි
රූපය 3: Arduino UNO ↔ HC-SR04 wiring diagram එක

5. Arduino Code Example එක

මේ sketch එක හැම තත්පර භාගයකටම වරක් දුර measure කරලා Serial Monitor එකේ cm වලින් පෙන්නනවා:

const int trigPin = 9;
const int echoPin = 10;
float duration; // echo time එක (µs)
float distance; // දුර (cm)
void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}
void loop() {
  // Trig pin එක clean කරලා 10µs pulse එක දෙනවා
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Echo pulse එකේ දිග (µs) කියවනවා
  duration = pulseIn(echoPin, HIGH);
  // දුර calculate කරනවා
  distance = (duration * 0.034) / 2;
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(500);
}

5.1 Code එක තේරුම් ගනිමු

digitalWrite(trigPin, LOW) + delayMicroseconds(2) — Pulse එක දෙන්න කලින් Trig pin එක ටිකකට LOW කරනවා, clean edge එකක් ලැබෙන්න.
delayMicroseconds(10) — Trig pin එක හරියටම 10µs HIGH තියනවා — sensor එකට ඕන trigger pulse එක ඒකයි.
pulseIn(echoPin, HIGH) — Echo pin එක HIGH වෙනකම් බලාගෙන ඉඳලා, HIGH වෙලා තියෙන කාලය microseconds වලින් return කරනවා. මේක තමයි sketch එකේ වැදගත්ම line එක.
distance = (duration * 0.034) / 2 — කලින් ඉගෙන ගත්ත formula එකම code එකේ.

5.2 Serial Monitor Output එක

Distance: 27.54 cm
Distance: 27.61 cm
Distance: 12.94 cm
Distance: 8.50 cm
Distance: 152.32 cm

5.3 Bonus — LCD එකේ Distance එක පෙන්නමු

කලින් LCD tutorial එකේ wiring එකම තියාගෙන, HC-SR04 එකත් එකතු කරලා distance meter එකක් හදන්න පුළුවන්:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int trigPin = 9;
const int echoPin = 10;
void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  lcd.begin(16, 2);
  lcd.print("Distance Meter");
}
void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  float d = (pulseIn(echoPin, HIGH) * 0.034) / 2;
  lcd.setCursor(0, 1);
  lcd.print(d);
  lcd.print(" cm      "); // පරණ අගය මකන්න spaces
  delay(300);
}

6. NewPing Library එක (Optional)

Timing වැඩ ඔක්කොම තනියම කරනවා වෙනුවට NewPing library එක use කරන්නත් පුළුවන් (Library Manager එකෙන් install කරන්න). Code එක ගොඩක් කෙටි වෙනවා:

#include <NewPing.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400 // cm
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
  Serial.begin(9600);
}
void loop() {
  delay(100);
  Serial.print(sonar.ping_cm()); // දුර cm වලින්
  Serial.println(" cm");
}

NewPing එකේ ping_median(5) වගේ functions වලින් readings 5ක median එක අරගෙන noise අඩු කරගන්නත් පුළුවන් — accuracy වැඩි වෙනවා.

7. Limitations සහ Tips

  • Soft surfaces — රෙදි, sponge, cotton වගේ මෘදු දේවල් sound absorb කරන නිසා echo එක දුර්වලයි — detect වෙන්නේ අමාරුවෙන්.
  • Angled surfaces — Object එකේ මතුපිට sensor එකට කෝණයකින් තියෙනවා නම් echo එක වෙන පැත්තකට reflect වෙලා sensor එකට ආපහු එන්නේ නැති වෙන්න පුළුවන්.
  • පොඩි objects — හරිම පොඩි දේවල් reflect කරන sound energy එක මදි නිසා miss වෙන්න පුළුවන්.
  • මීටර් 4 limit එක — 400cm ට වඩා දුර readings unreliable. ඒ වගේම 2cm ට කිට්ටු දේවලුත් measure වෙන්නේ නැහැ.
  • උෂ්ණත්වයේ බලපෑම — Sound speed එක temperature එක අනුව ටිකක් වෙනස් වෙනවා (0.034 cm/µs කියන්නේ 20°C විතරදී). හරිම precise measurements වලට temperature compensation කරන්න වෙනවා — normal projects වලට ප්‍රශ්නයක් නැහැ.
  • Readings jump වෙනවා නම් — Median filter එකක් (NewPing ping_median) use කරන්න, measurements අතර 50ms+ ඉඩ තියන්න, සහ sensor එක object එකට කෙළින්ම face වෙන්න mount කරන්න.

8. Project Ideas

  • Obstacle-Avoiding Robot — බාධක අඳුනගෙන මගහරින robot එකක්.
  • Parking Sensor — දුර අඩු වෙනකොට වේගයෙන් beep වෙන buzzer එකක් එක්ක.
  • Water Level Monitor — Tank එක උඩින් sensor එක දාලා water level එක බලන්න.
  • Full Combo Project — මේ series එකේ ඔක්කොම එකට: PIR එකෙන් motion detect කරලා, HC-SR04 එකෙන් දුර measure කරලා, LCD එකේ පෙන්නලා, microSD card එකට log කරන security system එකක්!

9. සාරාංශය (Summary)

HC-SR04 එක distance measurement වලට තියෙන ලාබම සහ ලේසිම විසඳුමයි. මතක තියාගන්න ඕන ප්‍රධාන කරුණු: Trig pin එකට 10µs pulse එකක් දුන්නාම sensor එක 40kHz burst එකක් යවනවා, Echo pin එක HIGH තියෙන කාලය sound travel time එක, දුර = (time × 0.034) / 2, range එක 2cm–400cm, සහ soft/angled surfaces වලදී පරිස්සම්. දැන් ඔයාට robot එකක් හදන්න පුළුවන්!

Reference / මූලාශ්‍රය:

මේ tutorial එක ලියුවේ පහත මූලාශ්‍රයේ තොරතුරු පදනම් කරගෙන (රූප සටහන් සහ code examples අලුතින්ම හදපු ඒවා): Last Minute Engineers — How HC-SR04 Ultrasonic Sensor Works & Interface It With Arduino