const int pingPinLeft = 13; //ประกาศตัวแปรคงที่ชนิดอินทิเจอร์ ชื่อ pingPinLeft ขา 13
int inPinLeft = 12; //ประกาศตัวแปรชนิดอินทิเจอร์ ชื่อ inPinLeft ขา 12
const int pingPinRight = 11; //ประกาศตัวแปรคงที่ชนิดอินทิเจอร์ ชื่อ pingPinRight ขา 11
int inPinRight = 10; //ประกาศตัวแปรชนิดอินทิเจอร์ ชื่อ inPinLeft ขา 10
const int Left = 3; //ประกาศตัวแปรคงที่ชนิดอินทิเจอร์ ชื่อ Left ขา 3
const int Right = 2; //ประกาศตัวแปรคงที่ชนิดอินทิเจอร์ ชื่อ Right ขา 2
void setup() {
Serial.begin(9600); //เปิดใช้พอร์ต Serial0 บิตเรท 9600
pinMode(inPinLeft, INPUT); //กำหนดขา inPinLeft เป็นอินพุต
pinMode(pingPinLeft, OUTPUT); //กำหนดขา pingPinLeft เป็นเอาต์พุต
pinMode(inPinRight, INPUT); //กำหนดขา inPinLeft เป็นอินพุต
pinMode(pingPinRight, OUTPUT); //กำหนดขา pingPinRight เป็นเอาต์พุต
pinMode(Left, OUTPUT); //กำหนดขา Left เป็นเอาต์พุต
pinMode(Right, OUTPUT); //กำหนดขา Right เป็นเอาต์พุต
}
void loop() {
long durationLeft, cmLeft; //ประกาศตัวแปรชนิด long ชื่อ durationLeft และ cmLeft
digitalWrite(pingPinLeft, LOW); //ให้ pingPinLeft เป็น LOW
delayMicroseconds(2); //หน่วงเวลา 2 ไมโครวินาที
digitalWrite(pingPinLeft, HIGH); //ให้ pingPinLeft เป็น HIGH
delayMicroseconds(5); //หน่วงเวลา 5 ไมโครวินาที
digitalWrite(pingPinLeft, LOW); //ให้ pingPinLeft เป็น LOW
durationLeft = pulseIn(inPinLeft, HIGH);//ใช้ฟังก์ชั่นวัดความกว้างของพัลส์ที่ชื่อ inPinLeft แล้วเก็บไว้ในตัวแปร durationLeft
cmLeft = microsecondsToCentimeters(durationLeft);//ใช้ฟังก์ชันแปลงหน่วยเวลาในตัวแปร durationLeft เป็นเซ็นติเมตรแล้วเก็บไว้ในตัวแปร cmLeft
long durationRight, cmRight; //ประกาศตัวแปรชนิด long ชื่อ durationRight และ cmRight
digitalWrite(pingPinRight, LOW); //ให้ pingPinRight เป็น LOW
delayMicroseconds(2); //หน่วงเวลา 2 ไมโครวินาที
digitalWrite(pingPinRight, HIGH);//ให้ pingPinRight เป็น HIGH
delayMicroseconds(5); //หน่วงเวลา 5 ไมโครวินาที
digitalWrite(pingPinRight, LOW); //ให้ pingPinRight เป็น LOW
durationRight = pulseIn(inPinRight, HIGH);//ใช้ฟังก์ชั่นวัดความกว้างของพัลส์ที่ชื่อ inPinRight แล้วเก็บไว้ในตัวแปร durationRight
cmRight = microsecondsToCentimeters(durationRight);//ใช้ฟังก์ชันแปลงหน่วยเวลาในตัวแปร durationRight เป็นเซ็นติเมตรแล้วเก็บไว้ในตัวแปร cmRight
Serial.print(cmLeft); //สั่งพิมพ์ค่าที่อยู่ในตัวแปร cmLeft ออกทาง Serial พอร์ต
Serial.print("cm"); //สั่งพิมพ์ตัวอักษร cm ออกทาง Serial พอร์ต แบบอยู่ในบรรทัดเดียวกัน
Serial.print(" "); //สั่งพิมพ์ช่องว่าง(ไม่มีตัวอักษร) ออกทาง Serial พอร์ต แบบอยู่ในบรรทัดเดียวกัน
Serial.print(cmRight); //สั่งพิมพ์ค่าที่อยู่ในตัวแปร cmRight ออกทาง Serial พอร์ต
Serial.print("cm"); //สั่งพิมพ์ตัวอักษร cm ออกทาง Serial พอร์ต แบบอยู่ในบรรทัดเดียวกัน
Serial.println(); //ขึ้นบรรทัดใหม่
delay(100); //หน่วงเวลา 100 มิลลิวินาทีหรือ 0.1 นาที
if (cmLeft <= 150) { //ตรวจสอบเงื่อนไขถ้า cmLeft น้อยกว่าหรือเท่ากับ 150 ให้ทำคำสั่งใน { ของ if
digitalWrite(Right, LOW); //ให้ Right เป็น LOW
} else { //ถ้าเงื่อนไขใน if ไม่เป็นจริงให้ทำคำสั่งต่อจาก {
digitalWrite(Right, HIGH); //ให้ Right เป็น HIGH
}
if(cmRight <= 150) { //ตรวจสอบเงื่อนไขถ้า cmRight น้อยกว่าหรือเท่ากับ 150 ให้ทำคำสั่งใน { ของ if
digitalWrite(Left, LOW); //ให้ Left เป็น LOW
} else {
digitalWrite(Left, HIGH); //ให้ Left เป็น HIGH
}
}
long microsecondsToCentimeters(long microseconds) {// ฟังก์ชันแปลงหน่วยเวลาเป็นเซ็นติเมตรโดย29ไมโครวินาที/1cm แล้วนำมาหาร2(เวลาทะท้อนไปกลับ)ก็จะได้ระยะทาง
// The speed of sound is 340 m/s or 29 microseconds per centimeter.
// The ping travels out and back, so to find the distance of the
// object we take half of the distance travelled.
return microseconds / 29 / 2;
}