Skip to main content

บทเรียนที่ 2: ขับรถไปยังดิสก์สีเขียวและสีน้ำเงิน

ไดรฟ์ไปยังดิสก์สีเขียวแล้วสีน้ำเงิน

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

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

    VEXcode VR บล็อกโครงการจากก่อนหน้านี้พร้อมเพิ่มบล็อกความคิดเห็นและไดรฟ์ไปข้างหน้า ขณะนี้โครงการทั้งหมดอ่านเมื่อเริ่มต้นตามด้วยความคิดเห็นอ่าน 'ไดรฟ์ไปยังดิสก์แรก (สีเขียว) จากนั้นเลี้ยวขวา' จากนั้นขับไปข้างหน้ารอจนกว่าตาด้านหน้าจะตรวจพบสีเขียวแล้วเลี้ยวขวาเป็นเวลา 90 องศา ถัดไปเป็นบล็อกความคิดเห็นที่เขียนว่า 'ไดรฟ์ไปยังดิสก์ถัดไป (สีน้ำเงิน) แล้วเลี้ยวซ้าย' สุดท้ายขับไปข้างหน้า
  • เพิ่มอีก [รอจนกว่า] ด้วยชุด <Color sensing> บล็อกเพื่อตรวจจับ ‘สีน้ำเงิน’ เนื่องจากดิสก์ถัดไปที่หุ่นยนต์ VR จะพบเป็นสีน้ำเงิน

    VEXcode VR บล็อกโปรเจกต์จากก่อนหน้านี้โดยเพิ่มบล็อก Wait Until หลังจากบล็อก Drive Forward ล่าสุด ขณะนี้โครงการทั้งหมดอ่านเมื่อเริ่มต้นตามด้วยความคิดเห็นอ่าน 'ไดรฟ์ไปยังดิสก์แรก (สีเขียว) จากนั้นเลี้ยวขวา' จากนั้นขับไปข้างหน้ารอจนกว่าตาด้านหน้าจะตรวจพบสีเขียวแล้วเลี้ยวขวาเป็นเวลา 90 องศา ถัดไปเป็นบล็อกความคิดเห็นที่เขียนว่า 'ไดรฟ์ไปยังดิสก์ถัดไป (สีน้ำเงิน) แล้วเลี้ยวซ้าย' สุดท้ายขับไปข้างหน้าและรอจนกว่าตาด้านหน้าจะตรวจพบสีน้ำเงิน
  • เพิ่มบล็อค [Turn for] และตั้งค่าพารามิเตอร์เป็น 'left'

    VEXcode VR จะบล็อกโปรเจกต์จากก่อนหน้านี้โดยมีการเพิ่มบล็อก Turn Left For 90 Degrees หลังจากบล็อก Wait Until ครั้งล่าสุด ขณะนี้โครงการทั้งหมดอ่านเมื่อเริ่มต้นตามด้วยความคิดเห็นอ่าน 'ไดรฟ์ไปยังดิสก์แรก (สีเขียว) จากนั้นเลี้ยวขวา' จากนั้นขับไปข้างหน้ารอจนกว่าตาด้านหน้าจะตรวจพบสีเขียวแล้วเลี้ยวขวาเป็นเวลา 90 องศา ถัดไปเป็นบล็อกความคิดเห็นที่เขียนว่า 'ไดรฟ์ไปยังดิสก์ถัดไป (สีน้ำเงิน) แล้วเลี้ยวซ้าย' ถัดไปขับไปข้างหน้าและรอจนกว่าตาด้านหน้าจะตรวจพบสีน้ำเงินก่อนที่จะเลี้ยวซ้ายเป็นเวลา 90 องศา
  • เรียกใช้โครงการเพื่อดูว่าหุ่นยนต์ VR เคลื่อนที่ผ่าน Disk Maze Playgroundอย่างไร

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

    VEXcode VR จะบล็อกข้อมูลโค้ดเพื่อเพิ่มลงในส่วนท้ายของโปรเจกต์ของเราเพื่อเข้าถึงดิสก์ที่สามและสี่สีน้ำเงิน ในการขับรถไปยังดิสก์ตัวที่สาม Drive Forward รอจนกว่า Front Eye จะตรวจพบสีน้ำเงินและเลี้ยวซ้ายเป็นเวลา 90 องศา จากนั้นขับไปยังดิสก์ที่สี่ขับไปข้างหน้ารอจนกว่าตาด้านหน้าจะตรวจพบสีน้ำเงินแล้วเลี้ยวซ้ายเป็นเวลา 90 องศา สุดท้ายหยุดขับรถ
    ตอนนี้ข้อมูลโค้ดบล็อก VEXcode เพื่อเข้าถึงดิสก์ที่สามและสี่ถูกเพิ่มลงในด้านล่างของโปรเจกต์ของเราแล้ว ตอนนี้โปรเจกต์ทั้งหมดมาถึงดิสก์สี่ตัวก่อนอื่นให้ใช้ดิสก์สีเขียวก่อนแล้วค่อยใช้ดิสก์สีน้ำเงินสามตัว ใช้ส่วนต่อไปนี้ของรหัสสำหรับแต่ละดิสก์: ขับไปข้างหน้ารอจนกว่าตาด้านหน้าจะตรวจพบสีของดิสก์จากนั้นเลี้ยวขวา 90 องศาถ้าเป็นสีเขียวและเลี้ยวซ้าย 90 องศาถ้าเป็นสีน้ำเงิน ทำซ้ำส่วนที่สามบล็อกสี่ครั้งเราสามารถเข้าถึงดิสก์สี่แผ่นแรกดิสก์สีเขียวโดยการเลี้ยวขวาและจากนั้นสามบลูส์โดยการเลี้ยวซ้าย หลังจาก 12 บล็อกเหล่านี้และความคิดเห็นเพิ่มเติมที่ทำเครื่องหมายไว้ในแต่ละส่วนให้หยุดขับรถ
  • สังเกตว่ามีรูปแบบนะคะ มีชุดของบล็อกที่ทำซ้ำสามครั้งในโครงการ โค้ดส่วนนี้สามารถควบแน่นได้โดยใช้บล็อค [ทำซ้ำ]

    ตอนนี้เราจะใช้บล็อกการทำซ้ำเพื่อลดความซับซ้อนและทำให้โค้ดของเราสั้นลง กล่องสีแดงจะไฮไลต์สามส่วนที่ใช้ในการเข้าถึงดิสก์สีน้ำเงินเนื่องจากนี่เป็นรหัสเดียวกันสามครั้งเราสามารถเพิ่มลงในชุดบล็อกการทำซ้ำเพื่อทำซ้ำ 3 ครั้งแทน ตอนนี้โครงการอ่านเมื่อเริ่มต้นขับรถไปข้างหน้าและรอจนกว่าตาด้านหน้าจะตรวจพบสีเขียวก่อนที่จะเลี้ยวขวาเป็นเวลา 90 องศา จากนั้นทำซ้ำรหัสเพื่อไปถึงดิสก์สีน้ำเงินสามครั้ง: ขับไปข้างหน้ารอจนกว่าตาด้านหน้าจะตรวจพบสีน้ำเงินแล้วเลี้ยวซ้ายเป็นเวลา 90 องศา หลังจากปิดลูปซ้ำให้หยุดขับรถ
  • เปิด Disk Maze Playground หากยังไม่ได้เปิดและเรียกใช้โครงการ
  • ดู VR Robot นำทางไปยังดิสก์สี่ตัวบน Disk MazePlayground

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

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

จนถึงตอนนี้คุณได้สร้างโปรเจกต์เพื่อขับไปยังดิสก์สีเขียวและจากนั้นสามดิสก์สีน้ำเงิน

ภาพด้านล่างแสดงโครงการทั้งหมดโดยใช้บล็อก VEXcode โดยมีพฤติกรรมซ้ำๆที่ใช้ในการขับรถไปยังดิสก์สีน้ำเงินสามตัวที่มีกล่องสีแดง

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

โครงการด้านล่างแสดงบล็อก VEXcode เดียวกันเหล่านี้ที่แปลงเป็นสวิตช์หลายบล็อก

โครงการศูนย์

โปรเจกต์สุดท้ายนี้แสดงคำสั่ง Switch block เดียวกันที่แปลงเป็นคำสั่ง Python ภายใน Switch block เดียว

VEXcode VR บล็อกโปรเจกต์เพื่อเข้าถึงดิสก์สี่ตัวแรกแต่ด้วยลูปการทำซ้ำทั้งหมดที่แปลงเป็นบล็อกสวิตช์ Python ทั้งโครงการมีข้อความว่าเมื่อเริ่มขับรถไปข้างหน้าและรอจนกว่าตาด้านหน้าจะตรวจพบสีเขียวก่อนที่จะเลี้ยวขวาเป็นเวลา 90 องศา ถัดไปคือสวิทช์บล็อกที่มีรหัส Python ต่อไปนี้: 'for repeat_count in range (3): drivetrain.drive (FORWARD) while not front_eye.detect (BLUE): wait (5, msec) drivetrain.turn_for (LEFT, 90, DEGREES )' ตอนนี้ด้านนอกของสวิทช์บล็อกในที่สุดก็หยุดขับรถ

สำหรับ REPEAT_COUNT ในช่วง (3): เป็นคำสั่ง Python ที่บอกหุ่นยนต์ว่าบรรทัดถัดไปของโค้ดที่เยื้องควรจะทำซ้ำสามครั้ง โปรดทราบว่าคุณควรใส่เครื่องหมายโคลอน (:) หลัง for loop 

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

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

บรรทัด wait (5, MSEC) ย่อหน้าไว้ใต้คำสั่ง while not front_eye.detect(BLUE) เนื่องจาก Front Eye Sensor จะตรวจสอบสีน้ำเงิน โดยหยุดชั่วคราว 5 MSEC ระหว่างการตรวจสอบแต่ละครั้ง

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