Gamepad:BIT ควบคุม micro:Maqueen Lite

ด้วยรูปทรงของ Gamepad:BIT ออกแบบมาเพื่อเป็นรีโมตคอนโทรล ทั้งจอยสติ๊กที่อยู่ซ้ายมือและสวิตช์ควบคุม 4 ทิศทางทางด้านขวามือ

จากคุณสมบัติสื่อสารไร้สายด้วยชุดคำสั่ง Radio ในตอนนี้จะนำ Gamepad:BIT มาทดลองควบคุม micro:Maqueen Lite หุ่นยนต์ micro:bit ตัวเล็กๆกัน

การสื่อสารไร้สายด้วย Radio

ภายในตัวชิปประมวลผลหลักของ micro:bit
จะมีโมดูลสื่อสารคลื่นวิทยุความถี่ 2.4 GHz อยู่ซึ่งยอมให้เรารับส่งข้อมูลได้ ที่ระยะทางสูงสุดประมาณ 70 เมตร ซึ่งเมื่อเขียนโปรแกรมด้วย MakeCode ก็สามารถใช้ชุดคำสั่งในหัวข้อ Radio เพื่อสื่อสารข้อมูลได้อย่างง่ายดาย

ชุดคำสั่งในหัวข้อ Radio

ตัวอย่างที่ 1 Gamepad:BIT ควบคุมการเคลื่อนที่ micro:Maqueen Lite

ภาคส่ง Gamepad:BIT

จากการใช้งาน Gamepad:BIT ตอนที่ 1 ให้ทำการติดตั้ง Extension
GamepadBIT ให้เรียบร้อย

จากนั้นก็เริ่มลงมือเขียนโค้ดภาคส่ง สำหรับค่าของ JoyStick Center ถ้าทดสอบใช้งานแล้วไม่มีปัญหา ก็ใช้ค่าดั้งเดิมคือ 730 ได้ แต่ถ้าพบว่าเลื่อนลง หรือเลื่อนซ้ายขวาไม่ได้ให้เพิ่มค่าเป็น 800-900 ครับ

https://makecode.microbit.org/_hkWd9aU4e9Jd

การทำงาน

เพื่อให้ภาครับและส่ง มี ID ของกลุ่มที่ตรงกัน จึงต้องกำหนด Group ไว้ก่อน ในที่นี้กำหนดไว้เท่ากับ 1 จากนั้นใน forever จะตรวจสอบการกดสวิตช์จอยสติ๊ก 4 ทิศทาง ซึ่งจะให้ผลลัพธ์เป็น ขึ้น ลง ซ้าย และ ขวา โดยเมื่อกดแล้วให้ส่งค่าตัวเลขออกไป ถ้าไม่กดจะไปตรงกับเงื่อนไข else ให้ส่งค่าเลข 0 ออกไป

ภาครับ micro:Maqueen Lite

สำหรับ micro:Maqueen Lite จะต้องทำการติดตั้ง Extension
Maqueen เช่นเดียวกัน โดยดูวิธีการได้จาก หุ่นยนต์ micro:Maqueen Lite

https://makecode.microbit.org/_VW8F3HegHThF

การทำงาน

เมื่อเกิดเหตุการณ์ข้อมูลถูกส่งมาเป็นตัวเลข จะกระตุ้นให้ on radio received receivedNumber ทำงาน ซึ่งค่า receivedNumber เป็นค่าข้อมูลที่ถูกส่งมา โดยถ้าเลขตรงกับค่า 1-4 แสดงว่าเป็นการขับเคลื่อนหุ่นยนต์ เดินหน้า
ถอยหลัง เลี้ยวซ้าย เลี้ยวขวา แต่ถ้าเป็นค่านอกเหนือจากนี้จะสั่งให้หุ่นยนต์หยุด สำหรับการเลี้ยวจะใช้ค่าความเร็ว 100 เท่านั้น เนื่องจากถ้าค่ามากไป การควบคุมขณะเลี้ยวจะทำได้ยาก

ผลการทำงานของทั้งภาครับและภาคส่ง

ตัวอย่างที่ 2 ใช้สวิตช์ B1-B4 บน Gamepad:BIT ควบคุม LED RGB บน micro:Maqueen Lite

การกดสวิตช์เปลี่ยนสีของ LED RGB จะไม่ได้เกิดขึ้นบ่อยนัก ในที่นี้จะใช้บล็อก every 200 ms ซึ่งจะเรียกใช้งานทุกๆ 0.2 วินาที มาตรวจสอบการกดสวิตช์ B1-B4 โดยการส่งข้อมูลจะเปลี่ยนเป็นการส่งตัวอักษรดูบ้าง

ภาคส่ง Gamepad:BIT

https://makecode.microbit.org/_g84co1UFYUrP

การทำงาน

ที่ on start เพื่อให้ LED RGB บนตัว Gamepad:BIT ติดสว่างเช่นเดียวกับภาครับ micro:Maqueen Lite จึงต้องปิดการทำงานของ LED 5×5 บนบอร์ด micro:bit ด้วยคำสั่ง led enable
false จากนั้นกำหนดความสว่างของ LED
RGB ให้มีค่าเท่ากับ 50 เพื่อความสบายตา

ในส่วน every 200 ms ซึ่งจะถูกเรียกให้ทำงานทุกๆ 0.2 วินาที จะตรวจสอบการกดสวิตช์ ถ้าสวิตช์ B1-B4 ถูกกด จะให้ LED RGB บนตัว Gamepad:BIT ติดด้วยสีเดียวกับปุ่ม B1-B4 พร้อมทั้งส่งข้อมูลออกอากาศในรูปแบบของข้อความออกไปด้วย

ภาครับ micro:Maqueen Lite

https://makecode.microbit.org/_3AbAkFMeLK2b

การทำงาน

สำหรับภาครับเป็นการเพิ่มเติมจากตัวอย่างที่ 1 เช่นเดียวกับภาคส่ง ซึ่งจะต้องเพิ่ม Extension Neopixel เข้ามาใช้งานในโปรแกรมด้วย เมื่อเกิดเหตุการณ์ on received receivedString ข้อความที่ถูกส่งมา จะเก็บไว้ในตัวแปรชื่อ receivedString จะต้องนำมาเปรียบเทียบว่าตรงกับค่าที่กำหนดไว้หรือไม่ จากนั้นให้ LED RGB บนหุ่นยนต์ micro:Maqueen Lite ติดตามสีที่ระบุ

ข้อสังเกต

คำสั่งที่ใช้ในการเปรียบเทียบข้อความจะเป็นคนละคำสั่งกับที่ใช้เปรียบเทียบตัวเลข ขณะที่ลากบล็อกต้องพิจารณาให้ดี

ตัวอย่างที่ 3 การส่งค่ากลับเพื่อรับทราบข้อมูล

ตัวอย่างนี้จะให้หุ่นยนต์ micro:Maqueen Lite เคลื่อนที่ไปยังตำแหน่งต่างๆ แล้วเมื่อกดสวิตช์ B1 (สวิตช์สีแดง) ที่ Gamepad:BIT จะส่งค่าระยะทางจากโมดูลอัลตร้าโซนิก
HC-SR04 กลับมา แสดงที่ LED 5×5 ของ Gamepad:BIT

ภาคส่ง Gamepad:BIT

https://makecode.microbit.org/_RjeKrJJEA5Ad

การทำงาน

เพิ่มเติมจากตัวอย่างที่ 1 คือเมื่อกดสวิตช์ B1 ให้ส่งข้อความออกอากาศ ด้วยคำว่า “ULTRASONIC” ออกไป และเพิ่มส่วนเหตุการณ์ การรับข้อมูล เมื่อมีการส่งข้อมูลในรูปแบบของข้อความและตัวเลข on radio received name value

โดยเมื่อรับข้อมูลได้แล้ว ตรวจสอบว่าข้อมูลที่ส่งมามีข้อความเป็น “SONAR” หรือไม่ ถ้าใช่ให้เอา Value ซึ่งเป็นค่าระยะทางที่อ่านได้แสดงผลที่ LED 5×5

ข้อสังเกต

หลังจากส่งคำสั่ง radio send string “ULTRASONIC” แล้วจะต้องตามด้วยการหน่วงเวลา 0.2 วินาที ไม่เช่นนั้น เมื่อกดสวิตช์ 1 ครั้งข้อมูลจะถูกส่งออกไปรัวๆ แทนที่จะส่งออกไปเพียงครั้งเดียวอย่างที่เราต้องการ

ภาครับ micro:Maqueen Lite

https://makecode.microbit.org/_PJwXR7A91Ypf

การทำงาน

สำหรับโค้ดของส่วน micro:Maqueen Lite จะเพิ่ม การรับค่าข้อมูล String (on radio received receivedString) โดยจะตรวจสอบข้อมูลที่ส่งมาว่าใช่คำว่า “ULTRASONIC” หรือไม่ ถ้าใช่จะส่งข้อมูลกลับในรูปแบบ ข้อความและตัวเลข โดยข้อความจะเป็นคำว่า “SONAR” ส่วนตัวเลขจะเป็นค่าของอัลตร้าโซนิกที่อ่านได้หน่วยเป็นเซนติเมตร

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

Facebook Comments Box