ยิงสัตว์ประหลาดให้กระจุย! โปรเจกต์ Arduino และ PictoBlox ด้วย Joystick สุดเท่
เกี่ยวกับโปรเจกต์
หวัดดีวัยรุ่น! วันนี้พี่จะพามาดูวิธีเล่นกับ Module Joystick โดยใช้คู่กับบอร์ดคู่ใจ [Arduino](https://s.shopee.co.th/7fUgFAWSki) Uno Rev3 แล้วเขียนโปรแกรมง่ายๆ ด้วย PictoBlox (Software ตัวเก่งของเรา) รับรองทำเสร็จแล้วหล่อเลย
ทำความเข้าใจตัวเกม
กติกาก็ไม่มีอะไรซับซ้อน เป้าหมายของเกมนี้คือพยายามขยับเป้าเล็งไปถล่มเจ้าพวก Monster ให้ได้มากที่สุดเท่าที่จะทำได้ โดยเราจะควบคุมทิศทางของเป้าด้วยเจ้า Module Joystick ในมือนั่นแหละ
อุปกรณ์ที่ต้องเตรียม
เช็คของก่อนเริ่มนะน้อง จะได้ไม่เสียเที่ยว:
1x Arduino Uno
1x Module Joystick
1x Breadboard
สายไฟ (Wires) อีกนิดหน่อยไว้จิ้มเล่น
การต่อสาย (Connections)
มา... มาดูวิธีจิ้มสาย Joystick เข้ากับ Arduino (อย่าเสียบผิดล่ะ เดี๋ยวควันขึ้นนะตัวนี้)
(อุปกรณ์ - Arduino)
Joystick
+5V - Pin 5V
GND - Pin GND
VRx - Analog pin A0
VRy - Analog pin A1
SW - Digital pin 3
วงจร (Circuit)
ดูรูปวงจรประกอบไปนะวัยรุ่น จะได้ไม่พลาด:

ตัวละคร (Sprites) และฉากหลัง (Backdrop)
หลังจากต่อ Hardware เสร็จแล้ว มาเลือก Sprites กับ Backdrop กันหน่อย ใครอยากแหวกแนวไม่เหมือนพี่ก็ได้นะไม่ว่ากัน ส่วนของพี่จะเลือกใช้ตามนี้:
1x Monster (เจ้าสัตว์ประหลาด)
1x Aim (เป้าเล็ง)
แล้วก็ Backdrop ชื่อ "Space" ให้มันดูอวกาศหน่อยๆ
ดูรูปนี้ประกอบ ถ้าใครยังเลือก Sprites ไม่เป็น
และรูปนี้สำหรับวิธีเลือก Backdrop ใหม่ๆ
เขียน Code ให้เจ้า Monster
เลือก Sprite ของ Monster ขึ้นมา แล้วเขียน Code ตามนี้เลยน้อง:

เขียนโปรแกรมคุม Joystick และเป้าเล็ง (Aim)
ได้เวลาเขียน Code ให้เป้าเล็งของเราขยับตาม Joystick แล้ว

Script สำหรับนับคะแนน (Score)
Logic มันกล้วยๆ: ทันทีที่เป้าเล็ง (Aim) ไปสัมผัสโดนตัว Monster คะแนน (Score) ก็จะบวกเพิ่มทีละหนึ่ง จัดไป:

การอัปโหลด Code
ขั้นตอนสุดท้าย เอา Code ที่เขียนยัดลง Board Arduino ของเรา:

กดปุ่ม "Upload Firmware" แล้วรอให้มันวิ่งจนเสร็จ
__________________________________________
เรียบร้อย! ลองไปเทสเกมดูได้เลย ใครอยากจะเปลี่ยนตัวละครหรือฉากหลังให้เท่กว่านี้ก็จัดไปตามสบายเลยน้อง!
เจาะลึกเทคนิค (เผื่อใครอยากเป็นเซียน)
โปรเจกต์นี้เป็นการรวมโลกของ Physical Game Controller เข้ากับโลกของ Digital Playground ซึ่งจะสอนเรื่องพื้นฐานของ Human-machine Interaction (การตอบโต้ระหว่างคนกับเครื่องจักร)
- การรวม Dual-Axis Joystick: ตัว Arduino จะคอยอ่านค่าแรงดัน Analog จาก Joystick ทั้งแกน X และ Y โดยตัว Firmware จะมี Algorithm จัดการเรื่อง "Dead-Zone" เพื่อป้องกันอาการสั่น (Jitter) ของสัญญาณ และส่งค่าพิกัดไปยัง PictoBlox ผ่านระบบ Serial ความเร็วสูง
- Event-Driven Gameplay: PictoBlox (ที่เป็น block-based เหมือน Scratch) จะคอยจัดการเรื่อง Animation ของ Sprite เมื่อเรากดปุ่ม "Select" บน Joystick มันจะส่งคำสั่ง "Shoot" ไปกระตุ้น และเรายังสามารถเพิ่มลำโพง Piezo buzzer บน Arduino ให้ส่งเสียง "Zap" ตอนยิงได้ด้วยนะ
Logic ด้านการศึกษา
- Variable Scaling: โปรเจกต์นี้แสดงให้เห็นวิธีทำ Mapping หรือแปลงค่าแรงดัน Analog ช่วง 0-1023 ให้กลายเป็นพิกัด Pixel -240 ถึง 240 บนหน้าจอของ PictoBlox เพื่อให้เราควบคุมตัวละครได้แม่นยำเหมือนจับวางไงล่ะน้อง!