กลับไปหน้ารวมไฟล์
shoot-the-monster-arduino-and-pictoblox-joystick-game-bd67c3.md

ยิงสัตว์ประหลาดให้กระจุย! โปรเจกต์ 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 เพื่อให้เราควบคุมตัวละครได้แม่นยำเหมือนจับวางไงล่ะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

title: "Shoot the monster - Arduino and PictoBlox joystick game"
description: "In this tutorial I will show you how to use and code joystick module using Arduino and PictoBlox."
author: "mia_programer"
category: ""
tags:
  - "kids"
  - "games"
views: 1720
likes: 0
price: 1499
difficulty: "Easy"
components:
  - "1x Analog joystick (Generic)"
  - "1x Arduino UNO"
  - "1x Jumper wires (generic)"
  - "1x Breadboard (generic)"
tools: []
apps:
  - "1x PictoBlox"
downloadableFiles:
  - "https://projects.arduinocontent.cc/b571c698-6340-467c-802d-2e90e1eb0bc6.sb3"
documentationLinks: []
passwordHash: "b08a0a9da52ad3968b72528e854353c2d9f49fa32d7ec7048089ff60428bab1d"
encryptedPayload: "U2FsdGVkX1/6Dc7hBHCWBFmkiGue4y+NONrlSrqILaenVPYBX40fizGGp47wA2FH+pVPsHVv4hD2w3ozOIOcgQ+VIj5nF+DhDTHnK8FNN4I="
seoDescription: "Build a Shoot the monster game with Arduino and PictoBlox using a joystick module. Learn how to code and use hardware."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/shoot-the-monster-arduino-and-pictoblox-joystick-game-bd67c3_cover.jpg"
lang: "th"