#include <Wire.h> //เรียกใช้ไลบารี่
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
Servo servo;
const int trigPin = 9;
const int echoPin = 10;
const int redLed = 13;
const int greenLed = 12;
//กำหนดจอ LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 คือที่อยู่ I2C ของจอ LCD
void setup() {
//เรียกใช้ I2C และจอ LCD
Wire.begin();
lcd.init();
lcd.backlight();
servo.attach(3); // เชื่อม Servo กับขา 3
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
Serial.begin(9600);
}
void loop() {
long duration, distance;
// ส่งสัญญาณ Ultrasonic Sensor เพื่อวัดระยะ
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// คำนวณระยะ
distance = duration / 29 / 2;
if (distance <= 200) {
// มีวัตถุอยู่ภายในระยะ 200 ซม.
servo.write(90); // เลี้ยว Servo ไปที่ 90 องศา
digitalWrite(greenLed, HIGH); // ติดไฟสีเขียว
digitalWrite(redLed, LOW); // ติดไฟสีเขียว
//delay(3000); // รอ 3 วินาที
} else {
// ไม่มีวัตถุในระยะ 200 ซม.
servo.write(0); // ยก Servo กลับไปที่ 0 องศา
digitalWrite(redLed, HIGH); // ติดไฟสีแดง
digitalWrite(greenLed, LOW); // ปิดไฟสีเขียว
}
//แสดงค่าระยะบนจอ LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance : ");
lcd.print(distance);
lcd.print("cm");
}