สร้างเครื่องวัดระยะทางด้วยเซ็นเซอร์ HC-SR04 และแสดงผลบนจอ LCD พร้อมเสียงแจ้งเตือน
บทนำเกี่ยวกับเซ็นเซอร์ HC-SR04
เราจะสร้างโปรเจกต์ที่ใช้ เซ็นเซอร์ HC-SR04 แสดงผลระยะทางบนจอ LCD I2C และใช้ Buzzer เพื่อแจ้งเตือนเมื่อพบวัตถุอยู่ในระยะใกล้ คุณจะได้เรียนรู้วิธีเชื่อมต่อฮาร์ดแวร์ เขียนโปรแกรมด้วยภาษา C และการใช้งานไลบรารีใน Arduino IDE
แผนผังการต่อวงจร
ต่อวงจรตามรายละเอียดดังนี้:- ขา Trig ของ HC-SR04 ต่อกับขา 9 บน esp32
- ขา Echo ของ HC-SR04 ต่อกับขา 10 บน esp32
- ขา Buzzer ต่อกับขา 8 บน esp32
- ขา SDA และ SCL ของจอ LCD ต่อกับขา 21 และ 22 บน esp32

โค้ดโปรแกรมสำหรับเซ็นเซอร์ HC-SR04
ไลบรารี LiquidCrystal_I2C ใช้งานร่วมกับ จอ LCD I2Cดาวน์โหลด ไลบรารี่ที่นี้ด้านล่างคือโค้ดตัวอย่างสำหรับโปรเจกต์นี้:
/*
Link : www.devadiy.com
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// กำหนดขาเซ็นเซอร์ HC-SR04
const int trigPin = 18;
const int echoPin = 19;
// กำหนดขา Buzzer
const int buzzerPin = 5;
// สร้างออบเจ็กต์สำหรับ LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
// ตั้งค่าขา
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// เริ่มต้น LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Ultrasonic Dist");
// เริ่มต้น Serial Monitor (ถ้าต้องการดูค่าทาง Serial)
Serial.begin(115200);
}
void loop() {
// วัดระยะทาง
long duration;
float distance;
// ส่งสัญญาณ Trig
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
// รับสัญญาณ Echo
duration = pulseIn(echoPin, HIGH);
// คำนวณระยะทาง (หน่วย: เซนติเมตร)
distance = (duration/2) / 29.1;
// แสดงผลบน LCD
lcd.setCursor(0, 1);
lcd.print("DT: ");
lcd.print(distance);
lcd.print(" cm "); // เพิ่มช่องว่างเพื่อเคลียร์ข้อความเก่า
// เงื่อนไขสำหรับ Buzzer
if (distance < 7) {
// วัตถุใกล้น้อยกว่า 7 cm -> กระพริบเร็วมาก
digitalWrite(buzzerPin, HIGH);
delay(50);
digitalWrite(buzzerPin, LOW);
delay(50);
} else if (distance < 15) {
// วัตถุใกล้น้อยกว่า 15 cm -> กระพริบเร็ว
digitalWrite(buzzerPin, HIGH);
delay(200);
digitalWrite(buzzerPin, LOW);
delay(200);
} else {
// ระยะมากกว่า 15 cm -> ปิด Buzzer
digitalWrite(buzzerPin, LOW);
delay(100);
}
}
ดาวน์โหลดโค้ดที่นี้
กรุณา เข้าสู่ระบบ เพื่อดาวน์โหลด
คำอธิบายโค้ด
ส่วนการตั้งค่า (setup)
ในฟังก์ชันsetup() มีการตั้งค่าขา Trig และ Echo ของเซ็นเซอร์ HC-SR04 รวมถึงขาของ Buzzer และเริ่มต้นการทำงานของจอ LCD ส่วนการทำงานหลัก (loop)
ในฟังก์ชันloop() มีการวัดระยะทางด้วยเซ็นเซอร์ HC-SR04 คำนวณค่าระยะทางและแสดงผลบนจอ LCD พร้อมทั้งควบคุมการทำงานของ Buzzer ตามระยะทางที่วัดได้ผลลัพธ์ที่ได้
- ระยะทางจะแสดงผลบนจอ LCD แบบเรียลไทม์
- เสียง Buzzer จะดังแจ้งเตือนเมื่อพบวัตถุในระยะใกล้ โดยความถี่ของเสียงจะแตกต่างกันตามระยะทาง
ข้อควรระวัง
- ตรวจสอบการเชื่อมต่อสายให้แน่ใจว่าถูกต้อง
- ทดสอบโค้ดด้วย Serial Monitor เพื่อดูค่าที่เซ็นเซอร์วัดได้
- หากจอ LCD ไม่แสดงผล อาจต้องตรวจสอบที่อยู่ I2C ของจอ LCD






