รหัสคอนโทรลเลอร์แบบกำหนดเองใน VEXcode V5

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

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

ตัวเลือกที่ 1: การกำหนดปุ่มในการกำหนดค่าอุปกรณ์

ตัวเลือกนี้เหมาะมากเมื่อคุณใช้บิลด์มาตรฐาน เช่น Speedbot หรือ Clawbot และต้องการเริ่มต้นและดำเนินการอย่างรวดเร็ว

ตัวเลือกนี้ช่วยให้คุณกำหนดมอเตอร์ ระบบขับเคลื่อน หรือกลุ่มมอเตอร์ให้กับปุ่มบนตัวควบคุมในการกำหนดค่าอุปกรณ์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการกำหนดปุ่มให้กับตัวควบคุมในการกำหนดค่าอุปกรณ์ ดูบทความนี้

แผนภาพแสดงบล็อก V5 สำหรับการเขียนโปรแกรม โดยแสดงบล็อกประเภทต่างๆ และการเชื่อมต่อในรูปแบบภาพเพื่อช่วยในการทำความเข้าใจบทช่วยสอนการเขียนโค้ดแบบบล็อก

สรุปตัวเลือกที่ 1: การกำหนดปุ่มในการกำหนดค่าอุปกรณ์

ข้อดี

ข้อจำกัด

สถานการณ์ตัวอย่าง

  • ตั้งค่าอย่างรวดเร็วโดยไม่จำเป็นต้องเขียนโค้ด
  • วิธีที่ง่ายที่สุด
  • ปรับได้อย่างง่ายดาย
  • สามารถกำหนดมอเตอร์แต่ละตัว ระบบขับเคลื่อนมาตรฐาน และกลุ่มมอเตอร์ให้กับปุ่มต่างๆ ได้
  • การกำหนดปุ่มจะจำกัดจำนวนปุ่มบนคอนโทรลเลอร์
  • ระบบขับเคลื่อนต้องไม่เกิน 4 มอเตอร์หรือปรับแต่งได้ (รองรับเฉพาะไดรฟ์มาตรฐานเท่านั้น ไม่ใช่ไดรฟ์ H, โฮโลโนมิก หรือระบบขับเคลื่อนแบบกำหนดเองอื่นๆ)
  • การจัดการบิลด์มาตรฐาน เช่น Speedbot, Clawbot หรือการแก้ไขบิลด์มาตรฐานเหล่านั้นอย่างง่ายๆ ตัวอย่างเช่น สปีดบอทที่มีท่อไอดีติดอยู่ที่ด้านหน้าซึ่งควบคุมโดยกลุ่มมอเตอร์
  • การควบคุมปุ่มที่สอดคล้องกับพฤติกรรมที่แตกต่างกันบนหุ่นยนต์อย่างรวดเร็วโดยไม่ต้องเขียนโค้ดมากนัก

ตัวเลือกที่ 2: การใช้ Forever Loop

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

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

ตัวอย่างเฉพาะที่แสดงด้านล่างเป็นวิธีหนึ่งที่คุณสามารถใช้ Forever loop กับหุ่นยนต์ที่ออกแบบเอง (เช่น หุ่นยนต์ที่มีระบบขับเคลื่อนแบบกำหนดเอง) เพื่อขับเคลื่อนหุ่นยนต์และควบคุมกรงเล็บและแขนเพื่อโต้ตอบกับวัตถุ

แผนภาพแสดงการสอนการใช้บล็อก V5 แสดงให้เห็นบล็อกประเภทต่างๆ และการเชื่อมต่อในรูปแบบที่ชัดเจนและเป็นระเบียบ เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับการเขียนโปรแกรมหุ่นยนต์ VEX

ดาวน์โหลดไฟล์โครงการ "ตัวเลือก 2" VEXcode V5 >

คำอธิบายรหัสตัวเลือก 2

โค้ดชิ้น

คำอธิบาย

แผนภาพแสดงส่วนประกอบของบล็อก V5 และฟังก์ชันต่างๆ ในรูปแบบบทช่วยสอน โดยแสดงประเภทบล็อกและการเชื่อมต่อต่างๆ เพื่อวัตถุประสงค์ทางการศึกษา

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

แผนภาพแสดงส่วนประกอบของบล็อก V5 และฟังก์ชันการทำงาน ซึ่งใช้ในส่วนบทช่วยสอนเกี่ยวกับบล็อกในฐานความรู้ VEX โดยแสดงบล็อกประเภทต่างๆ และการเชื่อมต่อเพื่อวัตถุประสงค์ทางการศึกษา แผนภาพแสดงบล็อก V5 พร้อมด้วยส่วนประกอบและการเชื่อมต่อที่มีป้ายกำกับ ซึ่งใช้ในบทช่วยสอนเพื่อทำความเข้าใจการเขียนโปรแกรมบล็อกในหุ่นยนต์ VEX

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

มีการใช้วง Forever เพื่อตรวจสอบอย่างต่อเนื่องว่ามีการกดปุ่มใดบนคอนโทรลเลอร์

บล็อก [ตั้งค่าความเร็วมอเตอร์] ใช้เพื่อตั้งค่าความเร็วมอเตอร์ไปที่ตำแหน่งของตัวควบคุมปัจจุบันตามแกน 2 และ 3 ซึ่งเทียบเท่ากับการตั้งรถให้อยู่ในการขับขี่ นั่นไม่จำเป็นต้องทำให้รถเคลื่อนที่ แต่มันแค่ตั้งค่าไว้

แกนจอยสติ๊กแต่ละแกนจะส่งคืนค่าระหว่าง -100 ถึง +100 และส่งกลับค่าเป็นศูนย์เมื่ออยู่ตรงกลาง ซึ่งหมายความว่าแกนจอยสติ๊กเมื่อกดจะเท่ากับ -100% ถึง 100% ยิ่งผลักแกนออกไปอีก 100 หรือ -100 มอเตอร์ก็จะหมุนเร็วขึ้นเท่านั้น

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

แผนภาพแสดงบล็อก V5 สำหรับบทช่วยสอนการเขียนโปรแกรม โดยแสดงบล็อกประเภทต่างๆ และการเชื่อมต่อของบล็อกเหล่านั้น โดยออกแบบมาเพื่อเพิ่มความเข้าใจเกี่ยวกับแนวคิดการเขียนโค้ดในบริบททางการศึกษา

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

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

โปรดสังเกตส่วนของโค้ดต่อไปนี้ในโครงการสำหรับ Claw ตามคำอธิบายเดียวกัน

สรุปตัวเลือกที่ 2: การใช้ Forever Loop

ข้อดี

ข้อจำกัด

สถานการณ์ตัวอย่าง

  • สามารถรองรับงานประกอบแบบกำหนดเองได้ โดยเฉพาะระบบขับเคลื่อนที่มีมอเตอร์มากกว่า 4 ตัว
  • สามารถกำหนดพฤติกรรมหลายอย่างให้กับปุ่มเดียวได้
  • สามารถกำหนดพฤติกรรมให้กับแกนต่างๆ บนคอนโทรลเลอร์ได้ (ซึ่งตรงข้ามกับตัวเลือกเดียวของ Left Arcade, Right Arcade, Split Arcade และ Tank Drive ในการกำหนดค่าอุปกรณ์)
  • ต้องใช้ความรู้การเขียนโค้ดในระดับหนึ่ง (เงื่อนไข ลูป และความรู้เกี่ยวกับปุ่ม/จอยสติ๊กบนคอนโทรลเลอร์)
  • ศักยภาพในการดำเนินโครงการช้าลงหรือเวลาตอบสนองของปุ่มล่าช้า เนื่องจากคำสั่งทั้งหมดอยู่ในลูป Forever เดียว การเรียกใช้โค้ดจึงอาจทำงานช้าขึ้นอยู่กับเงื่อนไขที่ตั้งไว้และความยาวของโค้ด
  • การใช้คอนโทรลเลอร์กับหุ่นยนต์ที่สร้างขึ้นโดยเฉพาะ โดยเฉพาะอย่างยิ่งกับระบบขับเคลื่อนที่ไม่ได้มาตรฐาน
  • เมื่อต้องการกำหนดพฤติกรรมหลายอย่างให้กับปุ่มเดียว ตัวอย่างเช่น เมื่อกดปุ่มขึ้น Claw จะสามารถเปิด ขับไปข้างหน้า จากนั้นปิดรอบๆ วัตถุได้

ตัวเลือกที่ 3: การใช้เหตุการณ์

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

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

ภาพประกอบบล็อก V5 ที่ใช้ในบทช่วยสอน ซึ่งแสดงบล็อกประเภทต่างๆ และการเชื่อมต่อ พร้อมทั้งสาธิตวิธีการสร้างและเขียนโปรแกรมด้วยหุ่นยนต์ VEX V5

ดาวน์โหลดไฟล์โครงการ "ตัวเลือก 3" VEXcode V5 >

คำอธิบายรหัสตัวเลือก 3

โค้ดชิ้น

คำอธิบาย

แผนภาพแสดงบล็อก V5 ต่างๆ ที่ใช้ในบทเรียนเกี่ยวกับหุ่นยนต์ พร้อมทั้งแสดงให้เห็นถึงฟังก์ชันและการเชื่อมต่อของบล็อกเหล่านี้เพื่อวัตถุประสงค์ทางการศึกษา

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

แผนภาพแสดงบล็อก V5 ในบทช่วยสอนเกี่ยวกับหุ่นยนต์ โดยแสดงบล็อกประเภทต่างๆ และการเชื่อมต่อสำหรับงานการเขียนโปรแกรม แผนภาพแสดงบล็อก V5 พร้อมด้วยส่วนประกอบและการเชื่อมต่อที่มีป้ายกำกับ ซึ่งใช้ในบทช่วยสอนเพื่อทำความเข้าใจการเขียนโปรแกรมบล็อกในหุ่นยนต์ VEX

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

{When controller axis} บล็อกเหตุการณ์ใช้เพื่อกระตุ้นพฤติกรรมบางอย่างเมื่อแกนใดแกนหนึ่งในสี่แกนบนคอนโทรลเลอร์ถูกเปลี่ยนโดยใช้จอยสติ๊ก

บล็อก [ตั้งค่าความเร็วมอเตอร์] ใช้เพื่อตั้งค่าความเร็วมอเตอร์ไปที่ตำแหน่งของตัวควบคุมปัจจุบันตามแนวแกน A และ D ซึ่งเทียบเท่ากับการตั้งรถให้อยู่ในการขับขี่ นั่นไม่จำเป็นต้องทำให้รถเคลื่อนที่ แต่มันแค่ตั้งค่าไว้

แกนจอยสติ๊กแต่ละแกนจะส่งคืนค่าระหว่าง -100 ถึง +100 และส่งกลับค่าเป็นศูนย์เมื่ออยู่ตรงกลาง ซึ่งหมายความว่าแกนจอยสติ๊กเมื่อกดจะเท่ากับ -100% ถึง 100% ยิ่งผลักแกนออกไปอีก 100 หรือ -100 มอเตอร์ก็จะหมุนเร็วขึ้นเท่านั้น

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

แผนภาพแสดงบล็อก V5 ที่ใช้ในการสอนการเขียนโปรแกรม โดยแสดงบล็อกประเภทต่างๆ และฟังก์ชันต่างๆ ในระบบ VEX Robotics

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

{When controller axis} บล็อกเหตุการณ์ใช้เพื่อจับคู่พฤติกรรมบางอย่างกับปุ่มที่ถูกกดหรือปล่อยบนคอนโทรลเลอร์ ในโค้ดส่วนนี้ เงื่อนไขที่ตั้งไว้คือหากกดปุ่มขึ้นหรือลง หากเป็นเช่นนั้นจะมีพฤติกรรมบางอย่างเกิดขึ้น เช่น การยกแขน ลดระดับ หรือหยุด

โปรดทราบว่าส่วนสุดท้ายของโค้ดในโครงการสำหรับ Claw เป็นไปตามคำอธิบายเดียวกัน

สรุปตัวเลือกที่ 3: การใช้เหตุการณ์

ข้อดี

ข้อจำกัด

สถานการณ์ตัวอย่าง

  • สามารถรองรับงานประกอบแบบกำหนดเองได้ โดยเฉพาะระบบขับเคลื่อนที่มีมอเตอร์มากกว่า 4 ตัว
  • สามารถกำหนดพฤติกรรมหลายอย่างให้กับปุ่มเดียวได้
  • สามารถกำหนดพฤติกรรมให้กับแกนต่างๆ บนคอนโทรลเลอร์ได้ (ซึ่งตรงข้ามกับตัวเลือกเดียวของ Left Arcade, Right Arcade, Split Arcade และ Tank Drive ในการกำหนดค่าอุปกรณ์)
  • การเรียกใช้โค้ดที่เร็วขึ้นและการตอบสนองของปุ่ม (เนื่องจากแต่ละเงื่อนไขถูกเรียกใช้แยกกันและไม่ได้ฝังอยู่ในโค้ดสแต็กเดียว)
  • ต้องการความรู้ด้านการเขียนโค้ดเกี่ยวกับตัวเลือกต่างๆ มากที่สุด (เงื่อนไข ลูป เหตุการณ์ และความรู้เกี่ยวกับปุ่ม/จอยสติ๊กบนคอนโทรลเลอร์)
  • การใช้คอนโทรลเลอร์กับหุ่นยนต์ที่สร้างขึ้นโดยเฉพาะ โดยเฉพาะอย่างยิ่งกับระบบขับเคลื่อนที่ไม่ได้มาตรฐาน
  • เมื่อต้องการกำหนดลักษณะการทำงานหลายอย่างให้กับปุ่มเดียวโดยไม่มีความล่าช้า ตัวอย่างเช่น เมื่อกดปุ่มขึ้น Claw จะสามารถเปิด ขับไปข้างหน้า จากนั้นปิดรอบๆ วัตถุได้

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

Last Updated: