본문 바로가기
아두이노

🚀 Arduino로 미니 레트로 게임 콘솔 DIY!

by 모빌리티키즈 2025. 5. 7.
728x90
반응형

레트로 감성 가득한 미니 게임 콘솔을 직접 만들어볼까요? 🎮 Arduino Nano와 SH1106 128x64 OLED 디스플레이를 활용해 4개의 미니 게임을 즐길 수 있는 나만의 콘솔을 제작해봅니다.

🔥 프로젝트 개요

이 콘솔에서는 떨어지는 물체 잡기, 슈팅 게임, 플래피 버드, 벽 차단기 등 4개의 게임을 즐길 수 있습니다. 게다가 새로운 게임을 추가하거나 기존 게임을 수정할 수도 있어요!

✨ 주요 특징

  • Arduino Nano 사용 → 쉽고 강력한 핵심 컨트롤러
  • 1.3인치 OLED 디스플레이 → 고대비 그래픽으로 레트로 느낌 강화
  • 게임 메뉴 인터페이스 → 편리한 탐색과 실행
  • EEPROM 고점수 저장 기능 → 전원을 꺼도 점수 유지!
  • 버저 사운드 이펙트 → 게임을 더욱 몰입감 있게

⚙️ 필요한 부품

📌 아두이노 나노 📌 1.3인치 OLED 디스플레이 (SH1106, I2C 인터페이스) 📌 푸시 버튼 × 6개 📌 버저 × 2개 📌 TP4056 충전 모듈 📌 Zero PCB (6x4인치) × 2개 📌 소형 배터리 (휴대용 전원용)

 

🛠 제작 단계

1️⃣ 회로도 분석

필요한 부품 연결 및 기능을 이해합니다. (📥 회로도 다운로드 가능)

2️⃣ 브레드보드에서 테스트

OLED, 버튼, 버저를 연결하고 기능을 점검하세요. 버튼 반응, 부저 소리, 게임 화면 출력 여부 확인!

Circuit Diagram.png
1.50MB

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>

#define OLED_RESET -1
Adafruit_SH1106 display(OLED_RESET);

const int buttonLeft = 2;   // 왼쪽 이동 버튼
const int buttonRight = 3;  // 오른쪽 이동 버튼
const int buttonShoot = 4;  // 총알 발사 버튼
const int buzzer = 7;       // 사운드 효과용 부저

int playerX = 32;
int bulletY = -1;
bool bulletActive = false;

void setup() {
    pinMode(buttonLeft, INPUT_PULLUP);
    pinMode(buttonRight, INPUT_PULLUP);
    pinMode(buttonShoot, INPUT_PULLUP);
    pinMode(buzzer, OUTPUT);
    display.begin(SH1106_SWITCHCAPVCC, 0x3C);
    display.clearDisplay();
}

void loop() {
    // 버튼 입력 처리
    if (digitalRead(buttonLeft) == LOW && playerX > 0) playerX -= 2;
    if (digitalRead(buttonRight) == LOW && playerX < 64) playerX += 2;

    // 총알 발사
    if (digitalRead(buttonShoot) == LOW && !bulletActive) {
        bulletY = 48;
        bulletActive = true;
        tone(buzzer, 1000, 100);  // 발사 소리
    }

    // 총알 이동
    if (bulletActive) {
        bulletY -= 2;
        if (bulletY < 0) bulletActive = false;
    }

    // 화면 렌더링
    display.clearDisplay();
    display.fillRect(playerX, 52, 10, 6, WHITE); // 플레이어 표시

    if (bulletActive)
        display.fillRect(playerX + 4, bulletY, 2, 5, WHITE); // 총알 표시

    display.display();
    delay(50); // 프레임 속도 조절
}

🎮 게임 로직 설명

1️⃣ 왼쪽/오른쪽 이동 버튼으로 플레이어를 좌우로 움직일 수 있습니다. 2️⃣ 발사 버튼을 누르면 총알이 위로 발사됩니다. 3️⃣ 부저 사운드로 슈팅 효과를 추가하여 몰입감을 높였습니다. 4️⃣ OLED 디스플레이에서 플레이어와 총알을 그래픽으로 출력합니다.

 

 

3️⃣ PCB 제작

컨트롤러 모양으로 PCB를 절단하고, 레이아웃 템플릿을 준비합니다. (📥 레이아웃 템플릿 다운로드 가능)

Remote Template.png
0.11MB

4️⃣ 납땜 및 조립

모든 부품을 PCB에 배치 후 납땜합니다. 더 깔끔한 조립을 위해 수-암 헤더 활용 가능!

5️⃣ 후면 PCB 장착

두 번째 PCB를 후면 덮개로 활용하여 배선 정리 및 강도를 높입니다.

6️⃣ 게임 코드 업로드

USB로 Arduino Nano를 연결해 게임 코드를 업로드하세요. (📥 .ino 코드 다운로드 가능)

7️⃣ 최종 테스트 & 즐기기

✅ 전원 켜기

✅ 메뉴 탐색 & 게임 실행

✅ 버튼 반응 체크

✅ 게임 플레이!

🎮 게임 소개

🟢 떨어지는 물체 잡기 → 왼쪽/오른쪽 이동하며 물체를 캐치!

🟢 슈팅 게임 → 적을 회피하며 격파!

🟢 Flappy Bird → 장애물을 피해 최대한 멀리 날아가기!

🟢 Wall Breaker → 벽돌을 깨뜨리는 클래식 게임!

각 게임 종료 시 최종 점수 & 최고 점수가 저장됩니다.

✨ 마무리

이제 나만의 미니 게임 콘솔 완성! 🎉 추가 게임을 직접 개발하여 새로운 게임을 즐겨보세요. DIY 프로젝트를 통해 코딩과 회로 구성까지 경험할 수 있는 멋진 기회입니다.

💡 레트로 감성과 함께하는 DIY 게임 콘솔 제작, 지금 시작해보세요! 🚀

 

 

728x90
반응형