ชื่อโปรเจกต์: Nano_Vaders
จริงๆ แล้วมีเกม Space Invader ที่ทำลง [Arduino](https://s.shopee.co.th/7fUgFAWSki) อยู่พอสมควรนะน้อง แต่พี่เห็นแล้วมันยังไม่สุดว่ะ เลยอยากอัปเกรดให้มันเฟี้ยวขึ้นหน่อย รอบนี้พี่เลยจัดจอ [OLED](https://s.shopee.co.th/5fjbrJWyFb) ขนาด 2.7 Inch มาใช้ให้มันดูใหญ่เต็มตา แถมยังเพิ่มจำนวน Rows และ Columns ให้แมตช์กับเกม Original ของ Taito Space Invaders เป๊ะๆ และที่สำคัญ พี่แถมฟังก์ชันโชว์ FPS ให้ด้วย จะได้เห็นกันชัดๆ ว่าความลื่นมันระดับไหน!
ส่วนตัวบอร์ด พี่เลือกใช้ Nano Every เพราะต้องการ RAM เพิ่มเอาไว้คุมพวก Aliens ที่พี่ขนมาใส่เต็มหน้าจอ และความเด็ดของ Nano Every คือ Clock speed ที่แรงถึง 20 Mhz วิ่งฉิวเลยล่ะ แต่อาจจะมีติดขัดนิดนึงตรงที่พี่ต้องถอยกลับไปใช้ Library Standard Tone.h เพราะเจ้า ToneAC.h มันยังไม่ซัพพอร์ต Nano Every นะวัยรุ่น
งานนี้พี่ประกอบลง Vero Board ง่ายๆ เลย ใครอยากลองของ พี่มี Schematic แนบไว้ให้แล้ว ไปจัดกันได้เลย!
EXPANDED TECHNICAL DETAILS
Retrogaming on a Microcontroller
Nano_Vaders คือการโคลนเกมระดับตำนานอย่าง Space Invaders มายัดลงใน Arduino Nano แบบตัวเดียวจบ
- Graphics Engine: ใช้จอ 128x64 I2C OLED display โดยตัว Logic ของเกมจะจัดการเรื่อง Sprite rendering, Collision detection และการรีเฟรชหน้าจอผ่าน Library
Adafruit_SSD1306 - Input System: ใช้ปุ่มกด (Pushbuttons) 3 ปุ่ม (ซ้าย, ขวา, ยิง) จัดการผ่าน Interrupt หรือการทำ Debounced digital reads เพื่อให้การควบคุมลื่นไหลทันใจ ไม่ติดขัด
Optimization Logic
การจะยัดเกมเต็มตัวลงใน Flash memory ขนาด 32KB ของ Nano ต้องใช้สมองนิดนึงน้อง:
- Sprite Mapping: พวก Graphics ต่างๆ พี่เก็บเป็น Bitmaps ใน PROGMEM (หน่วยความจำโปรแกรม) แทนที่จะยัดลง RAM ให้มันอืด
- Variable Scaling: พี่ใช้ Fixed-point math แทน Floating-point เพื่อรักษา Frame rate ให้พุ่งเกิน 30+ FPS บน Processor 8-bit AVR วิ่งกันเนียนๆ ไม่กระตุกแน่นอน จัดไปวัยรุ่น!