아두이노 포켓 게임 콘솔 'A-Maze' 제작: 미로 생성 게임
부품 및 소모품
- SSD1306 OLED 디스플레이 × 1
- 스파크펀 아두이노 프로 미니 328 - 5V/16MHz × 1
- 스파크펀 푸시버튼 스위치 12mm × 7
- 코인 셀 배터리 홀더 × 2
- 슬라이드 스위치 × 1
- 프로토타입 PCB 4×6mm × 1
프로젝트 소개
첫 번째 튜토리얼에 오신 것을 환영합니다!
오늘 공유할 프로젝트는 아두이노 미로 게임으로, 아르두보이(Arduboy)나 유사한 아두이노 기반 콘솔만큼 강력한 포켓 콘솔이 되었습니다. 노출된 ICSP 헤더 덕분에 제(또는 여러분의) 미래 게임을 플래싱할 수 있습니다.
몇 달 전 아두이노로 미로 게임을 만들 아이디어가 있었는데, 하드코딩된 미로 세트 없이 각 레벨마다 새로운 미로를 생성하여 같은 미로를 두 번 다시 보지 않게 하고 싶었습니다.
아두이노의 제한된 RAM 메모리 때문에 코딩이 다소 어려웠지만, 간단한 '보타오시(Bo-Taoshi)' 알고리즘으로 해결할 수 있는 예제를 몇 가지 찾았습니다.
시작점으로 삼은 코드는 SANUKI UDON의 'ATTINY13A로 미로 생성기 만드는 법' 프로젝트에서 가져왔습니다.
1단계: 브레드보드 프로토타이핑
처음에는 미로 탐색용 4개 버튼만 연결된 작은 브레드보드로 시작했습니다. 나중에 게임 콘솔로 만들기로 결정하면서 버튼을 더 추가했습니다. 큰 브레드보드에는 버튼 2개가 더 보이고, 이후 시작/일시정지/메뉴용 버튼 하나를 더 추가했습니다.
2단계: 필요한 부품
- 아두이노 프로 미니 / 아두이노 우노 / ATmega328P 칩
- 28핀 DIP 소켓 (선택 사항)
- SSD1306 OLED 디스플레이
- 피에조 스피커
- 푸시 버튼 - 7개
- 코인 셀 배터리 홀더
- 토글 스위치
- 전선
- 프로토타입 PCB (60×40mm)
3단계: 브레드보드 배선 / 회로도
위 다이어그램과 같이 구성 요소를 연결합니다.
버튼:
- 위 버튼: 아두이노 핀 7
- 아래 버튼: 아두이노 핀 6
- 왼쪽 버튼: 아두이노 핀 9
- 오른쪽 버튼: 아두이노 핀 8
- A 버튼: 아두이노 핀 5
- B 버튼: 아두이노 핀 4
- 시작 버튼: 아두이노 핀 2
SSD1306 OLED 화면:
- SCL: 아두이노 핀 A5
- SDA: 아두이노 핀 A4
- VCC: 아두이노 VCC
- GND: 아두이노 GND
부저:
- 부저 양극: 아두이노 핀 3
- 부저 음극: 아두이노 GND
4단계: 소스 코드
A-Maze 게임 소스 코드는 여기서 확인할 수 있습니다: https://github.com/alojzjakob/A-Maze
아두이노 IDE에서 열고 보드에 업로드하거나 ISP 프로그래머로 칩을 프로그래밍하세요.
USBTiny ISP 사용을 권장합니다(문제가 없었습니다). 일반 아두이노로도 칩 프로그래밍이 가능합니다.
제 경우 외부 크리스탈을 사용하지 않아 ATmega328P 칩이 8MHz 내부 오실레이터로 동작합니다.
자세한 정보: 아두이노 투 브레드보드 튜토리얼
5단계: 작동 확인
6단계: 케이스 및 소형화
영구적으로 사용하려면 3D 프린팅 가능한 케이스가 필요합니다. 제가 설계한 간단한 케이스: Thingiverse
위 사진에서 모든 구성 요소가 4×6 프로토타입 PCB에 어떻게 배치되는지 확인할 수 있습니다.
대부분의 버튼 배선은 배터리 홀더 아래로 지나갑니다. 배터리 홀더가 보드 위에 평평하게 장착될 수 있도록 배선을 최대한 평평하게 만드세요.
다른 배선도 화면 아래로 지나가도록 권장합니다. ATmega 칩 다리가 화면 아래에서 노출되어 납땜되어 있기 때문입니다. 납땜이 끝나면 화면 아래에 절연 테이프를 붙여 합선을 방지하세요.
ICSP 헤더는 선택 사항입니다. 노출하지 않으면 조립이 훨씬 쉬워집니다(신경 써야 할 연결 6개 감소). 하지만 칩을 먼저 프로그래밍하거나 28핀 DIP 소켓을 사용하여 쉽게 칩을 탈착할 수 있게 하세요.
소스 코드
GitHub
https://github.com/alojzjakob/A-Maze
커스텀 파트 및 인클로저
Thingiverse
https://www.thingiverse.com/thing:2851100 - Thingiverse의 CAD 파일
회로도