Page 87 - การพัฒนาการหนังสืออิเล็กทรอนิกส์เรื่องภาษาซี
P. 87
82 83
ฟังก์ชั่น servo_close() จะใช้เพื่อหนีบแล้วหมุนกระป๋อง โดยฟังก์ชัน R180() จะให้หุ่นยนต์หมุนตัวไปทางขวาเรื่อย ๆ ถ้ายังไม่เจอเส้นสีดำา เมื่อเจอ
เส้นสีดำาแล้วก็หมุนตัวต่อจนหลุดจากเส้นสีดำานั่นเอง เมื่อรวมรายละเอียดทั้งหมดก็หลายเป็น
void servo_close(){ โปรแกรมดังนี้ครับ
servo(1,0);
sleep(1000);
servo(2,0);
sleep(1000);
servo(1,-1);
servo(2,-1);
}
จากทั้งสองฟังก์ชันจะเห็นว่า เมื่อทำางานเสร็จแล้วจะใช้คำาสั่ง servo(1,-1) หรือ ser-
vo(2,-1) เพื่อให้เซอร์โวหยุดทำางานและไม่กินกำาลังไฟฟ้า เมื่อวางกระป๋องหรือหนีบกระป๋อง
เสร็จเรียบร้อยหุ่นยนต์จะต้องหมุนตัวกลับ 180 องศา สามารถสร้างเป็นฟังก์ชั่น R180()
ดังนี้ การทำางานของโปรแกรม
void R180(){ โปรแกรมนี้จะใช้ตัวแปร i ในการนับทางแยกเมื่อเจอทางแยกแล้วตรวจพบว่าตัวแปร i มีค่า
while(analog(1)>500){sr(50);} เป็น 1 จะเข้าสู่โหมดหนีบกระป๋อง โดยจะเดินตรงไปเรื่อยๆ จนเซนเซอร์ A2 เจอกระป๋อง จาก
while(analog(1)<500){sr(50);} นั้นหนีบแล้วถอยหลังหมุนตัวกลับ เดินตามเส้นต่อไป เมื่อเจอแยกอีกครั้ง i จะมีค่าเป็น 2 จะ
} เป็นการวางกระป๋อง และหมุนตัวกลับ ณ ที่นี้จะสั่งให้ i เป็น 0 อีกครั้งเพื่อเริ่มต้นกระบวนการ
ใหม่