ตอนที่ 4 ฟังก์ชั่นเลี้ยว 90 องศาเมื่อเจอทางแยก
สำหรับทางแยกที่เป็นลักษณะ 3 แยก การเลี้ยว 90 องศาก็ใช้หลักการเหมือนการเดินตรงข้ามทางแยก
การเลี้ยวขวา 90 องศา
จากรูปมองเหตุการณ์เป็น 4 ขั้นตอนดังนี้
1. เมื่อหุ่นยนต์เดินตามเส้นไปเรื่อยๆ แล้วเซนเซอร์ A3 เจอทางแยก
2. ให้หุ่นยนต์เดินตรงไปข้างหน้าจนตัวหุ่นยนต์อยู่คร่อมจุดตัดทางแยกพอดี
3. หมุนตัวไปทางขวา โดยถ้าเซนเซอร์ A1 ยังเจอสีขาวอยู่ให้หมุนทางขวาไปเรื่อยๆ
4. เมื่อเซนเซอร์ A1 เจอสีดำก็ให้หมุนตัวทางขวาต่อไปอีกจนกว่า เซนเซอร์ A1 จะเจอสีขาวอีกครั้ง ซึ่งก็จะเป็นการไปคร่อมเส้นด้านขวาพอดี
จากรูปนำมาเขียนเป็นฟังก์ชั่นสำหรับการเลี้ยวขวา 90 องศาได้ดังนี้
ถ้าดูการทำงานของฟังก์ชั่น เมื่อเทียบกับฟังก์ชั่น FFF() สำหรับการเดินหน้าก่อนหน้านี้จะเห็นว่ามีส่วนที่คล้ายคลึงกันมาก โดยส่วนหลัก ๆ คือการที่หุ่นยนต์เคลื่อนที่ตามเส้นไปเรื่อยๆ จะหลุดจากลูปของการเคลื่อนที่ตามเส้นก็ต่อเมื่อ เซนเซอร์ A3 เจอสีดำเท่านั้นและเมื่อหลุดจากลูปมาแล้ว ก็ทำงานตาม 4 ขั้นตอนที่บอกไป จนจบฟังก์ชั่น หุ่นยนต์ก็จะเลี้ยวขวา 90 องศาได้อย่างสมบูรณ์
การเลี้ยวซ้าย 90 องศา
การเลี้ยวซ้ายก็จะมีลักษณะเดียวกันกับการเลี้ยวขวา แต่เปลี่ยนการตรวจจับเซนเซอร์เป็นคนละรูปแบบดังนี้
นำมาเขียนเป็นฟังก์ชั่นสำหรับเดินตามเส้นเจอแยกแล้วเลี้ยวซ้ายได้ดังนี้
ตัวอย่างให้หุ่นยนต์เคลื่อนที่ตามเส้นทางที่กำหนด
สามารถเรียกฟังก์ชั่นเลี้ยวซ้าย เลี้ยวขวา เดินตรงของหุ่นยนต์มาใช้ได้ ยกตัวอย่างสนามง่ายๆ ดังรูป
การเรียกใช้งานฟังก์ชั่นทั้งหมด กำหนดไว้ที่ void setup() เนื่องจาก ไม่ต้องการให้โปรแกรมทำงานอย่างต่อเนื่อง หลังจากที่ทำขั้นตอนการเดินต่าง ๆ เสร็จแล้วก็ปิดท้ายด้วยคำสั่ง ao() เพื่อหยุดการทำงานของมอเตอร์นั่นเอง
1 ความคิดเห็น:
ติดตามผลงาน(การนับแยก + การแยกค่าสี) อยู่นะครับ
แสดงความคิดเห็น