ตอนที่ 6 ฟังก์ชั่นตรวจสอบสีของกระป๋อง
การติดตั้งเซนเซอร์เช็คสีกระป๋อง
นอกจาก 4 ตัวที่ใช้เคลื่อนที่ตามเส้นแล้ว ยังมีตัวที่ 5 สำหรับเช็คกระป๋องอีกด้วย โดยติดตั้งเซนเซอร์ ZX-03 ไว้ที่ช่อง 22/A4 การอ่านค่าใช้คำสั่ง analog(4)ทดสอบอ่านค่าสีของกระป๋อง แสดงผล GLCD
ก่อนอื่นต้องทดสอบอ่านค่ากระป๋องกันก่อนว่า ถ้าเอากระป๋องสีดำหรือสีขาวมาวางแล้ว ให้ผลที่แตกต่างกันอย่างไร โดยเขียนโปรแกรมตามนี้การทดสอบอ่านสีกระป๋อง
ทดลองนำกระป๋องสีขาวมาเสียบเข้าที่ด้านหน้าของ Gripper ทดลองเลื่อนไปเลื่อนมาแล้วดูค่าน้อยที่สุดที่เป็นไปได้ที่จะเกิดขึ้นกับกระป๋องสีขาว บันทึกค่าเอาไว้ จากการทดลองอ่านค่าได้ 160
ทดลองนำกระป๋องสีดำมาเสียบเข้าที่ Gripper บ้าง แล้วอ่านค่ามากที่สุดที่เกิดขึ้นได้กับกระป๋องสีดำ จากการทดลองอ่านค่าได้ 40
นำทั้งสองค่ามาบวกกันหารสอง ก็ได้เป็นค่ากลางสำหรับแยกแยกกระป๋องสีขาวและกระป๋องสีดำ ดังนั้นค่ากลางที่เกิดขึ้นนี้คือ (160+40 ) /2 = 100
ลำดับเหตุการณ์กันก่อน
ก่อนจะเขียนฟังก์ชั่นอ่านค่าสี ลองมาลำดับเหตุการณ์การทำงานของหุ่นยนต์กันก่อน
1. หุ่นยนต์เดินออกจากจุดเริ่มต้น
2. หุ่นยนต์เดินตามเส้น เจอเส้นตัด 3 แยกหรือ 4 แยก ให้เลี้ยวซ้ายหรือขวา หรือตรงไป (ฟังก์ชั่น LLL() RRR() FFF()
3. หุ่นยนต์เจอเส้นตัดทางแยก ตำแหน่งยกกระป๋อง (ฟังก์ชั่น PICK() )
4. หุ่นยนต์เดินตามเส้น เจอเส้นตัด 3 แยกหรือ 4 แยก ให้เลี้ยวซ้ายหรือขวา หรือตรงไป (ฟังก์ชั่น LLL() RRR() FFF()
5. หุ่นยนต์เจอเส้นตัดทางแยก ตำแหน่งวางกระป๋อง (ฟังก์ชั่น PUSH() )
ฟังก์ชั่นอ่านค่าสีจากกระป๋อง
จากลำดับเหตุการณ์ ส่วนที่จะแทรกเพิ่มเข้าไปสำหรับเช็คกระป๋องก็คือหัวข้อที่ 3 หลังจากยกกระป๋องเรียบร้อยแล้ว โดยอ้างอิงจากฟังก์ชั่น PICK() เดิมคือ
ตำแหน่งที่จะวางฟังก์ชั่นเช็คกระป๋อง จะต้องอยู่ก่อนกรอบเส้นประ "ถอยหลังหมุนตัวจนเจอเส้นตัด" ดังนั้นฟังก์ชั่น PICK() จะกลายเป็น
สำหรับฟังก์ชั่น BLACK() และฟังก์ชั่น WHITE() ก็คือรูปแบบการทำงานตามข้อที่ 4 นั่นเอง โดยจะเดินไปเส้นทางไหน ก็วาดแผนที่เอาได้เลยครับ
ตัวอย่างฟังก์ชั่น WHITE()
ตัวอย่างฟังก์ชั่น BLACK()
สังเกตุว่า ชุดคำสั่งถอยหลังหมุนตัวจนเจอเส้นตัดจากเดิมที่อยู่ในฟังก์ชั่น PICK() ถูกย้ายมาไว้ที่ฟังก์ชั่น WHITE() กับ BLACK() เรียบร้อยแล้วครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น