Skip to main content

บทเรียนที่ 3: การไหลของโปรเจกต์ที่มีหลายลูปในขณะที่

ตอนนี้คุณได้สร้างโครงการข้อความเพื่อนำทางหุ่นยนต์ VR ไปยังตัวอักษร ‘A’ บน Wall Maze Playgroundคุณจะขยายทักษะของคุณโดยใช้เงื่อนไขและค่าเซ็นเซอร์ ในบทเรียนนี้คุณจะนำทางหุ่นยนต์ VR ไปยังหมายเลข ‘2‘ ใน Wall Maze Playground จากนั้นสำรวจว่าเหตุใดจึงต้องใช้คำสั่งเพิ่มเติมเพื่อขับไปยังตัวอักษร ‘B’ ในการประลองมินิคุณจะใช้ทักษะเหล่านี้เพื่อนำทางจากจุดเริ่มต้นของเขาวงกตกำแพงไปยังหมายเลข ‘3’

มุมมองจากบนลงล่างของสนามเด็กเล่น Wall Maze กับหุ่นยนต์ VR เริ่มต้นที่ลูกศรสีเขียวที่กึ่งกลางด้านล่างของสนามเด็กเล่น หมายเลข 2 ถูกเน้นในกล่องสีแดงและอยู่ในตำแหน่งตรงกลางของจตุภาคซ้ายล่างของเขาวงกตด้านซ้ายถัดจากตัวอักษร A หมายเลข 2 ในมุมที่สร้างโดยผนังสามด้านล้อมรอบ

ผลการเรียนรู้

  • อธิบายขั้นตอนของโปรแกรมในโครงการที่มี VR Robot ขับไปข้างหน้าจนกว่าจะมีการกด Bumper Sensor

เปลี่ยนชื่อโปรเจกต์

  • หากยังไม่ได้โหลดโครงการของบทเรียนก่อนหน้าให้โหล โครงการ Unit4Lesson2
  • เปลี่ยนชื่อ โครงการUnit4Lesson3แถบเครื่องมือ VEXcode VR ที่แสดงหน่วยที่ 4 บทเรียนที่ 3 เป็นชื่อโครงการ ชื่อโปรเจกต์ถูกเน้นด้วยกล่องสีแดง

     

 

การไหลของโครงการเพื่อไปยังตัวอักษร ‘A’

ในบทเรียนก่อนหน้านี้หุ่นยนต์ VR ขับไปที่ตัวอักษร ‘A’ บน Wall Maze Playground เรามาดูขั้นตอนของโครงการในขณะที่เราเตรียมที่จะไปยังสถานที่ใหม่ใน Wall Maze

มุมมองจากบนลงล่างของสนามเด็กเล่น Wall Maze กับหุ่นยนต์ VR ในตำแหน่งเริ่มต้นที่ด้านล่างตรงกลางของสนามเด็กเล่น ตัวอักษร A อยู่ทางซ้ายของหุ่นยนต์โดยตรงคั่นด้วยกำแพงสั้นๆ
  • เพื่อให้เข้าใจถึงขั้นตอนของโครงการในการขับรถไปยังตัวอักษร ‘A’ บน Wall Maze Playground ได้ดียิ่งขึ้นให้เริ่มต้นด้วยการปรับเปลี่ยนโครงการก่อนหน้าของคุณหรือสร้างโครงการใหม่เพื่อให้ตรงกับโครงการพื้นฐานนี้

    def main ():
    	while not left_bumper.pressed (): drivetrain.drive (		FORWARD
    		)
    		wait (		5, msec) 	 	drivetrain.turn_for
    	
    	(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed (): 		drivetrain.drive
    		(FORWARD)
    		wait (5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait (5, msec
    	
    	) 	 	drivetrain.stop ()
  • เมื่อโครงการใช้ลูป while พร้อมเงื่อนไข ไม่ใช่ กระแสงานของโปรแกรมในโครงการจะยังคงดำเนินตามลำดับจากบนลงล่างเหมือนเดิม ลูปขณะ ที่ช่วยให้การ ไหลของโปรแกรม "หยุดชั่วคราว" ที่จุดใดจุดหนึ่งในขณะที่ตรงตามเงื่อนไข  ตัว ดำเนินการ NOT อนุญาตให้โครงการอยู่ในลูปจนกว่า จะมีการรายงานเงื่อนไข False จากนั้นโปรเจกต์จะไหลไปยังคำสั่งถัดไปนอกลูป เงื่อนไข บูลีนเช่นกันชนซ้ายที่ถูกกดจะรายงาน ค่าที่ เป็นจริง หรือเท็จ ในรหัสนี้สำหรับการขับเคลื่อนหุ่นยนต์ VR ไปยังตัวอักษร ‘A' หุ่นยนต์ VR จะขับเคลื่อนไปข้างหน้าจนกว่าสภาพบูลีนของกันชนซ้ายจะถูกกดเป็นจริงขั้น
    ตอนโครงการของโครงการที่จะขับรถไปยังตัวอักษร 'A' จะมีลักษณะดังนี้:แผนภาพการไหลของโครงการที่อธิบายการไหลของโครงการด้านบนเพื่อไปยังตัวอักษร A ซึ่งแสดงอยู่ทางด้านซ้าย ลูกศรชี้ว่าโปรเจกต์ไหลไปทางขวา ประการแรกลูกศรวงรอบสีแดงแสดงให้เห็นว่าในขณะที่ไม่ได้กดกันชนสภาพของห่วงในขณะที่ส่งกลับเป็นเท็จดังนั้นหุ่นยนต์จึงขับเคลื่อนไปข้างหน้า ลูกศรชี้ลงสีเขียวถัดไปแสดงให้เห็นว่าเมื่อกันชนถูกกดสภาพจะรายงานตามความเป็นจริงเพื่อให้โครงการหลุดออกจากห่วงนั้นและหุ่นยนต์จะเลี้ยวซ้าย 90 องศา ลำดับนี้จะถูกทำซ้ำสำหรับแต่ละลูปในโครงการ

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

 

ขับไปที่หมายเลข '2'

ในบทเรียนนี้โครงการจะได้รับการแก้ไขเพื่อให้ VR Robot ขับไปยังหมายเลข ‘2’ บน Wall Maze Playground!

มุมมองจากบนลงล่างของสนามเด็กเล่น Wall Maze กับหุ่นยนต์ VR เริ่มต้นที่ลูกศรสีเขียวที่กึ่งกลางด้านล่างของสนามเด็กเล่น หมายเลข 2 ถูกเน้นในกล่องสีแดงและอยู่ในตำแหน่งตรงกลางของจตุภาคซ้ายล่างของเขาวงกตด้านซ้ายถัดจากตัวอักษร A หมายเลข 2 ในมุมที่สร้างโดยผนังสามด้านล้อมรอบ
  • โครงการจากบทเรียนที่ 2 มีหุ่นยนต์ VR เลี้ยวซ้ายเพื่อขับไปยังตัวอักษร ‘A’ เพื่อไปยังหมายเลข ‘2‘ หุ่นยนต์ VR จะต้องเลี้ยวขวาแทนขับไปข้างหน้าแล้วเลี้ยวซ้าย

    มุมมองจากบนลงล่างของ Wall Maze Playground ที่หุ่นยนต์ VR อยู่ในตำแหน่งเหนือเครื่องหมาย A หันหน้าไปทางผนังด้านซ้าย ลูกศรสีแดงชี้ไปทาง A และลูกศรสีเขียวสามลูกแสดงเส้นทางที่ตั้งใจไปยังหมายเลข 2 ลูกศรสีเขียวชี้ขึ้นไปทางผนังตรงข้าม A จากนั้นไปทางซ้ายไปทางผนังถัดไปทางซ้ายของหมายเลข 2 จากนั้นลงไปที่มุมถือหมายเลข 2
  • เปลี่ยนทิศทางของคำสั่ง turn_for ที่สองไปทางขวาแทนที่จะเป็นทางซ้าย ตอนนี้โปรเจกต์ของคุณควรมีลักษณะดังนี้:

    def main ():
    	while not left_bumper.pressed (): drivetrain.drive (		FORWARD
    		)
    		wait (		5, msec) 	 	drivetrain.turn_for
    	
    	(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed (): 		drivetrain.drive
    		(FORWARD)
    		wait (5, MSEC)
    	
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait (5, msec
    	
    	) 	 	drivetrain.stop ()
  • เปิด Wall Maze Playground หากยังไม่ได้เปิดและดำเนินโครงการ
  • ดูหุ่นยนต์ VR เริ่มขับไปที่หมายเลข ‘2’ แต่หยุดที่กำแพง ดังนั้นหุ่นยนต์ VR จะต้องเลี้ยวซ้ายเมื่อมันกดกับผนังแทนที่จะหยุด

    มุมมองด้านบนของสนามเด็กเล่น Wall Maze โดยหุ่นยนต์ VR หันหน้าไปทางผนังตรงข้ามกับตัวอักษร A ชี้ขึ้นด้านบน
  • เลือกปุ่ม "รีเซ็ต" เพื่อรีเซ็ตสนามเด็กเล่นและย้ายหุ่นยนต์ VR กลับไปที่ตำแหน่งเริ่มต้นWall Maze Playground แสดงส่วนต่อประสานสนามเด็กเล่นทั้งหมด ปุ่มรีเซ็ตที่ด้านล่างซ้ายของอินเทอร์เฟซสนามเด็กเล่นจะถูกเน้นด้วยกล่องสีแดง

     

  • แก้ไขโค้ดโดยลบคำสั่ง หยุด และแทนที่ด้วยคำสั่งต่อไปนี้เพื่อขับหุ่นยนต์ VR ไปที่หมายเลข '2'

    def main ():
    	while not left_bumper.pressed (): drivetrain.drive (FORWARD
    		)
    		wait (		5, msec) 	 	drivetrain.turn_for (
    	
    	LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed (): drivetrain.drive (
    		FORWARD)
    		wait (5, msec) 	 	drivetrain.turn_for
    	
    	(RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed (): 		drivetrain.drive (
    		FORWARD)
    		wait (5, msec) 	 	drivetrain.turn_for
    	
    	(LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed (): 		drivetrain.drive
    		(FORWARD)
    		wait (5, msec)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.turn_for (FORWARD)
    		wait (5, msec
    	
    	) 	 	drivetrain.stop ()
  • เปิด Wall Maze Playground หากยังไม่ได้เปิดและดำเนินโครงการ
  • ดู VR Robot ขับไปที่หมายเลข ‘2’ บน Wall Maze Playground!

    มุมมองจากบนลงล่างของสนามเด็กเล่น Wall Maze ตอนนี้หุ่นยนต์ VR อยู่ในตำแหน่งเหนือเครื่องหมาย 2 อันหันหน้าไปทางผนังด้านล่างโดยให้ด้านหน้ากดกับผนัง
  • เลือกปุ่ม "รีเซ็ต" เพื่อรีเซ็ตสนามเด็กเล่นและย้ายหุ่นยนต์ VR กลับไปที่ตำแหน่งเริ่มต้น

เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป