บทเรียนที่ 2: ขับรถไปยังตัวอักษร 'A'
การ ใช้เซ็นเซอร์ระยะทางเพื่อหลีกเลี่ยงกำแพง
ตอนนี้คุณได้เรียนรู้เกี่ยวกับตัวดำเนินการเปรียบเทียบคืออะไรและสามารถนำไปใช้ในโครงการได้อย่างไรแล้ว คุณจะนำการเรียนรู้นั้นไปประยุกต์ใช้ในการขับเคลื่อนหุ่นยนต์ VR จนถึงตัวอักษร "A" ใน Wall Maze Playground. โปรเจ็กต์นี้จะใช้เซ็นเซอร์วัดระยะทางเพื่อนำทางผ่าน Wall Maze Playground โดยไม่ชนผนัง
ตั้งชื่อและบันทึกโครงการ
- เริ่มโปรเจกต์ข้อความใหม่และเลือก Wall Maze Playground เมื่อได้รับแจ้ง
- ตั้งชื่อ โครงการUnit5Lesson2
-
ลากพิมพ์หรือคัดลอกลูปสัก พัก แล้วลบคำสั่ง Drivetrain ที่เติมเป็นส่วนหนึ่งของเทมเพลตโปรเจกต์ข้อความใหม่เพื่อให้โปรเจกต์ของคุณเป็นแบบนี้ สังเกตว่าคำสั่งจะเติมคำสั่ง while พร้อมด้วยคำสั่ง wait อยู่ข้างใน ห้ามลบคำสั่ง รอ เพราะจะทำให้ VR Robot ดำเนินการโครงการได้อย่างถูกต้อง
def main (): while condition: wait (5, MSEC)
-
ลาก พิมพ์ หรือคัดลอกคำสั่ง ไดรฟ์ ที่ไม่รอภายในลูป เพื่อให้โปรเจ็กต์ของคุณมีลักษณะดังนี้
def main (): while condition: drivetrain.drive (FORWARD) wait (5, MSEC)
- ตรวจสอบว่าการเยื้องถูกต้องและคำสั่ง drive อยู่ในแนวเดียวกับคำสั่ง wait
เพิ่มฟังก์ชัน get_distance และตัวดำเนินการมากกว่า
- ลากหรือพิมพ์คำสั่ง get_distance ใน 'เงื่อนไข' ของลูป while เพื่อให้โปรเจกต์ของคุณมีลักษณะดังนี้ พิมพ์ตัวดำเนินการมาก กว่าตัวดำเนินการและตัวดำเนินการที่สองเป็น '50
-
def main (): while front_distance.get_distance (MM) > 50: drivetrain.drive (FORWARD) wait (5, MSEC)
-
เพิ่มคำสั่ง stop นอกลูป while เพื่อให้โปรเจ็กต์ของคุณมีลักษณะดังนี้ จำเป็นต้องใช้คำสั่ง หยุด หลังจากวนซ้ำ ในขณะที่ เนื่องจากหุ่นยนต์ VR จะยังคงขับเคลื่อนต่อไปจนกว่าจะได้รับคำสั่งให้หยุด
def main (): while front_distance.get_distance (MM) > 50: drivetrain.drive (FORWARD) wait (5, msec ) drivetrain.stop ()
- เปิดหน้าต่างสนามเด็กเล่นหากยังไม่ ได้เปิดตรวจสอบให้แน่ใจว่า Wall Maze Playground เปิดและดำเนินโครงการ
- ดูหุ่นยนต์ VR ขับเคลื่อนไปข้างหน้า จนกว่าเซ็นเซอร์ระยะทางจะรายงานระยะห่างระหว่างหุ่นยนต์ VR และผนัง ไม่ เกิน 50 มิลลิเมตร (มม.)
- รีเซ็ตสนามเด็กเล่นเพื่อย้ายหุ่นยนต์ VR กลับไปที่ตำแหน่งเริ่มต้น
ดำเนินโครงการต่อเพื่อไปยังตัวอักษร ‘A’
การใช้ตัวดำเนินการที่มากกว่า (>) พร้อมกับคำสั่ง get_distance เป็นเงื่อนไขของลูป while จะสั่งให้หุ่นยนต์ VR ขับเคลื่อนไปข้างหน้าตราบเท่าที่ระยะห่างระหว่างหุ่นยนต์ VR กับผนังมากกว่า 50 มิลลิเมตร (มม.) เมื่อเซ็นเซอร์ระยะทางรายงานระยะห่างจากหุ่นยนต์ VR ไปยังผนังที่ ไม่เกิน 50 มิลลิเมตรหุ่น ยนต์ VR จะหยุดการขับขี่ หากต้องการดำเนินการต่อกับตัวอักษร 'A' หุ่นยนต์ VR จะต้องหมุนเมื่อเข้าใกล้ผนัง
ในการขับไปที่ตัวอักษร ‘A’ หุ่นยนต์ VR จะต้องตรวจจับผนังสองด้านและเลี้ยวซ้ายเมื่อตรวจพบผนังเหล่านี้ จากนั้นหุ่นยนต์ VR จะหยุดทำงานเมื่อตรวจพบกำแพงที่สามซึ่งอยู่ด้านหลังตัวอักษร ‘A’
-
เปลี่ยนคำสั่ง stop ด้วยคำสั่ง turn_for เพื่อให้โปรเจ็กต์ของคุณมีลักษณะดังนี้ จำเป็นต้องใช้คำสั่ง turn_for เนื่องจากเมื่อเซ็นเซอร์วัดระยะห่างอยู่ภายในระยะ 50 มิลลิเมตร (มม.) ของกำแพง หุ่นยนต์ VR จะเลี้ยวซ้ายเพื่อเดินทางต่อไปยังตัวอักษร 'A'
- ตั้งค่าพารามิเตอร์ของเทิร์นเป็น "ซ้าย 90 องศา"
def main (): while front_distance.get_distance (MM) > 50: drivetrain.drive (FORWARD) wait (5, msec) drivetrain.turn_for (LEFT, 90, DEGREES)
- เพิ่มอีก while loop พร้อมกับคำสั่ง drive ไว้ด้านล่างคำสั่ง turn_for กำหนดเงื่อนไขโดยใช้คำสั่ง คือ get_distance เป็นตัวดำเนินการตัวแรก คือตัวดำเนินการมากกว่า และค่าคงที่ '50' เป็นตัวดำเนินการตัวที่สอง
ในขณะที่ front_distance.get_distance (MM) > 50: drivetrain.drive (ไปข้างหน้า) รอ (5, มิลลิวินาที)
- สุดท้ายเพิ่มคำสั่งต่อไปนี้ด้านล่างที่สอง ในขณะที่ วนซ้ำเพื่อสั่งให้หุ่นยนต์ VR ตรวจจับผนังสุดท้ายด้านหลังตัวอักษร ‘A’ จากนั้นหยุดขับรถ ตรวจสอบให้แน่ใจว่าคำสั่ง turn_for และคำสั่ง stop อยู่ภายนอกลูป while ตามลำดับ
drivetrain.turn_for (ซ้าย, 90, องศา) while front_distance.get_distance (MM) > 50 : drivetrain.drive (FORWARD) wait (5, msec ) drivetrain.stop ()
- เปิด Wall Maze Playground หากยังไม่ได้เปิดและดำเนินโครงการ
- ดู VR Robot ขับรถจากจุดเริ่มต้นของ Wall Maze ไปยังตัวอักษร ‘A’ แล้วหยุด
- สังเกตว่าหุ่นยนต์ VR ไม่ชนกับผนังใดๆเนื่องจากมันขับไปที่ตัวอักษร ‘A’ เมื่อค่าเซ็นเซอร์ระยะทางรายงานว่าหุ่นยนต์ VR อยู่ห่างจากผนังไม่เกิน 50 มิลลิเมตร (มม.) หุ่นยนต์ VR จะได้รับคำแนะนำให้เลี้ยวหรือหยุดในโครงการ
เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป