Skip to main content

บทที่ 3: การใช้บล็อก [ถ้าเป็นเช่นนั้น]

ใน Disk Maze Challenge หุ่นยนต์ VR กำลังตรวจสอบสภาพของเซ็นเซอร์ดวงตาด้านหน้าเพื่อดูว่ามีการรายงานสีใด แต่ละสีตรงกับพฤติกรรมที่แตกต่างกันที่หุ่นยนต์ VR ควรทำ

บล็อก VEXcode VR If Then C ที่มีพารามิเตอร์บูลีนของ 'ดวงตาด้านหน้าตรวจจับสีแดง ?'
  • เริ่มโปรเจกต์ใหม่และตั้งชื่อโปรเจ กต์ว่าUnit7Lesson3

    แถบเครื่องมือ VEXcode VR ที่มีปุ่ม 'ชื่อโครงการ' ที่เน้นในช่องสีแดงทางด้านซ้ายของปุ่มเลือกสนามเด็กเล่น ชื่อโครงการถูกตั้งค่าเป็นหน่วยที่ 7 บทเรียนที่ 3
  • ลากบล็อค [If then] ไปยังพื้นที่ทำงานและแนบไปกับบล็อค [When started]

    VEXcode VR บล็อกโปรแกรมด้วยบล็อกเมื่อเริ่มต้นและบล็อก If Then C ว่างเปล่า

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

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

    บล็อก VEXcode VR If Then C พร้อมกล่องสีแดงที่เน้นพื้นที่พารามิเตอร์บูลีน

    บล็อก [ถ้าเป็นเช่นนั้น] จะทำงานหนึ่งครั้งในโปรเจกต์ ในตัวอย่างนี้เซนเซอร์ตรวจจับดวงตาด้านหน้าจะรายงานความจริงหากตรวจพบวัตถุสีเขียวและดำเนินการตามคำสั่งภายในบล็อก C - เลี้ยวขวาเป็นเวลา 90 องศา หากตรวจไม่พบวัตถุสีเขียวโปรเจกต์จะย้ายไปยังคำสั่งถัดไปในสแต็ก

    VEXcode VR บล็อกโครงการที่เลี้ยวขวาหาก Front Eye ตรวจจับสีเขียว โครงการมีข้อความว่า: เมื่อเริ่มต้นหากตาด้านหน้าตรวจพบสีเขียวจากนั้นเลี้ยวขวาเป็นเวลา 90 องศา นอกเหนือจากคำสั่ง if เป็นคำสั่งหยุดขับรถ

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


    ภาพด้านล่าง แสดงข้อความบล็อค Switch [If then] สำหรับโครงการตัวอย่างของบทเรียนนี้ 

    โครงการบล็อก VEXcode VR เดียวกันแต่มีสวิตช์บล็อกรวมอยู่ด้วยซึ่งจะเลี้ยวขวาหาก Front Eye ตรวจจับสีเขียว โปรเจกต์เริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและตามด้วยบล็อก If Then เวอร์ชันสวิตช์ C รหัส Python เขียนว่า 'if front_eye.detect (GREEN): drivetrain.turn_for (RIGHT, 90, DEGREES )' นอกเหนือจากคำสั่ง if เป็นคำสั่งหยุดขับรถ

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

    บรรทัดแรกของรหัส ถ้า front_eye.detect (สีเขียว): เป็นลูปแบบมีเงื่อนไขที่ตรวจสอบว่า Front Eye Sensor ตรวจพบสีเขียวหรือไม่ โปรดทราบว่าควรมีลำไส้ใหญ่(:) ที่ส่วนท้ายของบรรทัดนี้ 

    รหัส บรรทัดที่สอง drivetrain.turn_for (ขวา 90 องศา) บอกให้หุ่นยนต์เลี้ยวขวา 90 องศาเมื่อเซ็นเซอร์ตรวจจับดวงตาด้านหน้าตรวจจับสีเขียว เส้นนี้จะ ถูกเยื้องที่ค่าเริ่มต้น 4 ช่องว่าง เนื่องจากเป็นพฤติกรรมเฉพาะที่จะดำเนินการหากเซ็นเซอร์ตรวจจับดวงตาด้านหน้าตรวจพบสีเขียว 

    โครงการบล็อก VEXcode VR เดียวกันแต่มีสวิตช์บล็อกรวมอยู่ด้วยซึ่งจะเลี้ยวขวาหาก Front Eye ตรวจจับสีเขียว โปรเจกต์เริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและตามด้วยบล็อก If Then เวอร์ชันสวิตช์ C รหัส Python เขียนว่า 'if front_eye.detect (GREEN): drivetrain.turn_for (RIGHT, 90, DEGREES )' นอกเหนือจากคำสั่ง if เป็นคำสั่งหยุดขับรถ

  • ลาก <Color sensing> บล็อกไปยังพื้นที่ทำงานลงในอินพุตหกเหลี่ยมของบล็อก [ถ้าเป็นเช่นนั้น]

    VEXcode VR บล็อกโครงการที่ใช้คำสั่ง if เพื่อตรวจจับสีของดิสก์ มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นอ่านบล็อกความคิดเห็น 'ถ้าตาด้านหน้าตรวจพบสีเขียวแล้วเลี้ยวขวา' สุดท้ายมีบล็อค If Then ว่างเปล่าที่มีพารามิเตอร์บูลีนของบล็อค Color Sensing ที่เขียนว่า 'Front Eye detects red ?'
  • เปลี่ยนพารามิเตอร์ของ <Color sensing> บล็อกเป็น ‘สีเขียว’

    VEXcode VR บล็อกโครงการที่ใช้คำสั่ง if เพื่อตรวจจับดิสก์สีเขียว มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นอ่านบล็อกความคิดเห็น 'ถ้าตาด้านหน้าตรวจพบสีเขียวแล้วเลี้ยวขวา' สุดท้ายมีบล็อค If Then ว่างเปล่าที่มีพารามิเตอร์บูลีนของบล็อค Color Sensing ที่เขียนว่า 'Front Eye detects green ?' เมนูแบบเลื่อนลงสีจะเปิดขึ้นเพื่อเปลี่ยนสีจากสีแดงเป็นสีเขียว
  • เมื่อเซ็นเซอร์ตรวจจับดวงตาด้านหน้าตรวจพบดิสก์สีเขียวหุ่นยนต์ VR จะต้องเลี้ยวขวา 90 องศาเพื่อเริ่มแก้ปัญหาเขาวงกตดิสก์ ลากบล็อค [Turn for] ลงในบล็อค [If then]

    VEXcode VR จะบล็อกโครงการที่ใช้คำสั่ง if เพื่อตรวจจับดิสก์สีเขียวแล้วเลี้ยวขวา มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นอ่านบล็อกความคิดเห็น 'ถ้าตาด้านหน้าตรวจพบสีเขียวแล้วเลี้ยวขวา' สุดท้ายมีบล็อค If Then ที่มีพารามิเตอร์บูลีนของบล็อค Color Sensing ที่เขียนว่า 'ตาด้านหน้าตรวจจับสีเขียว ?' และเลี้ยวขวาสำหรับบล็อค 90 องศาภายในภาชนะบรรจุ If ที่จะทริกเกอร์ถ้าบูลีนเป็นจริง
  • ทำตามขั้นตอนเดียวกันนี้เพื่อเพิ่มบล็อก [If then] สำหรับทั้งสามสีใน Disk Maze (สีเขียวสีฟ้าและสีแดง) แต่ละสีมีความสัมพันธ์กับพฤติกรรมที่แตกต่างกัน บล็อกภายในบล็อก [If then] จะต้องตรงกับพฤติกรรมที่ตั้งใจไว้ เพิ่มบล็อกต่อไปนี้ในโครงการ เมื่อหุ่นยนต์ VR ตรวจพบสี ‘น้ำเงิน’ หุ่นยนต์ VR จะเลี้ยวซ้าย 90 องศา

    VEXcode VR เดียวกันจะบล็อกโปรเจกต์จากก่อนหน้านี้แต่จะมีการเพิ่มหากข้อความให้เลี้ยวซ้ายหากมีดิสก์สีน้ำเงิน มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นจะมีบล็อก If Then ที่มีพารามิเตอร์บูลีนของบล็อกการตรวจจับสีที่เขียนว่า 'ตาด้านหน้าตรวจจับสีเขียว ?' และเลี้ยวขวาสำหรับบล็อก 90 องศาภายในภาชนะบรรจุ If สุดท้ายมีเหมือนกันถ้าบล็อกและหมุนบล็อกสแต็คแต่เปลี่ยนเป็นเลี้ยวซ้ายเป็น 90 องศาถ้าตรวจพบสีฟ้า
  • เมื่อหุ่นยนต์ VR ถึงจุดสิ้นสุดของเขาวงกตหุ่นยนต์ VR จะตรวจจับสี ‘สีแดง’

    หุ่นยนต์ VR ในสนามเด็กเล่น VR Disk Maze หุ่นยนต์จะหยุดทำงานและมองไปที่ดิสก์สีแดง
  • ในการหยุดหุ่นยนต์ VR จำเป็นต้องเพิ่มบล็อค [If then] อื่นพร้อมคำแนะนำสำหรับสิ่งที่ต้องทำเมื่อหุ่นยนต์ VR ตรวจพบ ‘สีแดง’ เพิ่มบล็อกต่อไปนี้ในโครงการ

    VEXcode VR เดียวกันจะบล็อกโปรเจกต์ตั้งแต่ก่อนหน้านี้แต่จะเพิ่มคำสั่งว่าให้หยุดขับรถหากมีดิสก์สีแดง มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นจะมีบล็อก If Then ที่มีพารามิเตอร์บูลีนของบล็อกการตรวจจับสีที่เขียนว่า 'ตาด้านหน้าตรวจจับสีเขียว ?' และเลี้ยวขวาสำหรับบล็อก 90 องศาภายในภาชนะบรรจุ If ถัดไปมีเหมือนกันถ้าบล็อกและหมุนบล็อกสแต็คแต่เปลี่ยนเป็นเลี้ยวซ้ายเป็น 90 องศาถ้าตรวจพบสีฟ้า สุดท้ายหากมีการใช้ block และ turn block stack เหมือนกันแต่เปลี่ยนเป็น Stop Driving หากตรวจพบสีแดง
  • หุ่นยนต์ VR ยังสามารถตัดสินใจได้หากไม่เห็นสีโดยใช้ค่า ‘ไม่มี’ ที่จุดเริ่มต้นของเขาวงกตดิสก์หุ่นยนต์ VR จะไม่ตรวจจับสีใดๆ

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

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

    VEXcode VR เดียวกันจะบล็อกโปรเจกต์จากก่อนหน้านี้แต่จะมีการเพิ่มหากคำสั่งให้ขับเคลื่อนไปข้างหน้าหากไม่มีการตรวจพบดิสก์ มันเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นและจากนั้นจะมีบล็อก If Then ที่มีพารามิเตอร์บูลีนของบล็อกการตรวจจับสีที่เขียนว่า 'ตาด้านหน้าตรวจจับสีเขียว ?' และเลี้ยวขวาสำหรับบล็อก 90 องศาภายในภาชนะบรรจุ If ถัดไปมีเหมือนกันถ้าบล็อกและหมุนบล็อกสแต็คแต่เปลี่ยนเป็นเลี้ยวซ้ายเป็น 90 องศาถ้าตรวจพบสีฟ้า ถัดไปเช่นเดียวกันหากมีการใช้ block และ turn block stack แต่เปลี่ยนเป็น Stop Driving หากตรวจพบสีแดง สุดท้ายนี้หากใช้ block และ turn block stack เหมือนกันแต่เปลี่ยนเป็น Drive Forward หากตรวจไม่พบสี
  • ตอนนี้หุ่นยนต์ VR มีคำแนะนำสำหรับแต่ละสีที่ตรวจพบโดยเซ็นเซอร์ตาแล้ว
    • เซนเซอร์ตรวจจับดวงตาด้านหน้าตรวจจับ ‘สีเขียว ?'
      • เลี้ยวขวา 90 องศา
    • เซนเซอร์ตรวจจับดวงตาด้านหน้าตรวจจับ ‘สีน้ำเงิน ?'
      • เลี้ยวซ้าย 90 องศา
    • เซนเซอร์ตรวจจับดวงตาด้านหน้าตรวจจับ ‘สีแดง ?'
      • หยุดขับรถ
    • เซนเซอร์ตรวจจับดวงตาด้านหน้าตรวจจับ ‘ไม่มี ?'
      • ขับไปข้างหน้า
  • เปิด Disk Maze Playground และเรียกใช้โครงการ

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