กลับไปหน้ารวมไฟล์
using-the-ultrasonic-distance-sensor-the-easy-way-4933ce.md

บทนำ

ในโปรเจกต์ของพี่หลายๆ งาน พี่ใช้ Ultrasonic Distance [Sensor](https://s.shopee.co.th/7VBG2rX65j) นี่แหละ มันเป็นเครื่องมือที่โคตรมีประโยชน์และจำเป็นมาก แต่การเขียนโค้ดสำหรับมันเนี่ย... มันซ้ำซาก, น่าเบื่อ, ยาวเหยียด (ใส่คำด่าอะไรก็ได้ลงไป) นี่คือตัวอย่างวิธี "ปกติ" ที่เราใช้เซ็นเซอร์วัดระยะกัน

digitalWrite(trigPin, LOW);  
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
Serial.println(duration);

ดูไม่หล่อเลยใช่มั้ย? พี่รู้แหละ

แต่ถ้าใช้ไลบรารี่ของพี่ EZDist นี่ น้องจะย่อมันให้เหลือแค่บรรทัดเดียวได้เลย! ดูตัวอย่างเบื้องต้น:

 Serial.println(EZDist.raw());

แค่นั้นจบ จริงๆ นะ แค่บรรทัดเดียวแต่ดูเท่โคตรๆ

นี่แค่เป็น หนึ่ง ในหลายสิ่งมหัศจรรย์ที่ไลบรารี่นี้ทำได้

ติดตั้ง

1. เปิด [Arduino](https://s.shopee.co.th/7fUgFAWSki) IDE ขึ้นมา

2. ดาวน์โหลด GitHub repository นี้เป็นไฟล์ ZIP หรือโฟลเดอร์

กด "Download ZIP"

3. บนแถบด้านบน เลือก Sketch > Include > Library > Add.ZIP Library แล้วเลือกโฟลเดอร์ที่ดาวน์โหลดมา

เย้! ตอนนี้น้องมีไลบรารี่อยู่ในเครื่องแล้ว!

วิธีใช้

เหมือนไลบรารี่ทั่วไปเลย น้องต้อง include มันที่ต้นสเก็ตช์

#include <EZDist.h>

ทีนี้ น้องต้องสร้าง instance ของคลาสด้วยหมายเลขพิน ฟังดูเทพแต่ความจริงแค่หมายถึง "ใส่อันนี้ ก่อน setup()" ของน้อง:

EZDist EZDist(trigPin, echoPin);

สำหรับการพิมพ์ค่าระยะ เริ่มเปิด Serial Monitor ใน setup()

void setup() {
Serial.begin(9600);
}

ทีนี้ก็พิมพ์ข้อมูลได้เลย

void loop() {
Serial.println(EZDist.raw());
}

เจ๋ง! ตอนนี้เรามีค่าระยะบน Serial Monitor แล้ว แต่ว่าเราอยากได้ค่าเป็นนิ้วหรือเซนติเมตรใช่มั้ย? อาจจะนะ

void loop() {    
Serial.println("Inches: " + String(EZDist.inch()) + ", Centimeters: " + String(EZDist.cm()));
}

พูดง่ายๆ ก็คือ ใช้ EZDist.inch() เพื่อได้ค่าระยะเป็นนิ้ว และใช้ EZDist.cm() เพื่อได้ค่าระยะเป็นเซนติเมตร ถ้าอยากได้ค่า raw ก็ใช้ EZDist.raw()

โค้ดสุดท้ายจะหน้าตาแบบนี้:

#include <EZDist.h>
int trigPin = 12;
int echoPin = 11;
EZDist EZDist(trigPin, echoPin);
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(EZDist.cm()); // ถ้าอยากได้หน่วย CM
}

เห็นมั้ย โค้ดเรียบง่าย สวยงาม และมีประสิทธิภาพ

ตัวอย่าง

ตัวอย่างคือวิธีเรียนรู้ที่ดีที่สุด (สำหรับพี่นะ)

ถ้าอยากดูตัวอย่าง ให้ไปที่ File > Examples > EZDist แล้วเลือกตัวอย่างที่ต้องการ

ซอร์สโค้ดไลบรารี่

ดูซอร์สโค้ดของไลบรารี่และสิ่งเจ๋งๆ อื่นๆ ได้ที่ลิงก์นี้

รายงานปัญหาและเสนอแนะได้ที่ลิงก์นี้

อยากช่วยพัฒนาทำให้ไลบรารี่นี้เจ๋งขึ้นไปอีก? Fork repository บน GitHub แล้วเปิด pull request ได้ที่ลิงก์นี้

ข้อมูล Frontmatter ดั้งเดิม

title: "Using the Ultrasonic Distance Sensor the Easy Way!"
description: "Make usage of the HC-SR04 as easy as blinking an LED!"
author: "GadhaGod"
category: ""
tags:
  - "library"
  - "ultrasonic"
  - "distance"
views: 1760
likes: 1
price: 1499
difficulty: "Easy"
components:
  - "1x Ultrasonic Sensor - HC-SR04 (Generic)"
  - "1x Arduino UNO"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "447f4433b32cdd805a6df48800023349146a35fc9cb26e49c0275b5c7dd3defd"
encryptedPayload: "U2FsdGVkX19pSUCa5mMxwjUKU1ln8hh/kBPDLOBaoLs2vOc8HTusqvyRCAVcaY/25fwsMy70D1Pkq+Hma1ofU+wNytiLzOqfFfHIMnknG54="
seoDescription: "Learn how to use the HC-SR04 Ultrasonic Distance Sensor easily. Master distance measurement in minutes."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/using-the-ultrasonic-distance-sensor-the-easy-way-4933ce_cover.jpg"
lang: "th"