GamePad-Retro
ตอนที่ผมยังเด็ก วิดีโอเกมนั้นเรียบง่าย และวันเวลาที่ใช้ไปกับการเล่นเกม Snake บน Nokia 3310 เพื่อทำลายสถิติของตัวเองนั้นมีมากมายนับไม่ถ้วน ดังนั้น ผมจึงคิดที่จะสร้างเครื่องเล่นเกม retro ขนาดเล็ก เพื่อรำลึกถึงเกม retro ที่ผมชื่นชอบบางเกม
สำหรับโปรเจกต์นี้ มีเกมต่อไปนี้ให้เล่น:
- Snake
- Pong (พร้อมปัญญาประดิษฐ์ที่โด่งดัง)
Github repository (สำหรับไฟล์และโค้ดเพิ่มเติม)
วิธีการสร้าง
ส่วนประกอบ Arduino:
- Arduino board (Arduino UNO ก็ใช้ได้)
- Prototyping board
- OLED Display 0.96" (SSD1306)
- Passive buzzer
- IR Transmitter และ receiver

ไลบรารีภายนอก
- ListLib: การใช้งาน lists อย่างง่ายสำหรับ Arduino GitHub source (*)
- ezBuzzer: ไลบรารี non-blocking สำหรับ passive buzzer GitHub source (**)
- IRemote: ไลบรารีสำหรับการถอดรหัส IR signals GitHub source
- 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 จำกัด