การเข้ารหัสด้วย VEX IQ Smart Motors

VEX IQ Smart Motor มีฟังก์ชันมากมายให้ใช้เมื่อเขียนโค้ดใน VEXcode IQ สิ่งนี้มีประโยชน์เมื่อเขียนโค้ดแขน กรงเล็บ และไอดี รวมถึงระบบขับเคลื่อนและกลไกอื่นๆ ที่สร้างขึ้นโดยใช้ VEX IQ การทำความเข้าใจว่าสามารถเขียนโค้ดมอเตอร์ได้อย่างไรจะช่วยบรรเทาปัญหาต่างๆ เช่น โครงการหยุดทำงานหรือมอเตอร์ไม่ทำงานตามที่ตั้งใจไว้

ตัวเข้ารหัสมอเตอร์

VEX IQ Smart Motor ไม่เพียงแต่เปลี่ยนพลังงานไฟฟ้าเป็นพลังงานกล เช่นเดียวกับที่มอเตอร์ส่วนใหญ่ทำ แต่ยังมีคุณสมบัติที่มอเตอร์ส่วนใหญ่ไม่มี ซึ่งทำให้ "อัจฉริยะ" คุณสมบัติหลักประการหนึ่งคือตัวเข้ารหัสพื้นที่สี่เหลี่ยมจัตุรัส ตัวเข้ารหัสนี้ติดตั้งอยู่ที่ด้านในของมอเตอร์เพื่อติดตามความเร็วและ/หรือตำแหน่งของเพลามอเตอร์

รายงานจากตัวเข้ารหัสของ VEX IQ Smart Motor ช่วยให้ทราบ:

  • ทิศทางการหมุนของมอเตอร์ (เดินหน้า/ถอยหลัง หรือ เปิด/ปิด)
  • ตำแหน่งของมอเตอร์และจำนวนการหมุนและตำแหน่งของมอเตอร์ (ไม่ว่าจะเป็นรอบหรือองศา)
  • ความเร็วรอบของมอเตอร์ (ขึ้นอยู่กับตำแหน่งของตัวเข้ารหัสในช่วงเวลาหนึ่ง)

เนื่องจากตัวเข้ารหัสรายงานสถานะของมอเตอร์ จึงสามารถนำมาใช้ในการคำนวณเบื้องหลังเพื่อให้คำสั่งการเคลื่อนไหวและการตรวจจับจำนวนมากทำงานภายใน VEXcode IQ

การเข้ารหัสมอเตอร์ส่วนบุคคล

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

image7.png

ทำตามขั้นตอนในบทความนี้ เพื่อกำหนดค่ามอเตอร์แต่ละตัวของคุณใน VEXcode IQ

เมื่อกำหนดค่ามอเตอร์ตัวเดียว คำสั่งเพื่อควบคุมมอเตอร์นั้นจะปรากฏในกล่องเครื่องมือ คุณจะสังเกตเห็นว่ามีคำสั่งหลายประเภท: การรอและการไม่รอ

การรอกับคำสั่งที่ไม่รอ

โปรดทราบว่ารูปภาพทั้งหมดที่นี่แสดงบล็อก โปรเจ็กต์ทั้งหมดนี้สามารถสร้างใหม่ได้ใน Python หรือ C++ และมีฟังก์ชันการทำงานเหมือนกับบล็อก

image3.png

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

โปรเจ็กต์ที่แสดงที่นี่ใช้เทมเพลต Clawbot (2 มอเตอร์) และคำสั่งทั้งหมดกำลังรออยู่ ดังนั้นในอนุกรม มอเตอร์กรงเล็บจะปิด 90 องศา หุ่นยนต์จะขับถอยหลัง จากนั้นแขนจะหมุนขึ้นไปถึงตำแหน่ง 180 องศา

image6.png

ในทางตรงกันข้ามมีคำสั่งที่ไม่รอ คำสั่งที่ไม่รอจะดำเนินการพฤติกรรมดังกล่าวโดยไม่มีกำหนดหรือจนกว่าจะบอกให้เปลี่ยนเป็นพฤติกรรมอื่น ซึ่งรวมถึงคำสั่งต่างๆ เช่น [หมุน]

โปรเจ็กต์ที่แสดงไว้ที่นี่ใช้ BaseBot พร้อมช่องรับเข้าที่เพิ่มเข้ามา ตรงนี้มอเตอร์ไอดีจะเริ่มหมุน คำสั่ง [Wait] เป็นคำสั่งรอ ดังนั้นการนำเข้าจะยังคงหมุนต่อไปจนกระทั่งครบ 2 วินาที จากนั้นจึงย้ายไปยังคำสั่งถัดไปในโปรเจ็กต์ซึ่งเป็นคำสั่ง [Stop] แล้วมอเตอร์ก็หยุดหมุน

มอเตอร์หมดเวลา

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

image2.png

ในตัวอย่างนี้ หมดเวลามอเตอร์ตั้งไว้ที่ 2 วินาที หากกรงเล็บไม่ปิด 90 องศา ภายใน 2 วินาที มอเตอร์จะหยุดหมุนที่เครื่องหมาย 2 วินาที จากนั้นจึงเคลื่อนไปยังคำสั่งถัดไปแล้วขับไปข้างหน้า

image4.png

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

ดูบทความเหล่านี้เพื่อเรียนรู้วิธีใช้แดชบอร์ดเซ็นเซอร์

การเข้ารหัสมอเตอร์อัจฉริยะเป็นส่วนหนึ่งของระบบขับเคลื่อน

ก่อนที่จะเริ่มเขียนโค้ดระบบขับเคลื่อนใน VEXcode IQ คุณต้องกำหนดค่าระบบขับเคลื่อนรวมถึงมอเตอร์ที่ใช้ด้วย มอเตอร์ได้รับการกำหนดค่าภายในระบบขับเคลื่อนเพื่อให้แน่ใจว่าได้รับการควบคุมด้วยคำสั่งเดียวกัน เช่น [Drive] และ [Drive for]

คำสั่งรอและไม่รอ

เมื่อเขียนโค้ดระบบขับเคลื่อน คำสั่งรอและไม่รอจะพร้อมใช้งานเพื่อควบคุมการเคลื่อนไหวของหุ่นยนต์

image1.png

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

โปรเจ็กต์ที่แสดงที่นี่ใช้เทมเพลต Clawbot (2 มอเตอร์) และคำสั่งทั้งหมดกำลังรออยู่ ตามลำดับ หุ่นยนต์จะขับไปข้างหน้าเป็นระยะทาง 200 มิลลิเมตร แล้วเลี้ยวขวาทั้งหมดโดยใช้ระบบขับเคลื่อน

image8.png

ในทางตรงกันข้ามมีคำสั่งที่ไม่รอ คำสั่งที่ไม่รอจะดำเนินการพฤติกรรมดังกล่าวโดยไม่มีกำหนดหรือจนกว่าจะบอกให้เปลี่ยนเป็นพฤติกรรมอื่น ซึ่งรวมถึงคำสั่งต่างๆ เช่น [Drive]

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

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: