#define echoPin1 2
#define trigPin1 17
#define echoPin2 25
#define trigPin2 26
#define echoPin3 18
#define trigPin3 19
#define LED_PIN1 13
#define LED_PIN2 4
#define LED_PIN3 16
void setup() {
Serial.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(LED_PIN1, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(LED_PIN3, OUTPUT);
}
void loop() {
// อ่านระยะทางจากเซ็นเซอร์แต่ละตัว
int distance1 = Ultrasonic(trigPin1, echoPin1);
int distance2 = Ultrasonic(trigPin2, echoPin2);
int distance3 = Ultrasonic(trigPin3, echoPin3);
// แสดงค่าระยะทางที่อ่านได้บน Serial Monitor
Serial.println("Sensor 1: " + String(distance1) + " cm");
Serial.println("Sensor 2: " + String(distance2) + " cm");
Serial.println("Sensor 3: " + String(distance3) + " cm");
// ตรวจสอบเงื่อนไขและควบคุม LED แต่ละดวง
if (distance1 < 10 && distance2 > 10 && distance3 > 10) {
digitalWrite(LED_PIN1, HIGH);
} else {
digitalWrite(LED_PIN1, LOW);
}
if (distance1 > 10 && distance2 < 10 && distance3 > 10) {
digitalWrite(LED_PIN2, HIGH);
} else {
digitalWrite(LED_PIN2, LOW);
}
if (distance1 > 10 && distance2 > 10 && distance3 < 10) {
digitalWrite(LED_PIN3, HIGH);
} else {
digitalWrite(LED_PIN3, LOW);
}
delay(1000); // หน่วงเวลา 1 วินาที
}
int Ultrasonic(int trigPin, int echoPin) {
long duration, Distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// คำนวณระยะทางเป็นเซนติเมตร
Distance = duration / 58.2;
// ถ้าไม่สามารถอ่านค่าได้ (timeout) ให้คืนค่าเป็น -1 เพื่อแสดงว่าไม่มีการตรวจจับ
if (duration == 0) {
return -1;
}
return Distance;
}