Skip to main content

ตัวควบคุม: การสำรวจการขับเคลื่อนถัง - C++

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - วัตถุประสงค์ของกิจกรรมนี้

การใช้โครงการตัวอย่างการควบคุมถังช่วยให้นักเรียนสามารถควบคุม Clawbot ได้โดยใช้ตัวควบคุม นักเรียนจะต้องปรับพารามิเตอร์ในคำสั่ง LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed = Controller1.Axis3.position(), และ rightMotorSpeed = Controller1.Axis2.position() เพื่อควบคุมความเร็วสำหรับมอเตอร์แต่ละตัวของ Clawbot และเปิดใช้งาน Controller เพื่อทำการควบคุมฟังก์ชันของมอเตอร์

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำแนะนำใดๆ โปรดไปที่ส่วนวิธีใช้ ในส่วน C++  ใน 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 โปรดสนับสนุนให้พวกเขาใช้คุณลักษณะการกรอกอัตโนมัติเพื่อช่วยในเรื่องรูปแบบ  บทความ การกรอกอัตโนมัติ ครอบคลุมถึงวิธีการใช้คุณลักษณะการกรอกอัตโนมัติ

VEXcode V5 พร้อมส่วน Drivetrain ของคำสั่งที่พิมพ์ไว้ทางซ้าย และทางขวาจะแสดงรายการตัวเลือกการกรอกอัตโนมัติแบบเลื่อนได้สำหรับคำสั่งนั้น

 

กิจกรรมนี้จะให้เครื่องมือแก่คุณในการตั้งโปรแกรมคอนโทรลเลอร์ของคุณ

ขั้นตอนที่ 1: มาเริ่มการเขียนโปรแกรมคอนโทรลเลอร์กัน

  • เปิดโครงการตัวอย่าง Tank Control 
  • ไอคอนตัวอย่างโครงการของรถถังที่วางอยู่เหนือตัวควบคุมเกม โดยมีป้ายชื่อ 'Tank Control' อยู่ด้านล่าง

    ดำเนินการต่อไปนี้ในสมุดบันทึกวิศวกรรมของคุณ:

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

    
    	int main() {
    		// Initializing Robot Configuration. DO NOT REMOVE!
    		vexcodeInit();
    		// Begin project code.
    		
    		// Main Controller loop to set motors to controller axis positions
    		while (true) {
    		  LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
    		  RightMotor.setVelocity(Controller1.Axis2.position(), percent);
    		  LeftMotor.spin(forward);
    		  RightMotor.spin(forward);
    	  
    		  wait(5, msec);
    		}
    	  
    		return 0;
    	}
    

 

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - คำตอบ

  1. โปรเจ็กต์นี้จะใช้โครงสร้างลูปอนันต์ ในขณะที่ True เพื่อตรวจสอบอย่างต่อเนื่องว่าตำแหน่งของจอยสติ๊กซ้ายและขวาอยู่ที่ใด เมื่อจอยสติ๊กซ้าย (หรือขวา) ถูกดันขึ้น ความเร็วจะถูกตั้งตามระยะห่างที่จอยสติ๊กถูกดันไปข้างหน้า 
  2. ดังนั้น ยิ่งผลักจอยสติ๊กไปข้างหน้ามากขึ้นเท่าไร ความเร็วก็จะยิ่งถูกปรับเร็วขึ้นเท่านั้น และมอเตอร์ก็จะเคลื่อนที่เร็วขึ้นเท่านั้น แนวคิดเดียวกันนี้ใช้ได้กับการผลักจอยสติ๊กกลับ ยิ่งผลักจอยสติ๊กไปข้างหลังมากขึ้นเท่าไร มอเตอร์ก็จะเคลื่อนที่ถอยหลังเร็วขึ้นเท่านั้น
  • บันทึก ดาวน์โหลด และ โครงการตัวอย่าง Tank Control (C++
  • หากต้องการความ โปรดดูส่วนไลบรารี VEX ใน C++ หรือดูบทช่วยสอนใน VEXcode V5 ที่อธิบายวิธีการดาวน์โหลดและเรียกใช้โปรเจ็กต์

    แถบเครื่องมือใน VEXcode V5 พร้อมบทช่วยสอน ทางด้านขวา เน้นด้วยกล่องสีแดง จากด้านซ้าย แถบเครื่องมือจะแสดงโลโก้ V5 ไอคอนโลก จากนั้นคือ ไฟล์ แก้ไข และแบบฝึกสอน

     

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

ขั้นตอนที่ 2: ตัวควบคุม: การควบคุมถัง

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - โครงสร้างลูปอนันต์ที่แท้จริง

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

ประโยชน์จากการใช้โครงสร้างลูปอนันต์ while True มีอะไรบ้าง?

นี่คือโครงการของเราโดยไม่มีโครงสร้างลูปอนันต์ while True:


	int main() {
		// Initializing Robot Configuration. DO NOT REMOVE!
		vexcodeInit();
		// Begin project code.
		// Main Controller loop to set motors to controller axis postiions
		
		LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
		RightMotor.setVelocity(Controller1.Axis2.position(), percent);
		LeftMotor.spin(forward);
		RightMotor.spin(forward);
	  
	}

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

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - ทำความเข้าใจโครงสร้าง

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

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

ลูปอนันต์ ในขณะที่เป็น True จะบอก Clawbot ให้อัปเดตความเร็วอย่างต่อเนื่องและทำงานตลอดระยะเวลาของโครงการ กล่าวอีกนัยหนึ่ง ลูปอินฟินิตี้ ในขณะที่เป็น True ในโปรเจ็กต์นี้ช่วยให้คุณสามารถเปลี่ยนความเร็วของมอเตอร์แต่ละตัวได้โดยการเลื่อนจอยสติ๊กไปตามแกน 2 หรือ 3 และ Clawbot จะตอบสนองตามนั้นจนกว่าคุณจะหยุดโปรเจ็กต์หรือปิด Clawbot

ขั้นตอนที่ 3: นำทางหลักสูตรสลาลอม!

ไอคอนกล่องเครื่องมือครู กล่องเครื่องมือสำหรับครู - ตั้งค่ากิจกรรม

แบ่งกลุ่มนักเรียนออกเป็นกลุ่มย่อยๆ ละ 2 หรือ 4 คน นักเรียนหนึ่งคนควรได้รับการกำหนดให้เป็นคนขับ ซึ่งเป็นคนที่จะใช้ตัวควบคุมเพื่อควบคุม Clawbot

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

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

นักสโนว์บอร์ดกำลังแข่งลงเนินบนเนินที่ปกคลุมไปด้วยหิมะ โดยต้องผ่านประตูสีแดงและสีน้ำเงินที่ตั้งเรียงกันเป็นซิกแซก

สลาลอมเป็นสนามที่ผู้เข้าร่วมจะต้องเคลื่อนที่ไปรอบๆ ธงหรือเครื่องหมายที่กำหนด สกีสลาลอมเป็นกีฬาฤดูหนาวยอดนิยมและรวมอยู่ในโอลิมปิกฤดูหนาว

ตอนนี้ Controller จับคู่กับ แล้ว และโครงการ C++  ดาวน์โหลดเป็น คุณพร้อมที่จะเคลื่อนย้าย Clawbot ของคุณโดยใช้ Controller แล้ว!

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

ขั้นตอนที่ 4: โรโบสลาลอม

ภาพประกอบสนามสลาลอมบนหิมะ พร้อมป้าย 'เริ่มต้น' ที่ด้านบน และเส้นชัยที่ด้านล่าง ในระหว่างนั้น เส้นทางซิกแซกแบบจุดๆ จะทอระหว่างธงสีน้ำเงินและสีแดงสลับกัน

ใช้ตัวควบคุมเพื่อเคลื่อนย้าย Clawbot ของคุณไปตามด้านนอกของ "ธง" แต่ละอัน เส้นทางของหุ่นยนต์จะต้องไม่สัมผัสกับธงใด ๆ และต้องสามารถผ่านเส้นชัยได้

  • รันโครงการและขับ Clawbot ไปข้างหน้าและถอยหลัง และเลี้ยวซ้ายและขวาโดยใช้จอยสติ๊กทั้งสองอัน
  • กำหนดเวลาที่ Clawbot ใช้ในการจบหลักสูตร บันทึกเวลาไว้ในสมุดบันทึกวิศวกรรม
  • คุณสามารถผ่านหลักสูตร Slalom ด้วย Clawbot ได้เร็วแค่ไหน?

ไอคอนสร้างแรงจูงใจในการสนทนา กระตุ้นให้เกิดการสนทนา - การสะท้อนถึงกิจกรรม

ถาม: Clawbot ตอบสนองต่อตัวควบคุมตามที่คุณคาดหวังไว้หรือไม่

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

ถาม: ความท้าทายที่ใหญ่ที่สุดในการเคลื่อน Clawbot ไปข้างหน้าหรือถอยหลังเป็นเส้นตรงคืออะไร

A: แม้ว่าคำตอบอาจแตกต่างกันไป แต่การตอบสนองทั่วไปควรเป็นว่าจอยสติ๊กทั้งสองอันจะต้องเคลื่อนที่พร้อมกันเพื่อให้แน่ใจว่ามอเตอร์ของ Clawbot กำลังเคลื่อนที่ไปในทิศทางเดียวกันและด้วยความเร็วเท่ากัน

ถาม: การใช้ลูปอินฟินิตี้ ในขณะที่เป็น True ช่วยให้คุณสามารถใช้คอนโทรลเลอร์เพื่อเคลื่อน Clawbot ได้อย่างต่อเนื่องอย่างไร

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