การเขียนโปรแกรมให้หุ่นยนต์เดินตามเส้นสามารถทำได้โดยใช้เซนเซอร์ตรวจจับแสงเพื่อวัดค่าสีของพื้นสนาม และเขียนโปรแกรมควบคุมการเคลื่อนที่ของหุ่นยนต์ตามเงื่อนไขที่กำหนดไว้ ต่อไปนี้เป็นขั้นตอนและตัวอย่างโค้ดสำหรับการเขียนโปรแกรมให้หุ่นยนต์เดินตามเส้น:

1. การติดตั้งเซนเซอร์

  • ใช้เซนเซอร์ตรวจจับแสง 2 ตัวหรือ 4 ตัว วางไว้ด้านหน้าของหุ่นยนต์เพื่อตรวจจับเส้นสีดำบนพื้นสีขาว
  • เซนเซอร์จะอ่านค่าสีของพื้นสนามและส่งค่ากลับมาเป็นตัวเลข (0-1024) โดยค่าสีดำจะใกล้เคียงกับ 0 และค่าสีขาวจะใกล้เคียงกับ 1024

2. การเขียนโปรแกรม

  • ใช้เงื่อนไข if-else เพื่อตรวจสอบค่าที่อ่านได้จากเซนเซอร์ และควบคุมการเคลื่อนที่ของหุ่นยนต์ตามเส้น

ตัวอย่างโค้ดสำหรับหุ่นยนต์เดินตามเส้น:

int pa0, pa4; // ประกาศตัวแปรสำหรับเซนเซอร์
int reff = 512; // ค่ากลางระหว่างสีดำและสีขาว

void setup() {
// ไม่มีคำสั่งเริ่มต้นพิเศษ
}

void loop() {
// อ่านค่าจากเซนเซอร์
pa0 = analog(0); // อ่านค่าจากเซนเซอร์ช่อง 0
pa4 = analog(4); // อ่านค่าจากเซนเซอร์ช่อง 4

// เงื่อนไขการเคลื่อนที่
if (pa0 > reff && pa4 > reff) {
// ถ้าทั้งสองเซนเซอร์อ่านค่าได้มากกว่า reff (พื้นสีขาว) ให้เดินหน้า
fd(50); // เดินหน้าด้วยความเร็ว 50%
} else if (pa0 < reff && pa4 > reff) {
// ถ้าเซนเซอร์ซ้ายอ่านค่าได้น้อยกว่า reff (เจอเส้นสีดำ) ให้เลี้ยวซ้าย
sl(50); // เลี้ยวซ้ายด้วยความเร็ว 50%
} else if (pa0 > reff && pa4 < reff) {
// ถ้าเซนเซอร์ขวาอ่านค่าได้น้อยกว่า reff (เจอเส้นสีดำ) ให้เลี้ยวขวา
sr(50); // เลี้ยวขวาด้วยความเร็ว 50%
} else if (pa0 < reff && pa4 < reff) {
// ถ้าทั้งสองเซนเซอร์อ่านค่าได้น้อยกว่า reff (เจอเส้นสีดำทั้งคู่) ให้หยุด
ao(); // หยุดมอเตอร์ทั้งหมด
}
}

3. อธิบายโค้ด

  • pa0 และ pa4: เป็นตัวแปรที่เก็บค่าที่อ่านได้จากเซนเซอร์ช่อง 0 และช่อง 4
  • reff: เป็นค่ากลางระหว่างสีดำและสีขาว (ในที่นี้ใช้ 512) ซึ่งสามารถปรับได้ตามค่าที่อ่านได้จริงจากเซนเซอร์
  • fd(50): คำสั่งให้หุ่นยนต์เดินหน้าด้วยความเร็ว 50%
  • sl(50): คำสั่งให้หุ่นยนต์เลี้ยวซ้ายด้วยความเร็ว 50%
  • sr(50): คำสั่งให้หุ่นยนต์เลี้ยวขวาด้วยความเร็ว 50%
  • ao(): คำสั่งให้หุ่นยนต์หยุดมอเตอร์ทั้งหมด

4. การทดสอบและปรับแต่ง

  • หลังจากเขียนโปรแกรมแล้ว ให้ทดสอบหุ่นยนต์บนสนามที่มีเส้นสีดำ
  • หากหุ่นยนต์ไม่สามารถเดินตามเส้นได้อย่างแม่นยำ ให้ปรับค่าของ reff หรือปรับความเร็วในการเลี้ยว (sl และ sr) ให้เหมาะสมกับสภาพสนาม

5. เพิ่มประสิทธิภาพ

  • หากต้องการให้หุ่นยนต์เดินตามเส้นได้อย่างราบรื่นมากขึ้น สามารถเพิ่มเซนเซอร์เป็น 4 ตัว และเขียนเงื่อนไขที่ซับซ้อนมากขึ้นเพื่อให้หุ่นยนต์สามารถปรับทิศทางได้อย่างละเอียดยิ่งขึ้น

ตัวอย่างโค้ดสำหรับเซนเซอร์ 4 ตัว:

int pa0, pa1, pa3, pa4;  // ประกาศตัวแปรสำหรับเซนเซอร์
int reff = 512;  // ค่ากลางระหว่างสีดำและสีขาว

void setup() {
  // ไม่มีคำสั่งเริ่มต้นพิเศษ
}

void loop() {
  // อ่านค่าจากเซนเซอร์
  pa0 = analog(0);  // อ่านค่าจากเซนเซอร์ช่อง 0
  pa1 = analog(1);  // อ่านค่าจากเซนเซอร์ช่อง 1
  pa3 = analog(3);  // อ่านค่าจากเซนเซอร์ช่อง 3
  pa4 = analog(4);  // อ่านค่าจากเซนเซอร์ช่อง 4

  // เงื่อนไขการเคลื่อนที่
  if (pa0 > reff && pa1 > reff && pa3 > reff && pa4 > reff) {
    // ถ้าทั้งสี่เซนเซอร์อ่านค่าได้มากกว่า reff (พื้นสีขาว) ให้เดินหน้า
    fd(50);  // เดินหน้าด้วยความเร็ว 50%
  } else if (pa0 < reff || pa1 < reff) {
    // ถ้าเซนเซอร์ด้านซ้ายอ่านค่าได้น้อยกว่า reff (เจอเส้นสีดำ) ให้เลี้ยวซ้าย
    sl(50);  // เลี้ยวซ้ายด้วยความเร็ว 50%
  } else if (pa3 < reff || pa4 < reff) {
    // ถ้าเซนเซอร์ด้านขวาอ่านค่าได้น้อยกว่า reff (เจอเส้นสีดำ) ให้เลี้ยวขวา
    sr(50);  // เลี้ยวขวาด้วยความเร็ว 50%
  } else if (pa0 < reff && pa1 < reff && pa3 < reff && pa4 < reff) {
    // ถ้าทั้งสี่เซนเซอร์อ่านค่าได้น้อยกว่า reff (เจอเส้นสีดำทั้งคู่) ให้หยุด
    ao();  // หยุดมอเตอร์ทั้งหมด
  }
}


6. สรุป

  • การเขียนโปรแกรมให้หุ่นยนต์เดินตามเส้นจำเป็นต้องใช้เซนเซอร์ตรวจจับแสงและเขียนเงื่อนไขการเคลื่อนที่ให้เหมาะสมกับสภาพสนาม
  • สามารถปรับแต่งโค้ดและเพิ่มประสิทธิภาพได้โดยการเพิ่มจำนวนเซนเซอร์หรือปรับค่าต่างๆ ให้เหมาะสมกับภารกิจที่ต้องการ

By admin

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *