[POP-XT] Picking Robot EP.03 Line Tracker with 4 Sensor

ตอนที่ 3 การเคลื่อนที่ตามเส้นโดยใช้เซนเซอร์ 4 ตัว

เมื่อใช้งานตัวตรวจจับตรวจจับการสะท้อน ZX-03 สิ่งแรกที่ต้องทำคือการหาค่ากลางระหว่างสีขาวและสีดำ  เพื่อนำเป็นค่าอ้างอิงแยกแยะ ให้รู้ว่าอันไหนเส้น หรืออันไหนพื้นสนาม

 เขียนโปรแกรมอ่านค่าตัวตรวจจับการสะท้อน

 เขียนโปรแกรมอ่านค่าเซนเซอร์ทั้ง 4 ตัว เอาค่ามาแสดงที่หน้าจอ GLCD กันก่อน

 หน้าจอของ POP-XT จะแสดงผลลัพธ์การอ่านค่าจากเซนเซอร์ออกมา 

 

ซึ่งจะตรงกับตำแหน่งของเซนเซอร์ที่ติดตั้งอยู่ด้านใต้หุ่นยนต์ดังรูป

 

อ่านค่าจากพื้นสนามสีขาว

ให้นำหุ่นยนต์ไปวางบริเวณพื้นผิวสีขาว  โยกหุ่นยนต์ไปมาจนได้ค่าต่ำสุดที่เกิดขึ้นได้จากพื้นผิวสีขาว ของเซนเซอร์แต่ละตัวออกมา บันทึกค่าเอาไว้ครับ โดยปกติพื้นผิวสีขาวค่าสะท้อนแสงได้ดี จะอ่านค่าได้มาก ประมาณ 600-1000 โดยประมาณ 

อ่านค่าจากเส้นสีดำ

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

การหาค่ากลาง

ก็คือการนำเอาค่าทั้งสีขาวและสีดำมาหาค่าเฉลี่ยครับ โดยถ้าเป็นตามตัวอย่าง ผมจะเลือกค่า 600 และ 100 ดังนั้น ค่ากลางก็มีค่าเท่ากับ (600+100) / 2 ค่าเฉลี่ยเท่ากับ 350  ซึ่งค่านี้จะนำไปใช้เป็นค่าอ้างอิงต่อไป เพื่อให้การปรับแต่งทำได้ง่าย เราจะเอาค่านี้เก็บไว้เป็นตัวแปรชื่อ Ref 

int Ref=350;

หลักการเคลื่อนที่ตามเส้น

 ปกติการเคลื่อนที่ตามเส้นโดยใช้เซนเซอร์สองตัว เกิดขึ้นได้ 4 เงื่อนไข 3 เงื่อนไขพื้นฐาน จะเป็นดังรูป

 

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

เคลื่อนที่ตามเส้นอย่างง่าย

 สำหรับโค้ดของ เซนเซอร์ 2 ตัวนำมาเขียนเป็นฟังก์ชั่นชื่อ track ได้ตามนี้

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

 เคลื่อนที่ตามเส้นแบบมี 3 แยกด้านหน้า

 แต่ถ้าเป็นทางแยกที่มีลักษณะดัง 3 แยก จำเป็นต้องมีเซนเซอร์เพิ่มเติมเพื่อแยกแยะเงื่อนไขที่เพิ่มขึ้น 

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

 

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

ปล. อย่าลืมทบทวนการทำงานของคำสั่ง while ให้ดีนะครับ เพราะเราจะใช้มันเยอะมาก ต่อจากนี้…

Facebook Comments