#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// กำหนดที่อยู่ของจอ LCD I2C (ส่วนใหญ่เป็น 0x27 หรือ 0x3F)
LiquidCrystal_I2C lcd(0x27, 20, 4);
// กำหนดขา Trig และ Echo
const int trigPin = 6;
const int echoPin = 5;
// กำหนดขา Servo
Servo myServo; // สร้างอ็อบเจ็กต์ Servo
const int servoPin = 9;
void setup() {
// เริ่มต้นจอ LCD และตั้งค่าให้พร้อมใช้งาน
lcd.init();
lcd.backlight(); // เปิดแสง backlight
// ตั้งค่า pin สำหรับ HC-SR04
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// เริ่มต้น servo และกำหนดตำแหน่งเริ่มต้นเป็น 0 องศา
myServo.attach(servoPin);
myServo.write(0); // เริ่มที่ 0 องศา
// แสดงข้อความเบื้องต้นบนจอ LCD
lcd.setCursor(0, 0);
lcd.print("Distance Sensor");
}
void loop() {
// ส่งสัญญาณ ultrasonic pulse
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// รับสัญญาณ echo
long duration = pulseIn(echoPin, HIGH);
// คำนวณระยะทาง (เซนติเมตร)
long distance = duration * 0.034 / 2;
// ล้างจอและแสดงผลระยะทาง
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");
// ควบคุม Servo ตามระยะทาง
if (distance < 50) {
myServo.write(180); // ถ้าน้อยกว่า 50 cm หมุนไปที่ 180 องศา
} else {
myServo.write(0); // ถ้ามากกว่า 50 cm หมุนไปที่ 0 องศา
}
delay(500); // หน่วงเวลา 500ms ก่อนคำนวณใหม่
}