Skip to main content

บทเรียนที่ 2: การใช้บล็อกเปรียบเทียบและการขับรถจนเข้าใกล้

ในบทเรียนนี้คุณจะสร้างโครงการที่นำทางหุ่นยนต์ VR ไปยังตัวอักษร ‘A‘ โดยใช้เซ็นเซอร์ระยะทางที่มีบล็อกตัวรายงาน <Less than> บูลีน ในการประลองมินิคุณจะใช้ทักษะเหล่านี้เพื่อนำทางจากจุดเริ่มต้นของเขาวงกตกำแพงไปยังหมายเลข '1'

มุมมองจากบนลงล่างของเขาวงกตผนังที่มีตัวอักษร A เป้าหมายเน้นในกล่องสีแดงใกล้กับตำแหน่งเริ่มต้นของหุ่นยนต์ VR

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

  • ระบุว่า <Greater than> บล็อกเป็นบล็อกบูลีนที่รายงานว่าค่าแรกมากกว่าค่าที่สองหรือไม่
  • ระบุว่า <Less than> บล็อกเป็นบล็อกบูลีนที่รายงานว่าค่าแรกน้อยกว่าค่าที่สองหรือไม่
  • ระบุว่า <Greater than> หรือ <Less than> บล็อกรายงานค่าที่เป็นจริงหรือเท็จในบล็อก [รอจนกว่า]
  • อธิบายวิธีสร้างโครงการที่มี VR Robot ขับเคลื่อนไปข้างหน้าจนกว่าค่าของเซ็นเซอร์ระยะทางจะน้อยกว่าค่าเกณฑ์ 50 มิลลิเมตร (มม.)

ตั้งชื่อและบันทึกโครงการ

  • เริ่มโครงการใหม่ใน VEXcode VR และตั้งชื่อ โครงการUnit5Lesson2 โปรดทราบว่าคุณอาจใช้บล็อก VEXcode สลับบล็อกหรือบล็อกทั้งสองประเภทรวมกันสำหรับโปรเจกต์ของคุณ 
แถบเครื่องมือ VEXcode VR ที่มีปุ่ม 'ชื่อโครงการ' ที่เน้นในช่องสีแดงทางด้านซ้ายของปุ่มเลือกสนามเด็กเล่น ชื่อโครงการถูกตั้งค่าเป็นหน่วยที่ 5 บทเรียนที่ 2

ใช้เซ็นเซอร์ระยะทางเพื่อหลีกเลี่ยงกำแพง

  • ลากบล็อค [Drive] ไปยังพื้นที่ทำงาน
    VEXcode VR บล็อกโครงการเริ่มต้นด้วยบล็อกเมื่อเริ่มต้นด้วยบล็อก Drive Forward ด้านล่าง มีกล่องสีแดงไฮไลท์บล็อก Drive Forward
  • ติดบล็อค [รอจนกว่า] ใต้บล็อค [ไดรฟ์]
    VEXcode VR บล็อกโปรเจกต์เหมือนเดิมแต่ตอนนี้มีบล็อก Wait Until ที่ด้านล่างเน้นด้วยกล่องสีแดง โปรเจกต์เต็มรูปแบบจะมีข้อความ When Started, Drive Forward and Wait Until พารามิเตอร์รอจนกว่าบล็อกจะว่างเปล่า

โครงการนี้จะใช้เซ็นเซอร์ระยะทางเพื่อนำทางผ่าน Wall Maze Playground โดยไม่ชนกับผนัง คุณจะใช้บล็อก (ระยะห่างจาก) ภายในบล็อก <Less than> บูลีนในโครงการนี้

บล็อก <Less than>การเปรียบเทียบ <Greater than>, และ <Equal to> เป็นบล็อกการเปรียบเทียบค่า พวกเขายังเป็นบล็อกนักข่าวบูลีนที่รายงานค่าที่แท้จริงเมื่อตรงตามเงื่อนไขการเปรียบเทียบและเป็นเท็จเมื่อ ไม่ ตรงตามเงื่อนไข

  • <Less than> รายงาน TRUE เมื่อค่าที่หนึ่งน้อยกว่าค่าที่สองและ FALSE เมื่อค่าที่หนึ่งมากกว่าหรือเท่ากับค่าที่สอง
    VEXcode VR น้อยกว่าบล็อกบูลีนอ่าน '25 น้อยกว่า 50'
  • <Greater than> รายงาน TRUE เมื่อค่าที่หนึ่งมากกว่าค่าที่สองและ FALSE เมื่อค่าที่หนึ่งน้อยกว่าหรือเท่ากับค่าที่สอง
    VEXcode VR บล็อกบูลีนที่ยิ่งใหญ่กว่าการอ่าน '100 มากกว่า 50'
  • <Equal to> รายงานเป็นจริงเมื่อค่าทั้งสองเหมือนกันทุกประการและเป็นเท็จเมื่อไม่เหมือนกัน
    VEXcode VR เท่ากับบล็อกบูลีนให้อ่าน '50 เท่ากับ 50'

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

ในตัวอย่างนี้บล็อกจะรายงานความจริงเมื่อระยะห่างจากวัตถุและเซ็นเซอร์ระยะทางบนหุ่นยนต์ VR น้อยกว่า 50 มิลลิเมตร (มม.)

VEXcode VR น้อยกว่าบล็อกบูลีนที่มีระยะห่างจากบล็อกด้านในอ่าน 'ระยะด้านหน้าในหน่วยมิลลิเมตรน้อยกว่า 50'

  • ลากบล็อก <Less than> บูลีนไปยังบล็อก [รอจนกว่า]
  • วางบล็อกกลม (ระยะห่างจาก) ภายในบล็อกบูลีนรีพอร์เตอร์
    โครงการ VEXcode VR Blocks ที่รวบรวมขั้นตอนก่อนหน้า ตอนนี้ทั้งโครงการอ่านว่าเมื่อเริ่มต้นขับรถไปข้างหน้าและรอจนกว่าระยะทางด้านหน้าจะเป็นมิลลิเมตรน้อยกว่า 50 กล่องสีแดงเน้นบล็อกบูลีนน้อยกว่า
  • บล็อก [รอจนกว่า] จะทำให้หุ่นยนต์ VR เคลื่อนที่ไปข้างหน้าจนกว่าจะตรงตามเงื่อนไขและระยะทางที่รายงานน้อยกว่า 50 มิลลิเมตร (มม.) จากนั้นโครงการจะย้ายไปยังบล็อกถัดไปในสแต็กซึ่งจะเป็นบล็อก [หยุดขับรถ]
    แผนภาพแสดงการไหลของตรรกะในโครงการ VEXcode VR Blocks โครงการเริ่มต้นด้วยการขับรถไปข้างหน้าและถือคำสั่งนั้นไว้จนกว่าระยะทางของเซ็นเซอร์ระยะทางด้านหน้าในหน่วยมิลลิเมตรจะน้อยกว่า 50 หลังจากนั้นบล็อกหยุดการขับขี่จะสิ้นสุดคำสั่ง Drive Forward
  • จำเป็นต้องมีบล็อค [หยุดขับ] หลังจากบล็อค [รอจนกว่า] เพราะหุ่นยนต์ VR จะยังคงขับต่อไปจนกว่าจะได้รับคำสั่งให้หยุด เพิ่มบล็อค [หยุดขับ] ในโปรเจกต์
    VEXcode VR จะบล็อกโปรเจกต์จากเดิมที่มีการเพิ่มบล็อก Stop Driving หลังจากบล็อก Wait Until ตอนนี้ทั้งโครงการอ่านว่าเมื่อเริ่มขับรถไปข้างหน้าและรอจนกว่าระยะทางด้านหน้าจะเป็นมิลลิเมตรน้อยกว่า 50 หลังจากนั้นหยุดขับรถ
  • เปิด Wall Maze Playground หากยังไม่ได้เปิดและดำเนินโครงการ
  • ดู VR Robot ขับรถจากจุดเริ่มต้นของ Wall Maze และหยุดเมื่อเซ็นเซอร์ระยะทางรายงานว่าน้อยกว่า 50 มิลลิเมตร (มม.) จากผนัง
    มุมมองจากบนลงล่างของเขาวงกตติดผนังที่มีตัวอักษรเป้าหมาย A อยู่ใกล้กับตำแหน่งเริ่มต้นของหุ่นยนต์ VR ตอนนี้หุ่นยนต์ VR ได้ก้าวไปข้างหน้าแล้วอันเป็นผลมาจากโครงการ BLOCKS
  • ใช้ <Less than> บล็อกที่มีบล็อก (ระยะห่างจาก) ด้านในของบล็อก [รอจนกว่า] สั่งให้หุ่นยนต์ VR รอจนกว่าจะน้อยกว่า 50 มิลลิเมตร (มม.) จากผนังก่อนที่จะหยุด
  • รีเซ็ตสนามเด็กเล่นเพื่อย้ายหุ่นยนต์ VR กลับไปที่ตำแหน่งเริ่มต้น

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

ในบทเรียนนี้ท่านได้เรียนรู้เกี่ยวกับบล็อก <Greater than> <Less than>,, และ <Equal to> บูลีน ภาพด้านล่างแสดงบล็อกเปรียบเทียบ Switch Boolean เพื่อให้ บล็อก Switch Boolean ทำงานได้ตามที่ตั้งใจไว้ฟังก์ชัน Switch Python จะต้องป้อนด้วยการสะกดและเครื่องหมายวรรคตอนที่ถูกต้อง 

โปรดทราบว่า <Equal to> บล็อกสวิตช์ใช้เครื่องหมาย เท่ากับสองตัว (==) เนื่องจากใน Python เครื่องหมายเท่ากับหนึ่งตัว (=) แสดงถึงการกำหนดค่า (ตัวอย่างเช่น x = 10) ในขณะที่เครื่องหมายเท่ากับสองตัว (==) ตรวจสอบว่าค่าสองค่าเท่ากันหรือไม่ ตรวจสอบให้แน่ใจว่าใช้เครื่องหมายเท่ากันสองตัวเมื่อใช้ <Equal to> บล็อกสวิตช์ 
A comparison of three VEXcode VR boolean blocks and their corresponding switch blocks. The Less Than block is written in Python as '25 < 50', the Greater Than block is written in Python as '100 > 50', and the Equal To block is written in Python as '50 == 50'. A red box highlights the double equal signs in the last example, demonstrating how to compare two values as equal in Python.

นอกจากนี้คุณยังเห็นโครงการตัวอย่างที่หุ่นยนต์ VR จะขับเคลื่อนไปข้างหน้าจนกว่าระยะทางที่รายงานจะน้อยกว่า 50 มิลลิเมตร (มม.) จากวัตถุ จากนั้นหุ่นยนต์ VR จะหยุดทำงาน โปรเจกต์ทางด้านขวาแสดงคำสั่ง Python ที่เกี่ยวข้องภายในบล็อกสวิตช์ คำสั่ง ในขณะที่ไม่ใช่ front_distance.get_distance (MM) < 50 บอกให้หุ่นยนต์ตรวจสอบว่าระยะทางที่รายงานน้อยกว่า 50 MM จากวัตถุหรือไม่

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

การเปรียบเทียบโครงการ VEXcode VR ของเรากับบล็อก Wait Until ที่แปลงเป็นบล็อกสวิตช์ทางด้านขวา บล็อกสวิตช์ใหม่อ่านเป็นภาษาไพธอนในขณะที่ไม่ใช่ front_distance.get_distance (MM) < 50: รอ (5, มิลลิวินาที )'

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