Skip to main content

บทเรียนที่ 4: การไหลของโปรเจกต์ด้วยลูปที่ซ้อนกัน

เก็บดิสก์สองตัวถัดไป

  • ตอนนี้หุ่นยนต์ VR หันหน้าไปทางดิสก์สีแดงแล้วหุ่นยนต์ VR จะต้องทำซ้ำพฤติกรรมเดิมที่ใช้ในการรวบรวมดิสก์สีน้ำเงินเพื่อรับและย้ายดิสก์สีแดง พฤติกรรมของการขับรถไปข้างหน้าเพื่อรับดิสก์หันหลังกลับและขับรถกลับไปยังเป้าหมายสีเดียวกันเพื่อส่งดิสก์ออก

    มุมมองด้านบนของ Disk Mover Playground พร้อมลูกศรประที่ระบุเส้นทางของ VR Robot จากเป้าหมายสีแดงเพื่อรวบรวมดิสก์สีแดงและวางลงในเป้าหมายจากนั้นชี้ไปทางขวาเพื่อย้ายไปยังเป้าหมายสีเขียว
  • เมื่อดิสก์สีแดงตัวแรกถูกย้ายหุ่นยนต์ VR จะต้องขับไปยังเป้าหมายสีเขียวและดำเนินการเช่นเดียวกับที่ใช้ในการย้ายดิสก์สีน้ำเงินและสีแดงเพื่อย้ายดิสก์สีเขียวตัวแรก

    มุมมองด้านบนของ Disk Mover Playground ที่จุดเริ่มต้นโดยมีลูกศรประระบุเส้นทางที่หุ่นยนต์ต้องเคลื่อนที่เพื่อรวบรวมแต่ละดิสก์ ลูกศรชี้ไปยังและจากแต่ละเป้าหมายไปยังดิสก์แรกและลูกศรขวาเพิ่มเติมชี้ระหว่างแต่ละพื้นที่เป้าหมาย
  • เพื่อที่จะทำพฤติกรรมซ้ำหลายๆครั้งสามารถใช้ for loop ได้
    VEXcode VR Python สำหรับคำสั่งลูปภายในคำจำกัดความหลัก คำสั่งอ่านค่าในช่วงที่มี 10 ในเครื่องหมายวงเล็บบนบรรทัดแรกจากนั้นเยื้องใต้คำสั่งรออ่านค่ารอที่มี 5 มิลลิวินาทีในวงเล็บ
  • เพิ่มลูป สำหรับ ที่ด้านบนของโปรเจ็กต์ เหนือความคิดเห็นแรก และตั้งค่าพารามิเตอร์ฟังก์ชันช่วง เป็น '3' ตรวจสอบให้แน่ใจว่า ลูปสำหรับอยู่เยื้องภายในคำจำกัดความหลัก

    def main ():
        สำหรับ repeat_count ในช่วง (3):
            รอ (5, มิลลิวินาที)
  • หากต้องการคัดลอกโค้ดลงในลูป สำหรับ จะต้องใส่ใจกับการเยื้องอย่างระมัดระวัง ขั้นแรก ให้เพิ่มช่องว่างก่อนคำสั่ง wait เพื่อให้ลูปมีลักษณะดังนี้:

    def main ():
        สำหรับ repeat_count ในช่วง (3):
    
    
            
            รอ (5, มิลลิวินาที)
  • ขั้นตอนต่อไป ให้เลือกคำสั่งที่จะใส่ไว้ในลูป for และคัดลอกและวางไว้เหนือคำสั่ง wait  สังเกตว่าการเยื้องจะไม่ถูกต้องหลังจากเพียงแค่คัดลอกและวาง เส้นตัวบ่งชี้สีเทาของลูป สำหรับ ขาด และถูกตัดการเชื่อมต่อจากคำสั่งรอ   นี่คือคิวภาพที่โปรเจกต์ของคุณจะไม่ดำเนินการตามที่ตั้งใจไว้โครงการจากด้านบนคัดลอกวางลงใน for loop โดยมีการเยื้องที่ไม่ถูกต้อง การเยื้องที่ถูกต้องจะแสดงในบล็อกรหัสถัดไป
  • เลือกคำสั่งภายใน  ลูปสำหรับและใช้ 'แท็บ' เพื่อเยื้องคำสั่งภายในลูปอย่างถูกต้อง เมื่อเยื้องเข้าไปอย่างถูกต้อง เส้นตัวบ่งชี้สีเทาควรเชื่อมต่อลูป สำหรับ กับคำสั่ง รอ  เพื่อแสดงขอบเขตของลูปด้านนอก เมื่อเสร็จแล้วโปรเจกต์ของคุณควรมีลักษณะดังนี้: 

    def main ():
        สำหรับ repeat_count ในช่วง (3):
            #1 ขับไปยังดิสก์โดยใช้ Down Eye Sensor
            ในขณะที่ไม่
                ใช่ down_eye.near_object (): drivetrain.drive (FORWARD)
                wait (5
            , msec)
    
            drivetrain.stop () #2 เลือกดิสก์
            magnet.energize (BOOST)
    
            #3 ขับไปยังเป้าหมายโดยใช้เซ็น
            เซอร์ระยะทาง drivetrain.turn_to_heading (180, องศา)
            ในขณะที่ front_distance.get_distance (MM) > 200
                : drivetrain.drive (ไปข้างหน้า)
                รอ (5, มิลลิวินาที
            ) drivetrain stop ()
    
            #4. Drop disk in
            goal magnet.energize (DROP
            ) drivetrain.drive_for (REVERSE, 100, MM)
    
            #5. เลี้ยวและขับไปยังเป้าหมาย
            ถัดไป drivetrain.turn_to_heading (90,
            DEGREES) drivetrain.drive_for (FORWARD, 800, MM)
    
            #6 หันไปที่
            ดิสก์ drivetrain.turn_to_heading (0, องศา)  
    
        รอ (5, มิลลิวินาที)
  • ดูวิดีโอด้านล่างเพื่อดูวิธีเลื่อนคำสั่งและปรับระยะเยื้องตามที่อธิบายไว้ข้างต้น ในคลิปวิดีโอจะมีการเน้นความคิดเห็นหกส่วนของโครงการและเปิดเมนูบริบท เลือกตัวเลือก ‘ตัด’ แล้ววาง เคอร์เซอร์ไว้ใต้คำสั่งสำหรับลูป เมนูบริบทจะเปิดขึ้นอีกครั้งและเลือก ‘วาง’ จากนั้นคำสั่งจะอยู่ภายใน ลูปสำหรับแต่เยื้องอย่างไม่ถูกต้อง ส่วนความคิดเห็นหกส่วนจะถูกไฮไลต์อีกครั้งและกด ‘Tab’ บนแป้นพิมพ์เพื่อเยื้องโปรเจกต์ภายในลูปให้ถูกต้อง
ไฟล์วิดีโอ
  • เปิด Disk Mover Playground หากยังไม่ได้เปิดและเรียกใช้โครงการ
  • เมื่อโครงการนี้ทำงานหุ่นยนต์ VR จะหยิบและวางดิสก์หนึ่งแผ่นของแต่ละสีลงในเป้าหมายสีที่สอดคล้องกัน

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

สำหรับข้อมูลของคุณ

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

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

 

 

คำถาม

โปรดเลือกลิงก์ด้านล่างเพื่อเข้าถึงแบบทดสอบบทเรียน

Google Doc /.docx /.pdf