หน้าเว็บ

วันศุกร์ที่ 13 กันยายน พ.ศ. 2556

Picking Robot EP.04 Turn 90 degree

ตอนที่  4  ฟังก์ชั่นเลี้ยว  90  องศาเมื่อเจอทางแยก

สำหรับทางแยกที่เป็นลักษณะ 3 แยก การเลี้ยว 90 องศาก็ใช้หลักการเหมือนการเดินตรงข้ามทางแยก 

การเลี้ยวขวา 90 องศา


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





ถ้าดูการทำงานของฟังก์ชั่น เมื่อเทียบกับฟังก์ชั่น FFF() สำหรับการเดินหน้าก่อนหน้านี้จะเห็นว่ามีส่วนที่คล้ายคลึงกันมาก โดยส่วนหลัก ๆ คือการที่หุ่นยนต์เคลื่อนที่ตามเส้นไปเรื่อยๆ จะหลุดจากลูปของการเคลื่อนที่ตามเส้นก็ต่อเมื่อ เซนเซอร์ A3 เจอสีดำเท่านั้นและเมื่อหลุดจากลูปมาแล้ว ก็ทำงานตาม 4 ขั้นตอนที่บอกไป จนจบฟังก์ชั่น หุ่นยนต์ก็จะเลี้ยวขวา 90 องศาได้อย่างสมบูรณ์

การเลี้ยวซ้าย 90 องศา

การเลี้ยวซ้ายก็จะมีลักษณะเดียวกันกับการเลี้ยวขวา แต่เปลี่ยนการตรวจจับเซนเซอร์เป็นคนละรูปแบบดังนี้




















นำมาเขียนเป็นฟังก์ชั่นสำหรับเดินตามเส้นเจอแยกแล้วเลี้ยวซ้ายได้ดังนี้







ตัวอย่างให้หุ่นยนต์เคลื่อนที่ตามเส้นทางที่กำหนด 

สามารถเรียกฟังก์ชั่นเลี้ยวซ้าย เลี้ยวขวา เดินตรงของหุ่นยนต์มาใช้ได้ ยกตัวอย่างสนามง่ายๆ ดังรูป










































การเรียกใช้งานฟังก์ชั่นทั้งหมด กำหนดไว้ที่ void setup() เนื่องจาก ไม่ต้องการให้โปรแกรมทำงานอย่างต่อเนื่อง หลังจากที่ทำขั้นตอนการเดินต่าง ๆ เสร็จแล้วก็ปิดท้ายด้วยคำสั่ง ao() เพื่อหยุดการทำงานของมอเตอร์นั่นเอง




1 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

ติดตามผลงาน(การนับแยก + การแยกค่าสี) อยู่นะครับ