Maqueen LITE ตอนที่ 3

จากตอนก่อนหน้านี้ ได้รู้จักกับหุ่นยนต์ Maqueen LITE กันพอสมควร ตอนนี้เริ่มเข้าสู่โหมดจริงจังกันสักหน่อย

ตัวอย่างที่ 1 สวิตช์ A B สั่งหุ่นยนต์เดินหน้าถอยหลัง

https://makecode.microbit.org/_1xJhj2A2WRda

การทำงาน

เพื่อให้สะดวกในการกดปุ่ม Button A และ Button B ให้ถอดโมดูลอัลตร้าโซนิกออกก่อน

เมื่อกดปุ่ม Button A ให้หุ่นยนต์เคลื่อนที่ไปด้านหน้า 2 วินาทีแล้วหยุด

เมื่อกดปุ่ม Button B ให้หุ่นยนต์เคลื่อนที่ถอยหลัง 2 วินาทีแล้วหยุด

ตัวอย่างที่ 2 micro Maqueen Lite เคลื่อนที่เป็นวงกลม

ความเร็วของมอเตอร์มีค่าระหว่าง 0-255 การปรับค่าความเร็วของมอเตอร์ 1 และ 2 ต่างกันทำให้หุ่นยนต์เคลื่อนที่ไปด้านที่มีความเร็วน้อยกว่า สร้างเป็นการเคลื่อนที่แบบวงกลมได้



https://makecode.microbit.org/_cwDc14Tm0FW2

การทำงาน

เมื่อกด Button A มอเตอร์ซ้ายเร็วกว่ามอเตอร์ขวา หุ่นยนต์จะเคลื่อนที่เป็นวงกลมทางขวา

เมื่อกด Button B มอเตอร์ซ้ายช้ากว่ามอเตอร์ขวา หุ่นยนต์จะเคลื่อนที่เป็นวงกลมทางซ้าย

เมื่อกดทั้ง Button A และ Button B พร้อมกัน จะสั่งให้หุ่นยนต์หยุด

 

ตัวอย่างที่ 3 หุ่นยนต์เคลื่อนที่เป็นเลข 8

https://makecode.microbit.org/_JqqgYTJorLHt

การทำงาน

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

โมดูลวัดระยะทางอัลตร้าโซนิก HC-SR04

เป็นโมดูลวัดระยะทางที่ใช้หลักการสะท้อนของคลื่นอัลตร้าโซนิก โดยตัว HC-SR04 มีแหล่งกำเนิดคลื่นอัลตร้าโซนิก (T) ส่งไปกระทบวัตถุด้านหน้าและสะท้อนกลับมายังตัวรับ (R) โดยระยะทางที่วัดได้จะสัมพันธ์กับระยะเวลาที่คลื่นอัลตร้าโซนิกเคลื่อนที่ไปกระทบวัตถุและสะท้อนกลับมายังตัวรับ เมื่อรู้ระยะเวลาที่คลื่นอัลตร้าโซนิกสะท้อนกลับมา จึงนำมาคำนวณหาเป็นระยะทางระหว่างโมดูล HC-SR04 กับวัตถุได้ โดยโมดูล HC-SR04 วัดระยะทางในช่วง 2 ถึง 500 ซม. (5 เมตร) มีความละเอียดอยู่ที่ 0.3 ซม.

หุ่นยนต์ micro Maqueen Lite เตรียมจุดเชื่อมต่อแบบ 4 ขาสำหรับเชื่อมต่อโมดูลอัลตร้าโซนิก HC-SR04 พร้อมทั้งมีโมดูลมาให้ในชุด สามารถเสียบโมดูลให้หันตัวเซนเซอร์ทั้งตัวรับและตัวส่งออกด้านนอกดังรูป

ชุดคำสั่งสำหรับอ่านค่าระยะทาง

บล็อกคำสั่ง read ultrasonic sensor จะคืนค่าระยะทางที่อ่านได้จากตัวเซนเซอร์หน่วยเป็นเซนติเมตรออกมา

ตัวอย่างที่ 4 อ่านค่าแสดงผลที่ LED 5×5

อ่านค่าจากอัลตร้าโซนิกด้วยคำสั่ง read ultrasonic sensor cm

หมายเหตุ

โมดูลอัลตร้าโซนิก HC-SR04 ทำงานจากแรงดันไฟเลี้ยงบนหุ่นยนต์ micro Maqueen ดังนั้นจะต้องจ่ายไฟให้กับตัวหุ่นยนต์ด้วย

การทำงาน

นำค่าระยะทางที่อ่านได้จากโมดูลอัลตร้าโซนิกเทียบกับตัววัตถุที่สะท้อนได้ในหน่วยเซนติเมตร แสดงผลที่ LED 5×5 โดยแสดงเป็นเลขจำนวนเต็ม

ตัวอย่างที่ 5 หยุดการเคลื่อนที่หุ่นยนต์เมื่อพบวัตถุ

https://makecode.microbit.org/_Pyq9R5cbeC6W

การทำงาน

เมื่อกดปุ่ม Button A แล้วให้ตรวจสอบอัลตร้าโซนิกว่าระยะทางที่ตรวจวัดด้านหน้ามีค่าน้อยกว่า 5 CM หรือไม่ ถ้าน้อยกว่าให้หุ่นยนต์หยุดพร้อมส่งเสียง ไม่เช่นนั้นให้หุ่นยนต์เคลื่อนที่ต่อไป

ตัวอย่างที่ 6 เคลื่อนที่ในเขาวงกตอย่างง่าย เลี้ยวซ้ายเมื่อพบสิ่งกีดขวาง

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

https://makecode.microbit.org/_hC0PfgEaAga2

การทำงาน

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

@kritsadajx2

micro Maqueen Lite Simple Maze with HC-SR04 Sensor เคลื่อนที่ในเขาวงกตอย่างง่าย (doc.inex.co.th)

♬ เสียงต้นฉบับ – KRITSADA JAIYEN – KRITSADA JAIYEN

ปัญหาที่พบ
เมื่อหุ่นยนต์มีการเลี้ยวหลายครั้ง จะเกิดความผิดพลาดมากขึ้นเรื่อยๆ จนในที่สุดไม่สามารถเดินออกจากเขาวงกตได้

ตัวอย่างที่ 7 เคลื่อนที่ในเขาวงกตอย่างง่าย เพิ่มการถอยหลังตั้งตัวเพื่อลดข้อผิดพลาดขณะเลี้ยว

ปรับจากตัวอย่างที่ 6 โดยก่อนที่จะเคลื่อนที่ต่อไปให้ถอยหลังชนกำแพงก่อน เพื่อตั้งให้ตัวตรง

https://makecode.microbit.org/_0kLiohh2oXFi

การทำงาน

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

 

@kritsadajx2micro Maqueen Lite ถอยหลังเพื่อตั้งตัวให้เดินได้แม่นยำขึ้น♬ เสียงต้นฉบับ – KRITSADA JAIYEN

ตัวอย่างที่ 8 เคลื่อนที่ในเขาวงกต แบบทราบเส้นทางล่วงหน้า

จากเส้นทางในรูป หุ่นยนต์จะต้องเคลื่อนที่ทั้งเลี้ยวซ้ายและขวา ไปตามเส้นทาง จึงต้องยุบรวมคำสั่งก่อนหน้านี้ให้อยู่ในรูปของฟังก์ชั่นและเรียกใช้งาน เมื่อต้องเลี้ยวซ้ายหรือขวา

https://makecode.microbit.org/_EgoDoFfyp9ri

การทำงาน

จากส่วน forever วนทำซ้าของโปรแกรมก่อนหน้านี้ นำมาเขียนเป็นฟังก์ชั่นชื่อ Turn เป็นฟังก์ชั่นที่มีการส่งค่า โดยใช้ตัวแปร direction ค่าที่ใช้รับมี 2 ค่าคือ Left
และ Right เพื่อกำหนดทิศทางการเลี้ยวของฟังก์ชั่น ภายในฟังก์ชั่นขณะที่ค่าจากอัลตร้าโซนิกมีค่ามากกว่า 5 เซนติเมตร จะให้หุ่นยนต์เคลื่อนที่ตรงไปข้างหน้าเรื่อยๆ จนกว่าค่าจะน้อยกว่า 5 เซนติเมตร จะให้หุ่นยนต์หยุดและส่งเสียง จากนั้นตรวจสอบตัวแปร direction ว่าค่าทิศทางในการเลี้ยวต้องการให้เลี้ยวซ้ายหรือขวา ก็สั่งให้หุ่นยนต์เลี้ยวในทิศทางนั้น เมื่อเลี้ยวเสร็จก็สั่งหุ่นยนต์ถอยหลังตั้งตัวตรงเหมือนตัวอย่างก่อนหน้านี้

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

@kritsadajx2micro Maqueen Lite เคลื่อนที่ในเขา แบบทราบเส้นทางล่วงหน้า♬ เสียงต้นฉบับ – KRITSADA JAIYEN

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

Facebook Comments Box