ตัวควบคุม: การสำรวจการขับเคลื่อนถัง - Python
กล่องเครื่องมือสำหรับครู
-
วัตถุประสงค์ของส่วนนี้
การใช้โครงการตัวอย่างการควบคุมถังช่วยให้นักเรียนสามารถควบคุม Clawbot ได้โดยใช้ตัวควบคุม นักเรียนจะต้องปรับพารามิเตอร์ในคำสั่ง left_motor.set_velocity(), right_motor.set_velocity(), left_motor.spin(), right_motor.spin(), left_motor_speed = controller_1.axis3.position() และ right_motor_speed = controller_1.axis2.position() เพื่อควบคุมความเร็วสำหรับมอเตอร์แต่ละตัวของ Clawbot และเปิดใช้งานตัวควบคุมเพื่อควบคุมฟังก์ชันของมอเตอร์
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำแนะนำใดๆ โปรดไปที่ส่วนวิธีใช้ Python ใน VEXcode V5
ต่อไปนี้เป็นโครงร่างของสิ่งที่นักเรียนจะทำในกิจกรรมนี้:
- สำรวจโครงการตัวอย่างการควบคุมถัง
- เข้าใจการใช้โครงสร้าง while True infinite loop
- ทำภารกิจ Robo-Slalom ให้สำเร็จ!
เคล็ดลับสำหรับครู
หากนี่เป็นครั้งแรกที่นักเรียนใช้ VEXcode V5 พวกเขาสามารถเข้าถึงบทความที่มีประโยชน์มากมายในไลบรารี VEX ได้ บทความ
| ปริมาณ | วัสดุที่ต้องใช้ |
|---|---|
| 1 |
ชุดเริ่มต้นห้องเรียน VEX V5 (พร้อมเฟิร์มแวร์ล่าสุด) |
| 1 |
VEXcode V5 (เวอร์ชันล่าสุด, Windows, macOS) |
| 1 |
สมุดบันทึกวิศวกรรม |
| 1 |
ตัวอย่างโครงการควบคุมถัง |
| 2 ขึ้นไป |
วัตถุในห้องเรียนที่จะใช้เป็นอุปสรรค |
เคล็ดลับสำหรับครู
-
การใช้การกรอกอัตโนมัติ
การกรอกข้อความอัตโนมัติเป็นคุณลักษณะใน VEXcode V5 ที่ทำนายส่วนที่เหลือของคำสั่งที่คุณกำลังพิมพ์ เนื่องจากนักเรียนกำลังทำงานใน VEXcode V5 โปรดสนับสนุนให้พวกเขาใช้คุณลักษณะการกรอกอัตโนมัติเพื่อช่วยในเรื่องไวยากรณ์ Python คุณอาจสังเกตเห็นฟังก์ชั่นการกรอกอัตโนมัติขณะที่คุณเริ่มพิมพ์คำสั่ง ใช้ปุ่ม “ขึ้น” และ “ลง” เพื่อเลือกชื่อที่คุณต้องการ จากนั้นกด “Tab” หรือ (Enter/Return) บนแป้นพิมพ์ของคุณเพื่อเลือก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ โปรดดูPython

กิจกรรมนี้จะให้เครื่องมือแก่คุณในการตั้งโปรแกรมคอนโทรลเลอร์ของคุณ
- คำสั่ง VEXcode V5 Python ที่จะใช้ในการสำรวจนี้:
- มอเตอร์ซ้าย.ตั้งค่าความเร็ว()
- มอเตอร์ขวา.ตั้งค่าความเร็ว()
- มอเตอร์ซ้ายหมุน()
- มอเตอร์หมุนขวา()
- ตัวควบคุม_1.แกน2.ตำแหน่ง()
- ตัวควบคุม_1.แกน3.ตำแหน่ง()
- ในขณะที่จริง:
- รอ (5, วินาที)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำแนะนำใดๆ โปรดไปที่ส่วน Python วิธีใช้ ใน VEXcode V5

ขั้นตอนที่ 1: มาเริ่มการเขียนโปรแกรมคอนโทรลเลอร์กัน
- เลือกไฟล์และเปิดตัวอย่าง

- เลื่อนดูโครงการตัวอย่าง ที่แตกต่างกัน เลือกโครงการตัวอย่างการควบคุมถัง
- เปิดโครงการตัวอย่างการควบคุมถัง โครงการตัวอย่างนี้จะกำหนดค่าระบบส่งกำลังและตัวควบคุม โค้ดจะมีลักษณะดังตัวอย่างต่อไปนี้:
# Library imports
from vex import *
# Begin project code
# Main Controller loop to set motors to controller axis postiions
while True:
left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
left_motor.spin(FORWARD)
right_motor.spin(FORWARD)
wait(5, MSEC)
ดำเนินการดังต่อไปนี้ในสมุดบันทึกวิศวกรรมของคุณ:
- ทำนายว่าโครงการจะให้ Clawbot ทำสิ่งใด อธิบายเพิ่มเติมถึงข้อเท็จจริงที่ว่าโครงการใช้งาน Controller
- จอยสติ๊กทำให้หุ่นยนต์เคลื่อนไหวได้อย่างไร? Clawbot กำลังทำอะไรอยู่?
กล่องเครื่องมือสำหรับครู
-
คำตอบ
- โปรเจ็กต์นี้จะใช้โครงสร้างลูปอนันต์ ในขณะที่ True เพื่อตรวจสอบอย่างต่อเนื่องว่าตำแหน่งของจอยสติ๊กซ้ายและขวาอยู่ที่ใด เมื่อจอยสติ๊กซ้าย (หรือขวา) ถูกดันขึ้น ความเร็วจะถูกตั้งตามระยะห่างที่จอยสติ๊กถูกดันไปข้างหน้า
- ดังนั้น ยิ่งผลักจอยสติ๊กไปข้างหน้ามากขึ้นเท่าไร ความเร็วก็จะยิ่งถูกปรับเร็วขึ้นเท่านั้น และมอเตอร์ก็จะเคลื่อนที่เร็วขึ้นเท่านั้น แนวคิดเดียวกันนี้ใช้ได้กับการผลักจอยสติ๊กกลับ ยิ่งผลักจอยสติ๊กไปข้างหลังมากขึ้นเท่าไร มอเตอร์ก็จะเคลื่อนที่ถอยหลังเร็วขึ้นเท่านั้น
- ตั้งชื่อโครงการ TankControl บันทึก ดาวน์โหลด และเรียกใช้โครงการ Python TankControl
- หากต้องการข้อมูลความช่วยเหลือเพิ่มเติม โปรดดูวิดีโอการสอนใน VEXcode V5 ที่อธิบายวิธีการดาวน์โหลดและเรียกใช้โปรเจ็กต์
- ตรวจสอบคำอธิบายของโครงการในสมุดบันทึกวิศวกรรมของคุณ และเพิ่มบันทึกเพื่อแก้ไขตามความจำเป็น
ขั้นตอนที่ 2: ตัวควบคุม: การควบคุมถัง
กล่องเครื่องมือสำหรับครู
-
โครงสร้างลูปอนันต์ที่แท้จริง
ขั้นตอนนี้จะกล่าวถึงความสำคัญของโครงสร้างวงจรอนันต์ ในขณะที่เป็นจริง คุณควรตรวจสอบข้อมูลเป็นชั้นเรียน คุณสามารถสร้างแบบจำลองพฤติกรรมด้วย Clawbot และ Controller ของคุณ หรือหากมีเวลา ให้ให้ผู้เรียนรันโปรแกรมโดยไม่ต้องใช้โครงสร้างวงจรอนันต์ while True
หากนักเรียนต้องการความช่วยเหลือเพิ่มเติมในการทำความเข้าใจลูปอินฟินิตี้ ในขณะที่เป็นจริง โปรดคลิก ที่นี่
ประโยชน์จากการใช้โครงสร้างลูปอนันต์ while True มีอะไรบ้าง?
นี่คือโครงการของเราโดยไม่มีโครงสร้างลูปอนันต์ while True:
# Library imports
from vex import *
# Begin project code
# Main Controller loop to set motors to controller axis postiions
left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
left_motor.spin(FORWARD)
right_motor.spin(FORWARD)
คุณคิดว่าจะเกิดอะไรขึ้นถ้าโปรแกรมนี้ถูกเรียกใช้? หารือกันเป็นกลุ่ม จดบันทึกคำทำนายของคุณลงในสมุดบันทึกวิศวกรรม
กล่องเครื่องมือสำหรับครู
-
ทำความเข้าใจโครงสร้าง
หากไม่มีการวนซ้ำแบบไม่มีที่สิ้นสุด while True ค่าความเร็วของมอเตอร์แต่ละตัวจะถูกตั้งค่าทันทีที่โครงการทำงาน และค่าดังกล่าวจะคงที่จนกว่าโครงการจะหยุด กล่าวอีกนัยหนึ่ง หากคุณรันโปรเจ็กต์โดยไม่ขยับจอยสติ๊กใดๆ เนื่องจากตำแหน่งเริ่มต้นบนแกนของจอยสติ๊กคือ 0 ความเร็วของมอเตอร์ทั้งสองจะยังคงอยู่ที่ 0 แม้ว่าคุณจะขยับจอยสติ๊กก็ตาม
ในทำนองเดียวกัน สมมติว่าคุณเลื่อนจอยสติ๊กซ้ายขึ้นจนสุดตามแกน 3 และค้างไว้ที่นั่น หากคุณรันโปรเจ็กต์ด้านบน มอเตอร์ด้านซ้ายจะเคลื่อนที่ด้วยความเร็วเต็มที่และจะคงความเร็วเท่าเดิมแม้ว่าคุณจะเลื่อนจอยสติ๊กลงมาตามแกน 3 ก็ตาม เนื่องจาก Clawbot จะได้รับคำสั่งเริ่มต้นจาก Controller ทันทีที่รันโครงการ อย่างไรก็ตาม หากไม่มี Loop ค่าเริ่มต้นนั้นจะไม่สามารถอัปเดตได้
ลูปอนันต์ ในขณะที่เป็น True จะบอก Clawbot ให้อัปเดตความเร็วอย่างต่อเนื่องและทำงานตลอดระยะเวลาของโครงการ กล่าวอีกนัยหนึ่ง ลูปอินฟินิตี้ ในขณะที่เป็น True ในโปรเจ็กต์นี้ช่วยให้คุณสามารถเปลี่ยนความเร็วของมอเตอร์แต่ละตัวได้โดยการเลื่อนจอยสติ๊กไปตามแกน 2 หรือ 3 และ Clawbot จะตอบสนองตามนั้นจนกว่าคุณจะหยุดโปรเจ็กต์หรือปิด Clawbot
# Library imports
from vex import *
# Begin project code
# Main Controller loop to set motors to controller axis postiions
while True:
left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
left_motor.spin(FORWARD)
right_motor.spin(FORWARD)
wait(5, MSEC)
นำทางเส้นทางสลาลอม!
กล่องเครื่องมือสำหรับครู
-
ตั้งค่ากิจกรรม
แบ่งกลุ่มนักเรียนออกเป็นกลุ่มย่อยๆ ละ 2 หรือ 4 คน นักเรียนหนึ่งคนควรได้รับการกำหนดให้เป็นคนขับ ซึ่งเป็นคนที่จะใช้ตัวควบคุมเพื่อควบคุม Clawbot
ให้เด็กนักเรียนทำสลาลอมนี้ให้เสร็จโดยใช้ตัวควบคุมเพื่อเคลื่อนย้าย Clawbot ไปตามด้านนอกของ "ธง" แต่ละอัน เส้นทางของ Clawbot จะต้องป้องกันไม่ให้มันสัมผัสธงใดๆ และต้องให้มันข้ามเส้นชัยได้ คุณสามารถนำธงมาใช้กับห้องเรียนหรืออุปกรณ์ใดๆ ก็ได้ที่คุณมีอยู่ในมือ (ยางลบ ม้วนเทป กล่องทิชชู่) และสามารถตั้งให้เข้าที่ก่อนจะใช้งาน Clawbot ได้
หากมีเวลา ให้ให้เด็กๆ สลับบทบาทกันเพื่อให้คนอื่นมีโอกาสขับ Clawbot คุณสามารถเปลี่ยนสิ่งนี้ให้เป็นการแข่งขันภายในกลุ่มหรือระหว่างกลุ่มได้ โดยดูว่าแต่ละคนสามารถขับสลาลอมได้เร็วแค่ไหน
สลาลอมเป็นสนามที่ผู้เข้าร่วมจะต้องเคลื่อนที่ไปรอบๆ ธงหรือเครื่องหมายที่กำหนด สกีสลาลอมเป็นกีฬาฤดูหนาวยอดนิยมและรวมอยู่ในการแข่งขันกีฬาโอลิมปิกฤดูหนาว
ตอนนี้จับคู่คอนโทรลเลอร์แล้วและดาวน์โหลดโปรเจ็กต์ Python แล้ว คุณก็พร้อมที่จะเคลื่อนย้าย Clawbot ของคุณโดยใช้คอนโทรลเลอร์แล้ว!
- รวบรวมอุปกรณ์ห้องเรียนทั้งสี่ชิ้นที่คุณจะใช้เป็นธงในการสลาลอมจากครู
- ร่วมมือกันกำหนดธงเพื่อให้คนขับสามารถนำทาง Clawbot ไปตามแผนผังสลาลอม
- ดาวน์โหลดโครงการตัวอย่างการควบคุมถัง หากมีคำถามเกี่ยวกับวิธีการดาวน์โหลดโครงการ โปรดดูบทช่วยสอนการดาวน์โหลดและเรียกใช้โครงการ
ใช้ตัวควบคุมเพื่อเคลื่อนย้าย Clawbot ของคุณไปตามด้านนอกของ "ธง" แต่ละอัน เส้นทางของหุ่นยนต์จะต้องไม่สัมผัสกับธงใด ๆ และต้องสามารถผ่านเส้นชัยได้
- รันโครงการและขับ Clawbot ไปข้างหน้าและถอยหลัง และเลี้ยวซ้ายและขวาโดยใช้จอยสติ๊กทั้งสองอัน
- กำหนดเวลาที่ Clawbot ใช้ในการจบหลักสูตร บันทึกเวลาไว้ในสมุดบันทึกวิศวกรรม
- คุณสามารถผ่านหลักสูตร Slalom ด้วย Clawbot ได้เร็วแค่ไหน?
กระตุ้นให้เกิดการสนทนา
-
การสะท้อนถึงกิจกรรม
ถาม: Clawbot ตอบสนองต่อตัวควบคุมตามที่คุณคาดหวังไว้หรือไม่
A: คำตอบจะแตกต่างกันไป อย่างไรก็ตาม เป้าหมายของคำถามนี้คือเพื่อส่งเสริมการคิดเชิงองค์ความรู้ นักเรียนเริ่มต้นด้วยการทำนายพฤติกรรมก่อนที่จะทดสอบ บันทึกผลลัพธ์ และสะท้อนกลับ
ถาม: ความท้าทายที่ใหญ่ที่สุดในการเคลื่อน Clawbot ไปข้างหน้าหรือถอยหลังเป็นเส้นตรงคืออะไร
A: แม้ว่าคำตอบอาจแตกต่างกันไป แต่การตอบสนองทั่วไปควรเป็นว่าจอยสติ๊กทั้งสองอันจะต้องเคลื่อนที่พร้อมกันเพื่อให้แน่ใจว่ามอเตอร์ของ Clawbot กำลังเคลื่อนที่ไปในทิศทางเดียวกันและด้วยความเร็วเท่ากัน
ถาม: การใช้ลูปอินฟินิตี้ ขณะเป็น True ช่วยให้คุณสามารถใช้คอนโทรลเลอร์เพื่อเคลื่อน Clawbot ได้อย่างต่อเนื่องอย่างไร
A: หากไม่มีการวนซ้ำแบบไม่มีที่สิ้นสุด while True Clawbot จะดำเนินการตามพฤติกรรมที่กำหนดโดยคำแนะนำในโปรเจ็กต์เพียงครั้งเดียวเท่านั้น ลูปอนันต์ ในขณะที่เป็น True จะบอก Clawbot ให้อัปเดตความเร็วอย่างต่อเนื่องและทำงานตลอดระยะเวลาของโครงการ กล่าวอีกนัยหนึ่ง ลูปอินฟินิตี้ ในขณะที่เป็น True ช่วยให้คุณสามารถใช้ตัวควบคุมเพื่อเคลื่อนย้าย Clawbot ได้อย่างไม่มีกำหนดเวลา หรือจนกว่าแบตเตอรี่จะหมด