[POP-XT] ตัวอย่างโค้ดสำหรับชุดหุ่นยนต์ POP-BOT XT และชุดมือจับแบบหมุน

หุ่นยนต์  POP-BOT-XT  เมื่อติดตั้งเข้ากับ Gripper แบบจับแล้วหมุน จะมีรูปร่างหน้าตาดังรูปครับ

149621_428695107188099_103224597_n

POPBOT XT With Gripper

การติดตั้งเซนเซอร์สำหรับหุ่นยนต์ตัวนี้จะใช้สำหรับเคลื่อนที่ตามเส้น 2 ตัวและใช้ตัวจับกระป๋องหรือขวดน้ำอีก 1 ตัวดังรูป

68486_428696387187971_123546743_n

โดยการติดตั้งเซนเซอร์สำหรับตรวจจับกระป๋องต้องเจาะแขนจับให้ใส่เซนเซอร์เข้าไปด้วย ระหว่างเดินเข้าหากระป๋องจะได้ตรวจสอบกระป๋องเจอ และยังสามารถเขียนโปรแกรมให้แยกแยะสีของกระป๋อง (บางสี) ได้ด้วย ดังรูป

302618_428697763854500_1419213281_n

การเชื่อมต่อสายเซนเซอร์

  เซนเซอร์ด้านซ้ายเข้ากับช่อง A0 เซนเซอร์ด้านขวาเข้ากับช่อง A1 เซนเซอร์จับกระป๋องต่อเข้ากับช่อง A2 โดยเซนเซอร์ทั้งหมดใช้แผงวงจรตรวจจับการสะท้อนแสงอินฟราเรดรุ่น ZX-03 ทางด้านแขนจับจะต้องควบคุมด้วยเซอร์โวมอเตอร์ถึง 2 ตัว เพื่อจะหนีบกระป๋อง สามารถเขียนเป็นฟังก์ชันง่าย ๆ สำหรับหนีบและจับกระป๋องดังนี้

ฟังก์ชั่น servo_open()  จะใช้สำหรับเปิดแขนจับออก

void servo_open(){ 
  servo(2,80);
  sleep(400); 
  servo(1,140);
  sleep(400); 
  servo(1,-1);
  servo(2,-1); 
}

  ฟังก์ชั่น servo_close() จะใช้เพื่อหนีบแล้วหมุนกระป๋อง

void servo_close(){ 
  servo(1,0);
  sleep(1000); 
  servo(2,0);
  sleep(1000); 
  servo(1,-1);
  servo(2,-1); 
}

จากทั้งสองฟังก์ชันจะเห็นว่า เมื่อทำงานเสร็จแล้วจะใช้คำสั่ง servo(1,-1) หรือ servo(2,-1) เพื่อให้เซอร์โวหยุดทำงานและไม่กินกำลังไฟฟ้า เมื่อวางกระป๋องหรือหนีบกระป๋องเสร็จเรียบร้อยหุ่นยนต์จะต้องหมุนตัวกลับ 180 องศา สามารถสร้างเป็นฟังก์ชั่น R180() ดังนี้

void R180(){ 
  while(analog(1)>500){sr(50);}
  while(analog(1)<500){sr(50);}
}

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

60672_428706190520324_1600210512_n

การทำงานของโปรแกรม

โปรแกรมนี้จะใช้ตัวแปร i ในการนับทางแยกเมื่อเจอทางแยกแล้วตรวจพบว่าตัวแปร i มีค่าเป็น 1  จะเข้าสู่โหมดหนีบกระป๋อง โดยจะเดินตรงไปเรื่อยๆ จนเซนเซอร์ A2 เจอกระป๋อง จากนั้นหนีบแล้วถอยหลังหมุนตัวกลับ เดินตามเส้นต่อไป เมื่อเจอแยกอีกครั้ง i จะมีค่าเป็น 2 จะเป็นการวางกระป๋อง และหมุนตัวกลับ ณ ที่นี้จะสั่งให้ i เป็น 0 อีกครั้งเพื่อเริ่มต้นกระบวนการใหม่

60741_431456216911988_593171569_n

545857_431457413578535_1246540338_n

ผลลัพธ์ที่ได้ ก็จะเป็นตามไฟล์วีดิโอที่แนบมานี้นะครับ

Facebook Comments