การเขียนโปรแกรมให้หุ่นยนต์เดินตามเส้นสามารถทำได้โดยใช้เซนเซอร์ตรวจจับแสงเพื่อวัดค่าสีของพื้นสนาม และเขียนโปรแกรมควบคุมการเคลื่อนที่ของหุ่นยนต์ตามเงื่อนไขที่กำหนดไว้ ต่อไปนี้เป็นขั้นตอนและตัวอย่างโค้ดสำหรับการเขียนโปรแกรมให้หุ่นยนต์เดินตามเส้น:
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 และช่อง 4reff
: เป็นค่ากลางระหว่างสีดำและสีขาว (ในที่นี้ใช้ 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. สรุป
- การเขียนโปรแกรมให้หุ่นยนต์เดินตามเส้นจำเป็นต้องใช้เซนเซอร์ตรวจจับแสงและเขียนเงื่อนไขการเคลื่อนที่ให้เหมาะสมกับสภาพสนาม
- สามารถปรับแต่งโค้ดและเพิ่มประสิทธิภาพได้โดยการเพิ่มจำนวนเซนเซอร์หรือปรับค่าต่างๆ ให้เหมาะสมกับภารกิจที่ต้องการ