Skip to main content

บทเรียนที่ 3: ขับรถไปยังหมายเลข ‘31’

ในบทเรียนนี้หุ่นยนต์ VR จะขับไปที่หมายเลข ‘31’ แล้วกลับไปที่หมายเลข ‘1’ บน Number Grid Map Playground!

มุมมองจากบนลงล่างของสนามเด็กเล่น Number Grid Map โดยมีหมายเลข 31 ที่เน้นด้วยกล่องสีแดง หุ่นยนต์ VR เริ่มต้นที่หมายเลข 1 และหมายเลข 31 สี่เหลี่ยมคือสามช่องว่างด้านบน

สังเกตว่าหุ่นยนต์ VR จะเดินทางไปตามแกน Y เพื่อย้ายไปยังหมายเลข ‘31’ บน Number Grid MapPlayground

มุมมองจากบนลงล่างของสนามเด็กเล่น Number Grid Map พร้อมช่องว่างหมายเลข 31 ที่เน้นด้วยกล่องสีดำ เส้นแสดงการวัดทั่วทั้งแกน Y โดยพื้นที่แรกคือ -900 มิลลิเมตรบนแกน Y และพื้นที่ถัดไปคือ -700 ยังคงนับต่อไป 200 ในแต่ละครั้ง พื้นที่หมายเลข 31 อยู่ที่ตำแหน่ง Y -300 มิลลิเมตร

หุ่นยนต์ VR จะขับไปยังตำแหน่งของหมายเลข ‘31’ บน Number Grid MapPlayground อย่างไรก็ตามก่อนที่หุ่นยนต์ VR จะไปยังหมายเลขนั้นได้หุ่นยนต์ VR จะต้องบอกตำแหน่งของหมายเลขนั้นว่าอยู่ที่ไหน พิกัดของหมายเลข ‘31’ คือ (-900, -300)

มุมมองจากบนลงล่างของสนามเด็กเล่น Number Grid Map โดยมีตัวบ่งชี้สองแกนทำเครื่องหมายตำแหน่งของช่องว่างหมายเลข 31 หุ่นยนต์ VR เริ่มต้นที่ -900 X และ -900 Y ในขณะที่พื้นที่หมายเลข 31 อยู่ที่ -900 X และ -300 Y
  • ลากบล็อก [ไดรฟ์] ที่ไม่ต้องรอลงในพื้นที่ทำงาน

    VEXcode VR ใหม่จะบล็อกโครงการที่เริ่มต้นด้วยบล็อกเมื่อเริ่มต้นตามด้วยบล็อก Drive Forward
  • ติดบล็อค [รอจนกว่า] ใต้บล็อค [ไดรฟ์]

    ความต่อเนื่องของโครงการบล็อก VEXcode VR ขณะนี้มีการเพิ่มบล็อก Wait Until หลังจากบล็อก Drive Forward ตอนนี้ทั้งโครงการอ่านว่าเมื่อเริ่มต้นขับรถไปข้างหน้าและรอจนกว่าจะถึง บล็อก Wait Until มีพารามิเตอร์บูลีนว่างเปล่า
  • ลากบล็อก <Greater than> บูลีนรีพอร์เตอร์ไปยังบล็อก [รอจนกว่า]

    ความต่อเนื่องของโครงการบล็อก VEXcode VR ขณะนี้มีบล็อกที่ใหญ่กว่าแทรกอยู่ในบล็อกรอจนกว่าจะถึง ตอนนี้ทั้งโครงการอ่านว่าเมื่อเริ่มต้นขับรถไปข้างหน้าตามด้วยบล็อก Wait Until ที่มีบล็อก Greater Than ในนั้นซึ่งมีข้อความว่า 'ว่างเปล่ามากกว่า 50'
  • โปรดทราบว่า <Greater than> บล็อกจะถูกใช้แทน <Less than> บล็อกเนื่องจากหุ่นยนต์ VR กำลังขับรถขึ้นมาจากด้านล่างของสนามเด็กเล่น หุ่นยนต์ VR เริ่มต้นที่ค่า Y -900 มิลลิเมตร (มม.) เมื่อหุ่นยนต์ VR ขับเคลื่อนไปข้างหน้าค่า Y จะเพิ่มขึ้น

    มุมมองจากบนลงล่างเดียวกันของสนามเด็กเล่น Number Grid Map ที่มีตัวบ่งชี้สองแกนทำเครื่องหมายตำแหน่งของพื้นที่หมายเลข 31 จากก่อนหน้านี้ หุ่นยนต์ VR เริ่มต้นที่ -900 X และ -900 Y ในขณะที่พื้นที่หมายเลข 31 อยู่ที่ -900 X และ -300 Y
  • ลากบล็อค (ตำแหน่งของหุ่นยนต์) เข้าไป <Greater than> ในบล็อค

    ความต่อเนื่องของโครงการบล็อก VEXcode VR ขณะนี้มีบล็อกตำแหน่งของหุ่นยนต์แทรกอยู่ในบล็อกที่ยิ่งใหญ่กว่า ตอนนี้โครงการทั้งหมดอ่านว่าเมื่อเริ่มต้นขับรถไปข้างหน้าและรอจนกว่า X ตำแหน่งของหุ่นยนต์ในหน่วยมิลลิเมตรมากกว่า 50
  • ตั้งค่าพารามิเตอร์ของบล็อก (ตำแหน่งของหุ่นยนต์) เป็น “Y” และพารามิเตอร์ของ <Greater than> บล็อกเป็น -300

    ความต่อเนื่องของโครงการบล็อก VEXcode VR ตอนนี้ด้วยตำแหน่งของแกนของบล็อกหุ่นยนต์เปลี่ยนจาก X เป็น Y และพารามิเตอร์ที่สองของบล็อก Greater Than เปลี่ยนจาก 50 เป็น -300 ตอนนี้โครงการทั้งหมดอ่านว่าเมื่อเริ่มต้นขับรถไปข้างหน้าและรอจนกว่าตำแหน่ง Y ของหุ่นยนต์ในหน่วยมิลลิเมตรมีค่ามากกว่า -300
  • ลากในบล็อค [หยุดขับ] และเพิ่มลงในโปรเจกต์

    ความต่อเนื่องของโครงการบล็อก VEXcode VR ตอนนี้มีการเพิ่มบล็อกหยุดขับด้านล่างบล็อกรอจนกว่าจะถึง ตอนนี้โครงการทั้งหมดอ่านว่าเมื่อเริ่มต้นขับรถไปข้างหน้าและรอจนกว่าตำแหน่ง Y ของหุ่นยนต์ในหน่วยมิลลิเมตรมีค่ามากกว่า -300 สุดท้ายหยุดขับรถ
  • เปิด Number Grid Map Playground หากยังไม่ได้เปิดและเรียกใช้โครงการ
  • ดู VR Robot ขับไปที่หมายเลข ‘31’ บน Number Grid MapPlayground

    มุมมองจากบนลงล่างของสนามเด็กเล่น Number Grid Map โดยมีหุ่นยนต์ VR วางอยู่บนพื้นที่หมายเลข 31
  • ในโครงการนี้หุ่นยนต์ VR จะขับไปที่หมายเลข ‘31’ บน Number Grid MapPlayground เนื่องจากค่า Y เพิ่มขึ้นเมื่อ VR Robot ขับเคลื่อนไปที่หมายเลข ‘31’ โครงการจึงใช้ <Greater than> บล็อก
  • หุ่นยนต์ VR จะหยุดทำงานเมื่อค่า Y ของมัน มาก กว่าค่า Y ของพิกัดที่หมายเลขที่ระบุเปิดอยู่ เนื่องจากค่า Y ของตัวเลข ‘31’ คือ -300 หุ่นยนต์ VR จะหยุดขับเมื่อค่า Y มากกว่า -300
แผนภาพแสดงการไหลของตรรกะในโครงการ VEXcode VR Blocks โครงการเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นเริ่มขับรถไปข้างหน้าและถือคำสั่งนั้นไว้จนกว่าตำแหน่งของตำแหน่ง Y ของเซ็นเซอร์หุ่นยนต์ในหน่วยมิลลิเมตรจะมากกว่า -300 หลังจากนั้นบล็อกหยุดการขับขี่จะสิ้นสุดคำสั่ง Drive Forward

การใช้สวิทช์บล็อก 

ในบทเรียนนี้ท่านได้เรียนรู้วิธีใช้บล็อก VEXcode [Wait until] ที่มีเงื่อนไขบูลีนเพื่อสั่งให้หุ่นยนต์รอจนกว่าหุ่นยนต์จะไปถึงตำแหน่งที่มากกว่า -300 บนแกน Y ก่อนที่จะย้ายไปยังพฤติกรรมถัดไป

ภาพด้านล่างแสดงบล็อค VEXcode ข้างบล็อค Switch ที่มีคำสั่ง Python สำหรับพฤติกรรมเดียวกัน 

การเปรียบเทียบบล็อก VEXcode VR Wait Until และบล็อกสวิตช์ที่เกี่ยวข้อง บล็อก VR มีข้อความว่า 'รอจนกว่าตำแหน่ง Y ของหุ่นยนต์ในหน่วยมิลลิเมตรมากกว่า -300' รหัส Python ของบล็อกสวิทช์จะอ่านว่า 'while not location.position (Y, MM )> -300: wait (5, msec )' คำสั่งรอจะถูกเยื้องใต้ในขณะที่ไม่ภายในบล็อกสวิตช์ใน ขณะที่ไม่ใช่ตำแหน่งตำแหน่ง (Y, > MM )-300: เป็นคำสั่ง Python แรกที่ ตรวจสอบว่าตำแหน่งของหุ่นยนต์ตามแกน X มากกว่า -300 หรือไม่

คำสั่งเยื้องที่สอง รอ (5, มิลลิวินาที) หยุดการดำเนินการของลูปแบบมีเงื่อนไขชั่วคราวเป็นเวลา 5 มิลลิวินาที

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

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

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