micro:GamePad
micro:GamePad คือบอร์ดขยายที่เปลี่ยน micro:bit ให้เป็นจอยเกมคอนโซลเต็มรูปแบบ มาพร้อมก้านโยกอนาล็อก 3 แกนความแม่นยำสูง ที่ช่วยให้คุณควบคุมทิศทางและความเร็วของหุ่นยนต์ได้อย่างลื่นไหลและละเอียดแม่นยำ บนบอร์ดมีปุ่มกดที่ตั้งโปรแกรมได้อิสระถึง 7 ปุ่ม พร้อมมอเตอร์สั่นและลำโพง เพื่อสร้างประสบการณ์การใช้งานที่สมจริง โดยรวมกล่องแบตเตอรี่ไว้บนแผงวงจรโดยตรง ทำให้สะดวกต่อการถือใช้งาน
มีคุณสมบัติดังนี้
- แหล่งพลังงาน: 3V DC (ใช้ถ่านขนาด AAA จำนวน 2 ก้อน)
- จอยสติ๊ก (Joystick):
- แบบอนาล็อก 2 แกน (แกน X: พิน P1, แกน Y: พิน P2)
- แบบดิจิทัล 1 แกน (แกน Z/การกดปุ่มจอยสติ๊ก: พิน P8)
- ไฟ LED และมอเตอร์สั่นในตัว: เชื่อมต่อผ่านพิน P12
- ปุ่มกด (Keys):
- ปุ่ม A (A), ปุ่ม B (B)
- ปุ่ม C (พิน P13), ปุ่ม D (พิน P14), ปุ่ม E (พิน P15), ปุ่ม F (พิน P16)
- ปุ่ม Z (พิน P8 – กดที่ตัวจอยสติ๊ก)
- ขนาด: 5.83 x 2.24 นิ้ว (หรือ 148 x 57 มิลลิเมตร)
รูปที่ 1 แสดงรายละเอียดของ micro:GamePad
หลักการทำงานของระบบควบคุม
- การควบคุมแบบอนาล็อก (Analog Control): ก้านโยกส่งค่าสัญญาณ 0-1023 ผ่านขา P1 (แกน X) และ P2 (แกน Y) ช่วยให้ควบคุมทิศทางและความเร็วได้ละเอียดตามน้ำหนักการโยก
- การควบคุมแบบดิจิทัล (Digital Control): ประกอบด้วยปุ่มกด 7 ปุ่ม (รวมปุ่มกดใต้ก้านโยกขา P8) ทำงานแบบ Active Low (กดเป็น 0, ปล่อยเป็น 1) โดยปุ่ม X และ Y จะตรงกับปุ่ม A และ B ของ micro:bit
- ระบบตอบสนอง: มีมอเตอร์สั่นในตัวที่ขา P12 สำหรับสร้างการสั่นสะเทือน และลำโพง (Buzzer) ที่ขา P0 สำหรับส่งเสียงประกอบ
- การจัดการพลังงาน: ใช้พลังงานจากถ่าน AAA 2 ก้อน (3V) โดยมีสวิตช์เปิด-ปิดและไฟ LED แสดงสถานะบนบอร์ดโดยตรง
การสื่อสารไร้สายด้วย Radio
ภายในตัวชิปประมวลผลหลักของ micro:bit จะมีโมดูลสื่อสารคลื่นวิทยุความถี่ 2.4 GHz อยู่ซึ่งยอมให้เรารับส่งข้อมูลได้ ที่ระยะทางสูงสุดประมาณ 70 เมตร ซึ่งเมื่อเขียนโปรแกรมด้วย MakeCode ก็สามารถใช้ชุดคำสั่งในหัวข้อ Radio เพื่อสื่อสารข้อมูลได้อย่างง่ายดาย
ชุดคำสั่งในหัวข้อ Radio

รูปที่ 2 แสดงชุดคำสั่งของ Radio
ตัวอย่างที่ 1 ใช้งานปุ่มกด C, D, E, F ควบคุมการเคลื่อนที่ของ Pretty Car ด้วยคำสั่งมอเตอร์โดยตรง
ในตัวอย่างแรกนี้ จะเน้นที่ความเข้าใจพื้นฐานของการส่งและรับสัญญาณวิทยุ โดยเมื่อเรากดปุ่ม(C,D,E,F) ที่รีโมทคอนโทรล micro:GamePad ฝั่งรีโมทจะส่งข้อความ (String) ไปยังหุ่นยนต์ Pretty Car เมื่อหุ่นยนต์ได้รับข้อความนั้น จะสั่งงานมอเตอร์ให้หมุนหรือหยุดทันทีตามเงื่อนไขที่กำหนดไว้
ภาคส่ง micro:GamePad
รูปที่ 3 ใช้งานปุ่ม C, D, E และ F ของ micro:GamePad
ขั้นตอนการใช้งาน
- เปิดเบราว์เซอร์และไปที่ https://makecode.microbit.org/ เพื่อเริ่มเขียนโค้ด
- เตรียม micro:GamePad ให้พร้อมใช้งาน บรรจุถ่านขนาด AAA จำนวน 2 ก้อน
- เชื่อมต่อ micro:bit สำหรับใช้งานกับ micro:GamePad เข้ากับคอมพิวเตอร์ด้วยสาย microUSB เพื่ออัปโหลดโค้ดในรูปที่ 4
- เมื่ออัปโหลดโค้ดแล้ว นำ micro:bit มาเชื่อมต่อกับ micro:GamePad เพื่อทดลองการทำงาน
รูปที่ 4 แสดงโค้ดตัวอย่างที่ 1 ส่วนของภาคส่ง micro:GamePad
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/S24055-98566-38476-65577
อธิบายการทำงาน
โค้ดนี้เป็นโค้ดสำหรับการส่งข้อมูล Radio ไปยัง group ที่กำหนด จะทำงานเมื่อกดปุ่ม C, D, E, และ F โดยแบ่งการทำงานเป็น 2 ส่วนได้แก่
- การตั้งค่า (On Start)
- Radio Group: กำหนดกลุ่มสัญญาณวิทยุให้ตรงกับหุ่นยนต์เพื่อการสื่อสาร
- Pull-up Pins: ตั้งค่าขา P13-P16 เป็น Up เพื่อป้องกันสัญญาณลอยและทำให้ปุ่มทำงานเสถียร
- ตรรกะการทำงาน (Forever) ใช้เงื่อนไข
if...else ifตรวจสอบสถานะ Digital Read ของแต่ละปุ่มเรียงตามลำดับความสำคัญ- เมื่อกดปุ่ม: ส่งข้อความระบุทิศทาง (“Up”, “Down”, “Left”, “Right”) ผ่านวิทยุ.
- เมื่อไม่กด (Release): หากไม่มีปุ่มใดถูกกด จะส่งข้อความ “Release” เพื่อสั่งให้หุ่นยนต์หยุดทันที
ภาครับ Pretty Car

รูปที่ 5 หุ่นยนต์ Pretty Car ในชุด Building:bit Superkit
ขั้นตอนการใช้งาน
- เปิดเบราว์เซอร์ https://makecode.microbit.org/ และสร้างโปรเจคใหม่เพื่อเริ่มเขียนโค้ด
- ติดตั้ง Extention เพิ่มเติมสำหรับใช้งาน Pretty Car ในชุด Building:bit Superkitโดยกดไปที่ Extention
- ในช่อง Search ให้ค้นหา https://github.com/YahboomTechnology/SuperBitLibV2
- จะมี Extention ชื่อว่า SuperBitV2 คลิกเพื่อติดตั้ง Extention ดังรูปที่ 6
- เชื่อมต่อ micro:bit สำหรับใช้งานกับ Pretty Car เข้ากับคอมพิวเตอร์ด้วยสาย microUSB เพื่ออัปโหลดโค้ดในรูปที่ 7
- เมื่ออัปโหลดโค้ดแล้ว นำ micro:bit มาเชื่อมต่อกับ Pretty Car เพื่อทดลองการทำงาน

รูปที่ 6 ติดตั้ง Extention สำหรับสั่งงาน Pretty Car
รูปที่ 7 แสดงโค้ดส่วนของภาครับ Pretty Car
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/S96558-51109-55290-99388
อธิบายการทำงาน
โค้ดนี้เป็นโค้ดสำหรับการรับข้อมูล Radio ไปถูกส่งมายัง group ที่กำหนด เมื่อได้รับข้อความที่ตรงตามเงื่อนไขที่กำหนดไว้ จะสั่งมอเตอร์ให้ทำงาน โดยแบ่งการทำงานเป็น 2 ส่วนได้แก่
- On Start: กำหนด Radio เป็น Group 1 เพื่อให้ตรงกับรีโมท และรับข้อมูลได้
- On Radio Received (เมื่อได้รับข้อความ):
- นำข้อความที่ได้รับ (
receivedString) มาตรวจสอบด้วยเงื่อนไขif...else if - ถ้าข้อความที่ได้เป็น “Up, Down, Left, Right”: สั่งมอเตอร์ M1 และ M3 ให้หุ่นยนต์เคลื่อนที่ เดินหน้า, ถอยหลัง, เลี้ยวซ้าย และเลี้ยวขวา ตามลำดับ
- สถานะอื่นๆ (Else): หากได้รับข้อความอื่น (เช่น “Release”) หุ่นยนต์จะใช้คำสั่ง Motor Stop All เพื่อหยุดการทำงานทันที
- นำข้อความที่ได้รับ (
ผลการทำงานของทั้งภาครับและภาคส่ง
ตัวอย่างที่ 2 ใช้ปุ่มกด A และ B ควบคุมความเร็วของมอเตอร์ พร้อมใช้งานมอเตอร์สั่น
ในตัวอย่างที่ 2 จะเพิ่มคำสั่งสำหรับกำหนดความเร็วของหุ่นยนต์ด้วยการกดปุ่ม A และ B พร้อมใช้งานมอเตอร์สั่น และจะยกระดับการควบคุมให้มีประสิทธิภาพมากขึ้น โดยใช้ตัวแปรกลางเป็นตัวรับคำสั่งจากปุ่มกด แล้วนำไปคำนวณเพื่อสั่งงานมอเตอร์ในจุดเดียว
ภาคส่ง micro:GamePad
รูปที่ 8 ตำแหน่งปุ่มกด A, B และมอเตอร์สั่น
ขั้นตอนการใช้งาน
- ไปที่ https://makecode.microbit.org/ สร้างโปรเจคใหม่ หรือแก้ไขจากตัวอย่างที่ 1 ส่วนของภาคส่ง micro:GamePad
- เชื่อมต่อ micro:bit สำหรับใช้งานกับ micro:GamePad เข้ากับคอมพิวเตอร์ด้วยสาย microUSB เพื่ออัปโหลดโค้ดในรูปที่ 9
- เมื่ออัปโหลดโค้ดแล้ว นำ micro:bit มาเชื่อมต่อกับ micro:GamePad เพื่อทดลองการทำงาน
รูปที่ 9 แสดงโค้ดตัวอย่างที่ 2 ส่วนของภาคส่ง micro:GamePad
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/_MLtPKhaF3Yc3
อธิบายการทำงาน
โค้ดนี้ทำหน้าที่ส่ง “ข้อความทิศทาง” และส่ง “สถานะปุ่ม A/B” พร้อมทั้งคอยรับค่า “Data” กลับมาเพื่อแสดงระดับความเร็วในตัว โดยจะแบ่งการทำงานเป็น 4 ส่วน ดังนี้
- On Radio Received: เมื่อได้รับข้อมูลที่มีชื่อว่า “Data” จะกำหนดให้ตัวแปร Speed มีค่าเท่ากับ value (ค่าที่ถูกส่งมาพร้อมกัน)
- On Start: ส่วนการตั้งค่าเริ่มต้น
- Radio Group: กำหนดกลุ่มสัญญาณวิทยุให้ตรงกับหุ่นยนต์เพื่อการสื่อสาร
- Pull-up Pins: ตั้งค่าขา P13-P16 เป็น Up เพื่อป้องกันสัญญาณลอยและทำให้ปุ่มทำงานเสถียร
- Forever: การทำงานต่อเนื่อง ใช้เงื่อนไข
if...else ifตรวจสอบสถานะ Digital Read ของแต่ละปุ่มเรียงตามลำดับความสำคัญ- Plot bar graph of Speed: แสดงแถบกราฟบนหน้าจอ LED ของ micro:bit เพื่อบอกระดับความเร็วปัจจุบัน (สูงสุดที่ 255)
- if digital Read: เมื่อกดปุ่มจะส่งข้อความระบุทิศทาง (“Up“, “Down“, “Left“, “Right“) ผ่านวิทยุ
- else: เมื่อไม่กดปุ่มจะส่งข้อความ “Release”
- Every 200 ms:เป็นการแยกมาตรวจสอบปุ่ม A และ B ทุกๆ 0.2 วินาที
- if button A: ส่งตัวเลข 0 ผ่านวิทยุ และสั่งให้ขา P12 เป็น High (1) เพื่อเปิดไฟ LED และมอเตอร์สั่นทำงาน
- if button B: ส่งตัวเลข 1 ผ่านวิทยุ และสั่งให้ขา P12 เป็น High (1) เช่นกัน
- Else: ถ้าไม่ได้กดทั้ง A และ B ให้สั่งขา P12 เป็น Low (0)
ภาครับ Pretty Car
ขั้นตอนการใช้งาน
- ไปที่ https://makecode.microbit.org/ สร้างโปรเจคใหม่ หรือแก้ไขจาก ตัวอย่างที่ 1 ส่วนของภาครับ Pretty Car
- ตรวจสอบการติดตั้ง Extention SuperBitV2 สำหรับใช้งาน Pretty Car ในชุด Building:bit Superkit
- เชื่อมต่อ micro:bit สำหรับใช้งานกับ micro:GamePad เข้ากับคอมพิวเตอร์ด้วยสาย microUSB เพื่ออัปโหลดโค้ดในรูปที่ 10
- เมื่ออัปโหลดโค้ดแล้ว นำ micro:bit มาเชื่อมต่อกับ Pretty Car เพื่อทดลองการทำงาน
รูปที่ 10 แสดงโค้ดตัวอย่างที่ 2 ส่วนของภาครับ Pretty Car
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/_12kCw5aKMJRm
อธิบายการทำงาน
โค้ดนี้ทำหน้าที่รับสัญญาณที่ถูกส่งมา และนำมากำหนดเงื่อนไขเพื่อควบคุมการทำงานของ Pretty Car โดยจะแบ่งการทำงานเป็น 4 ส่วน ดังนี้
- On Start (การตั้งค่า )
- radio set group 1: กำหนดกลุ่มสัญญาณวิทยุเป็นกลุ่มที่ 1 ให้ตรงกับรีโมทฝั่งส่ง
- set Speed to 150: กำหนดค่าเริ่มต้นของความเร็วปุ่มกดไว้ที่ 150
- set SpeedT / SpeedD to 0: ตั้งค่าตัวแปรการเลี้ยว (Turn) และการขับเคลื่อน (Drive) ให้เป็น 0 เมื่อเริ่มโปรแกรม
- On Radio Received receivedString: ทำหน้าที่รับ”ข้อความ”จากรีโมทเพื่อเปลี่ยนค่าในตัวแปรกลาง
- ถ้าได้รับ “Up”: ตั้งค่า
SpeedD(เดินหน้า) เท่ากับค่าความเร็วที่กำหนดไว้ และให้SpeedT(เลี้ยว) เป็น 0 - ถ้าได้รับ “Down”: ตั้งค่า
SpeedDเป็นค่าติดลบ (ถอยหลัง) และให้SpeedTเป็น 0 - ถ้าได้รับ “Left”: ให้
SpeedDเป็น 0 และตั้งค่าSpeedTเป็นค่าติดลบ (เลี้ยวซ้าย) - ถ้าได้รับ “Right”: ให้
SpeedDเป็น 0 และตั้งค่าSpeedTเป็นค่าบวก (เลี้ยวขวา) - ถ้าได้รับ “Release”: ตั้งค่าตัวแปรทั้งสองให้เป็น 0 เพื่อเตรียมหยุดหุ่นยนต์
- ถ้าได้รับ “Up”: ตั้งค่า
- on radio received receivedNumber: ส่วนนี้รับค่าตัวเลขที่ส่งมาจากปุ่ม A และ B ของรีโมทเพื่อปรับระดับความเร็ว
- ถ้าได้รับเลข 0 (ปุ่ม A): ลดค่าความเร็วลงครั้งละ 15 (จำกัดค่าไม่ให้ต่ำกว่า 0)
- ถ้าได้รับเลข 1 (ปุ่ม B): เพิ่มค่าความเร็วขึ้นครั้งละ 15 (จำกัดค่าไม่ให้เกิน 255)
- forever: เป็นส่วนประมวลผลหลักที่ทำงานตลอดเวลา
- radio send value “Data” = Speed: ส่งค่าความเร็วปัจจุบันกลับไปให้รีโมทเพื่อแสดงผล
- plot bar graph of Speed: แสดงระดับความเร็วบนหน้าจอ LED ของหุ่นยนต์
- Motor M1 / M3: ใช้สูตรผสมสัญญาณ (
SpeedD + SpeedTและSpeedD - SpeedT) เพื่อสั่งงานมอเตอร์ทั้งสองข้างพร้อมกัน ทำให้หุ่นยนต์เคลื่อนที่และเลี้ยวโค้งได้อย่างนุ่มนวล
ผลการทำงานของทั้งภาครับและภาคส่ง
ตัวอย่างที่ 3 ใช้ Joystick บน micro:GamePad ควบคุมการเคลื่อนที่ของ Pretty Car
ตัวอย่างนี้เป็นตัวอย่างการใช้งาน Joystick บน micro:GamePad ควบคุมการเคลื่อนที่ของ Pretty Car โดยนำค่าที่อ่านได้จาก Joystick มาแปลงเป็นความเร็วของมอเตอร์ตามระดับการโยกของแกน X และ Y ของ JoyStick
ภาคส่ง micro:GamePad
รูปที่ 11 ตำแหน่ง JoyStick
ขั้นตอนการใช้งาน
- เปิดเบราว์เซอร์และไปที่ https://makecode.microbit.org/ เพื่อเริ่มเขียนโค้ด
- เตรียม micro:GamePad ให้พร้อมใช้งาน บรรจุถ่านขนาด AAA จำนวน 2 ก้อน
- เชื่อมต่อ micro:bit สำหรับใช้งานกับ micro:GamePad เข้ากับคอมพิวเตอร์ด้วยสาย microUSB เพื่ออัปโหลดโค้ดในรูปที่ 4
- เมื่ออัปโหลดโค้ดแล้ว นำ micro:bit มาเชื่อมต่อกับ micro:GamePad เพื่อทดลองการทำงาน
รูปที่ 12 แสดงโค้ดตัวอย่างที่ 3 ส่วนของภาคส่ง micro:GamePad
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/_9L2EWUJYe4ud
อธิบายการทำงาน
โค้ดชุดนี้ทำหน้าที่อ่านค่าแรงดันไฟฟ้าจากจอยสติ๊ก แล้วแปลงเป็นค่าตัวเลขเพื่อส่งไปควบคุมความเร็วและทิศทางของหุ่นยนต์ โดยจะแบ่งการทำงานเป็น 4 ส่วน ดังนี้
- On Start (การตั้งค่า )
- กำหนดกลุ่มวิทยุเป็นกลุ่มที่ 1 เพื่อให้ตรงกับหุ่นยนต์ตัวรับ
- ตั้งค่าตัวแปร
Turn(เลี้ยว) และDrive(เดินหน้า/ถอยหลัง) ให้เริ่มที่ 0
- forever: เป็นส่วนประมวลผลหลักที่ทำงานตลอดเวลา
- Map: การอ่านค่าและแปลงสัญญาณ อ่านค่าสัญญาณอะนาล็อกจากจอยสติ๊กแกน Y (พิน P2) และแกน X (พิน P1) ซึ่งมีค่าอยู่ระหว่าง 0 ถึง 1023 ใช้คำสั่ง Map เพื่อแปลงช่วงตัวเลขให้กลายเป็น -255 ถึง 255
- if absolute of: การสร้างพื้นที่หยุดนิ่ง (Deadzone) เพื่อป้องกันหุ่นยนต์ไหลเองเมื่อจอยสติ๊กคลาดเคลื่อนเล็กน้อย ใช้คำสั่งตรวจสอบระยะการโยกจอยสติ๊กโดยไม่สนใจทิศทาง
Drive < 30: หากโยกน้อยกว่า 30 หน่วย ระบบจะสั่งให้ Drive เป็น 0Turn < 30: หากโยกน้อยกว่า 30 หน่วย ระบบจะสั่งให้ Turn เป็น 0
- Radio Send value: ส่งค่าที่ประมวลผลเสร็จแล้วผ่านวิทยุ โดยใช้ชื่อ “D” สำหรับค่าการเดินหน้า และ “T” สำหรับค่าการเลี้ยว เพื่อให้ฝั่งรับนำไปคำนวณแยกกันได้ถูกต้อง
ภาครับ Pretty Car
ขั้นตอนการใช้งาน
- เปิดเบราว์เซอร์ไปที่ https://makecode.microbit.org/ และสร้างโปรเจคใหม่เพื่อเริ่มเขียนโค้ด
- ตรวจสอบการติดตั้ง Extention SuperBitV2 สำหรับใช้งาน Pretty Car ในชุด Building:bit Superkit
- เชื่อมต่อ micro:bit สำหรับใช้งานกับ Pretty Car เข้ากับคอมพิวเตอร์ด้วยสาย microUSB เพื่ออัปโหลดโค้ดในรูปที่ 13
- เมื่ออัปโหลดโค้ดแล้ว นำ micro:bit มาเชื่อมต่อกับ Pretty Car เพื่อทดลองการทำงาน
รูปที่ 13 แสดงโค้ดตัวอย่างที่ 3 ส่วนของภาครับ Pretty Car
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/_4Ar5zEfXRKWk
อธิบายการทำงาน
โค้ดชุดนี้จะรับค่าตัวเลขจากการโยกจอยสติ๊กมาประมวลผล และจะนำผลลัพธ์ที่ได้มาสั่งงานมอเตอร์ให้เคลื่อนที่ตามทิศทางและน้ำหนักมืออย่างละเอียด โดยจะแบ่งการทำงานดังนี้
- on radio received name value: การรับข้อมูลที่ส่งมาจากรีโมท
- if name == “D”: ถ้าได้รับค่าชื่อ “D” (Drive) จะนำค่าตัวเลขนั้นไปเก็บไว้ในตัวแปร
SpeedD(เดินหน้าหรือถอยหลัง) - else if name”T”: หากได้รับค่าชื่อ “T” (Turn) จะนำค่าตัวเลขนั้นไปเก็บไว้ในตัวแปร
SpeedT(เลี้ยวซ้ายหรือขวา)
- if name == “D”: ถ้าได้รับค่าชื่อ “D” (Drive) จะนำค่าตัวเลขนั้นไปเก็บไว้ในตัวแปร
- On Start (การตั้งค่า )
- radio set group 1: กำหนดกลุ่มสัญญาณวิทยุให้ตรงกับรีโมทตัวส่ง
- set SpeedT / SpeedD to 0: รีเซ็ตค่าตัวแปรการเลี้ยวและการขับเคลื่อนให้เป็น 0 เพื่อให้หุ่นยนต์หยุดนิ่งเมื่อเริ่มโปรแกรม
- forever: เป็นส่วนที่นำค่าจากตัวแปรมาคำนวณและสั่งงานมอเตอร์ตลอดเวลา
- Motor M1: ใช้สูตร
SpeedD + SpeedTเพื่อกำหนดความเร็วล้อซ้าย - Motor M3: ใช้สูตร
SpeedD - SpeedTเพื่อกำหนดความเร็วล้อขวา
- Motor M1: ใช้สูตร
ผลการทำงานของทั้งภาครับและภาคส่ง
ตัวอย่างที่ 4 การใช้งาน micro:GamePad แบบไฮบริด
ตัวอย่างนี้คือการสร้างระบบควบคุมหุ่นยนต์ที่สมบูรณ์แบบ โดยสามารถเลือกใช้งานได้ทั้ง จอยสติ๊ก เพื่อความละเอียด หรือ ปุ่มกด เพื่อความสะดวก พร้อมระบบปรับความเร็วได้ตามที่ต้องการ
ภาคส่ง micro:GamePad
รูปที่ 14 แสดงโค้ดตัวอย่างที่ 4 ส่วนของภาคส่ง microGamePad
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/_Up34UKHszHX1
อธิบายการทำงาน
โค้ดชุดนี้จะเป็นการส่งข้อมูลจากการกดปุ่มและการใช้งาน JoyStick ซึ่งจะมีรูปแบบคล้ายตัวอย่างก่อนหน้า แต่จะปรับเปลี่ยนรูปแบบการส่งข้อมูลเพื่อให้เกิดเสถียรภาพมากขึ้น โดยประมวลผลคำสั่งทั้งหมดให้เป็นตัวเลข “D” (Drive) และ “T” (Turn) ก่อนส่งออก เพื่อลดความหนาแน่นของสัญญาณวิทยุที่ส่งออกไป โดยจะมีรายละเอียดดังนี้
- On Start (การตั้งค่า )
- radio set group 1: กำหนดกลุ่มวิทยุเป็นกลุ่มที่ 1 เพื่อให้ตรงกับหุ่นยนต์ตัวรับ
- set Drive/Turn: ตั้งค่าตัวแปร
Turn(เลี้ยว) และDrive(เดินหน้า/ถอยหลัง) ให้เริ่มที่ 0 - set Speed: กำหนดค่าความเร็วเริ่มต้น
Speedไว้ที่ 150
- forever: เป็นส่วนประมวลผลหลักที่ทำงานตลอดเวลา
- ใช้คำสั่ง
mapแปลงค่าจากจอยสติ๊ก (0 ถึง 1023) ให้เป็นช่วงความเร็ว -255 ถึง 255 - ระบบพื้นที่หยุดนิ่ง (Deadzone): ใช้
absolute ofเพื่อเช็คว่าถ้าโยกจอยสติ๊กน้อยกว่า 30 หน่วย ให้ถือว่าเป็น 0 เพื่อป้องกันหุ่นยนต์ไหลเอง - การจัดการปุ่มกดทิศทาง (if Drive == 0 and Turn == 0): หากไม่ได้โยกจอยสติ๊ก ระบบจะมาเช็คการกดปุ่ม P13-P16 แทน
- หากกดปุ่ม (P15) จะตั้งค่า
Drive = Speed - หากกดปุ่ม (P13) จะตั้งค่า
Drive = Speed*-1 - หากกดปุ่ม (P16) จะตั้งค่า
Turn = Speed*-1 - หากกดปุ่ม (P14) จะตั้งค่า
Turn = Speed
- หากกดปุ่ม (P15) จะตั้งค่า
- radio set value: เมื่อประมวลผลเสร็จ จะส่งค่าออกไปเพียง 2 ค่า คือ “D” (เดินหน้า/ถอยหลัง) และ “T” (น้ำหนักการเลี้ยว)
- ใช้คำสั่ง
- Every 200 ms:เป็นการแยกมาตรวจสอบปุ่ม A และ B ทุกๆ 0.2 วินาที
- if button A: ส่งตัวเลข 0 ผ่านวิทยุ และสั่งให้ขา P12 เป็น High (1) เพื่อเปิดไฟ LED และมอเตอร์สั่นทำงาน
- if button B: ส่งตัวเลข 1 ผ่านวิทยุ และสั่งให้ขา P12 เป็น High (1) เช่นกัน
- Else: ถ้าไม่ได้กดทั้ง A และ B ให้สั่งขา P12 เป็น Low (0)
ภาครับ Pretty Car
รูปที่ 15 แสดงโค้ดตัวอย่างที่ 4 ส่วนของภาครับ Pretty Car
สามารถเปิดโค้ดได้ที่ https://makecode.microbit.org/_23mfqLLKYCqF
อธิบายการทำงาน
โค้ดชุดนี้จะเป็นการรับข้อมูล โดยจะเน้นที่ความเร็วในการตอบสนอง โดยทำหน้าที่ “รับและสั่งการ” เป็นหลัก เนื่องจากข้อมูลที่ถูกส่งมาจะผ่านการคำนวณมาเรียบร้อยแล้ว โดยรายละเอียดในการสั่งงานดังนี้
โค้ดชุดนี้จะเป็นการรับข้อมูลจากการกดปุ่มและการใช้งาน JoyStick ซึ่งจะมีรูปแบบคล้ายตัวอย่างก่อนหน้า แต่จะปรับเปลี่ยนรูปแบบการส่งข้อมูลเพื่อให้เกิดเสถียรภาพมากขึ้น โดยประมวลผลคำสั่งทั้งหมดให้เป็นตัวเลข “D” (Drive) และ “T” (Turn) ก่อนส่งออก เพื่อลดความหนาแน่นของสัญญาณวิทยุที่ส่งออกไป โดยจะมีรายละเอียดดังนี้
- On Start (การตั้งค่า )
- radio set group 1: กำหนดกลุ่มสัญญาณวิทยุให้ตรงกับรีโมทตัวส่ง
- set SpeedT / SpeedD to 0: รีเซ็ตค่าตัวแปรการเลี้ยวและการขับเคลื่อนให้เป็น 0 เพื่อให้หุ่นยนต์หยุดนิ่งเมื่อเริ่มโปรแกรม
- set Speed: กำหนดค่าความเร็วเริ่มต้น
Speedไว้ที่ 150
- On Radio Received: การรับข้อมูล
- รับค่าทิศทาง: เมื่อได้รับค่าชื่อ “D” จะเก็บไว้ในตัวแปร
SpeedDและหากได้รับชื่อ “T” จะเก็บไว้ในSpeedT - รับสถานะปุ่ม: รับเลข 0 หรือ 1 เพื่อมาปรับระดับความเร็วในตัวหุ่นยนต์ให้ตรงกับที่รีโมทสั่งมา
- รับค่าทิศทาง: เมื่อได้รับค่าชื่อ “D” จะเก็บไว้ในตัวแปร
- forever: เป็นส่วนประมวลผลหลักที่ทำงานตลอดเวลา
- plot bar graph of Speed: แสดงระดับความเร็วบนหน้าจอ LED ของหุ่นยนต์
- สั่งงานมอเตอร์: ระบบจะนำค่าจากตัวแปรกลางมาคำนวณตามสูตรทางคณิตศาสตร์ เพื่อกำหนดความเร็วให้แต่ละล้อแยกกัน
- มอเตอร์ล้อซ้าย (M1): คำนวณจาก
SpeedD + SpeedT - มอเตอร์ล้อขวา (M3): คำนวณจาก
SpeedD - SpeedT
- มอเตอร์ล้อซ้าย (M1): คำนวณจาก
















