กลับไปหน้ารวมไฟล์
gamepad-a-tiny-arduino-console-c97ab4.md

GamePad-Retro

ตอนที่ผมยังเด็ก วิดีโอเกมนั้นเรียบง่าย และวันเวลาที่ใช้ไปกับการเล่นเกม Snake บน Nokia 3310 เพื่อทำลายสถิติของตัวเองนั้นมีมากมายนับไม่ถ้วน ดังนั้น ผมจึงคิดที่จะสร้างเครื่องเล่นเกม retro ขนาดเล็ก เพื่อรำลึกถึงเกม retro ที่ผมชื่นชอบบางเกม

สำหรับโปรเจกต์นี้ มีเกมต่อไปนี้ให้เล่น:

  1. Snake
  2. Pong (พร้อมปัญญาประดิษฐ์ที่โด่งดัง)

Github repository (สำหรับไฟล์และโค้ดเพิ่มเติม)

วิธีการสร้าง

ส่วนประกอบ Arduino:

  1. Arduino board (Arduino UNO ก็ใช้ได้)
  2. Prototyping board
  3. OLED Display 0.96" (SSD1306)
  4. Passive buzzer
  5. IR Transmitter และ receiver

แผนผังวงจร

ไลบรารีภายนอก

  1. ListLib: การใช้งาน lists อย่างง่ายสำหรับ Arduino GitHub source (*)
  2. ezBuzzer: ไลบรารี non-blocking สำหรับ passive buzzer GitHub source (**)
  3. IRemote: ไลบรารีสำหรับการถอดรหัส IR signals GitHub source
  4. u8g2: ไลบรารีกราฟิกสำหรับวาดบน SSD1306 OLED display GitHub source; ซึ่งมี drawing primitives บางอย่าง เช่น: drawCircle(…) , drawBox(…), ...

(*) Arduino ไม่ได้มาพร้อมกับ STL (Standard Library) ดังนั้นเราจึงไม่มี lists, queue หรือ data structure อื่นๆ

(**) Arduino เป็นบอร์ดแบบ single-core และไม่รองรับ multithreading ดังนั้น การใช้ฟังก์ชัน Tone(…) และ NoTone(…) ร่วมกับ delay(…) หมายความว่าเราไม่สามารถ "ส่งเสียงบี๊บ" พร้อมๆ กับการทำสิ่งอื่นในโค้ดได้ ไลบรารีนี้มี "วิธีหลีกเลี่ยง" เพื่อให้ได้ผลลัพธ์นี้โดยเฉพาะ

รายละเอียดเพิ่มเติมเกี่ยวกับ วิธีการนำเข้าโค้ดและไลบรารี อยู่ใน GamePad.pdf

รายละเอียดทางเทคนิคเพิ่มเติม

วิศวกรรมเกมมือถือขนาดเล็ก

"GamePad" คือระบบเกมพกพาขนาดเล็กที่สร้างขึ้นบน Arduino Nano หรือ Pro Micro

  • ส่วนเชื่อมต่อจอแสดงผล: ใช้ 0.96" OLED (SSD1306) ที่มีความคมชัดสูง กราฟิกถูกเรนเดอร์โดยใช้ไลบรารี Adafruit_GFX ซึ่งได้รับการปรับแต่งสำหรับการเคลื่อนไหวของ sprite ที่รวดเร็วและการเรนเดอร์ฟอนต์ที่ความละเอียด 128x64
  • อินพุตแบบสัมผัส: มี D-pad 4 ทิศทาง (ปุ่ม) และปุ่ม "Action" สองปุ่ม พร้อม pull-up resistors ภายใน เพื่อการเล่นเกมที่ตอบสนองได้ดีโดยไม่มี input-lag

สถาปัตยกรรมซอฟต์แวร์

  • Game Engine: ประกอบด้วยตรรกะ frame-buffer อย่างง่าย เกมต่างๆ เช่น Tetris, Pong หรือ Snake ถูกเขียนโค้ดลงใน Arduino ซึ่งแสดงให้เห็นถึงการจัดการหน่วยความจำที่มีประสิทธิภาพบนอุปกรณ์ที่มี SRAM จำกัด

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

title: "GamePad, a tiny arduino console"
description: "An arduino-based tiny retro console, for playing either snake or pong. The code provided can be easily extended to include more (old and amazing) games made by you."
author: "edu_rinaldi"
category: "Gadgets, Games & Toys"
tags:
  - "Games"
views: 726
likes: 0
price: 2450
difficulty: "Intermediate"
components:
  - "1x IR Receiver"
  - "1x IR transmitter (generic)"
  - "1x Passive Buzzer"
  - "1x SSD1306 OLED Display"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/edu-rinaldi/GamePad-Retro"
documentationLinks: []
passwordHash: "d4b01064cbb6398bda2b40bad25c28937cd731228f554a86b1b0f56c33ae8d41"
encryptedPayload: "U2FsdGVkX18P/NB6wJOmNYZsDrYvkU8PaevLqeDRR3otS3juJwGpIwgoHNdQce9rPU4gpQT2y2aQQi9OraDSjQ9D6ICpul7NS3ycjQQz7hM="
seoDescription: "Build GamePad, a tiny Arduino retro console. Play Snake or Pong and easily extend the Code to create your own classic games."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/gamepad-a-tiny-arduino-console-c97ab4_cover.png"
lang: "th"