打造 Arduino 掌上游戏机:A-Maze 紧凑型可刷新迷宫游戏
组件与物料
| SSD1306 OLED 显示屏 | ×1 |
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | ×1 |
| SparkFun 12mm 轻触开关 | ×7 |
| 纽扣电池座 | ×2 |
| 滑动开关 | ×1 |
| 原型 PCB 4x6 cm | ×1 |
项目简介
欢迎来到我的第一个教程!
今天要分享的项目是 Arduino 迷宫游戏,它进化成了一款口袋游戏机,功能不输 Arduboy 等同类 Arduino 游戏机。得益于预留的 ICSP 接口,它可以刷入我(或你)未来开发的新游戏。
几个月前我萌生了在 Arduino 上做迷宫游戏的想法,但不想硬编码一组固定迷宫。它应该能为每一关动态生成新迷宫,让你永远不会重复体验同一张地图 :)
编码过程颇具挑战,因为 Arduino 内存有限,后来我发现了几个用简单“Bo-Taoshi”算法生成迷宫的例子。起始代码参考了 SANUKI UDON 的项目《如何使用 ATTINY13A 制作迷宫生成器》。
步骤 1:面包板原型验证


起始阶段只在小面包板上接了 4 个方向按键,后来决定做成游戏机又增加了几个按键。大面包板上可见新增的 2 个按键,随后又加了第 3 个作为开始/暂停/菜单键。
步骤 2:所需物料清单
- Arduino Pro Mini / Arduino Uno / ATmega328P 芯片
- 28 引脚 DIP 插座(可选)
- SSD1306 OLED 显示屏
- 压电蜂鸣器
- 轻触开关 - 7 个
- 纽扣电池座
- 拨动开关
- 导线
- 原型 PCB (60x40mm)
步骤 3:面包板接线 / 原理图
按上图连接各组件。
按键引脚分配:
- 上:Arduino 引脚 7
- 下:Arduino 引脚 6
- 左:Arduino 引脚 9
- 右:Arduino 引脚 8
- A 键:Arduino 引脚 5
- B 键:Arduino 引脚 4
- 开始键:Arduino 引脚 2
SSD1306 OLED 屏幕:
- SCL:Arduino 引脚 A5
- SDA:Arduino 引脚 A4
- VCC:Arduino VCC
- GND:Arduino GND
蜂鸣器:
- 蜂鸣器正极:Arduino 引脚 3
- 蜂鸣器负极:Arduino GND
步骤 4:源代码
A-Maze 游戏源代码托管于 GitHub:https://github.com/alojzjakob/A-Maze
在 Arduino IDE 中打开并上传至开发板,或使用 ISP 编程器烧录芯片。推荐使用 USBTIny ISP,从未遇到问题;也可用普通 Arduino 作为编程器。
我的方案未使用外部晶振,ATmega328P 运行在 8MHz 内部振荡器上。更多信息请见:ArduinoToBreadboard 教程。
步骤 5:实物展示



步骤 6:外壳与小型化


若想制作永久成品,我设计了一个简单的 3D 打印外壳:Thingiverse 链接
上图展示了所有元件在 4x6 原型 PCB 上的布局。大部分按键走线在电池座下方,尽量平整以便电池座贴合。建议屏幕下方也做走线,因为 ATmega 芯片引脚焊接后裸露在屏幕下方,焊接完成后在屏幕下垫绝缘胶带防止短路。
ICSP 接口可选。若不预留,组装会简单得多(少 6 个连接),但需先烧录程序再焊接芯片,或使用 28 引脚 DIP 插座方便拆卸烧录。
代码
GitHub 仓库
https://github.com/alojzjakob/A-Maze
自定义零件与外壳
Thingiverse
https://www.thingiverse.com/thing:2851100 CAD 文件见 Thingiverse
原理图



制造工艺
- DIY Photoshop 硬件控制台:Arduino Nano RP2040 实现快捷键外设
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- TeleBall:自制 Arduino 掌上复古游戏机(打砖块 + 双人网球)
- 自制 Arduboy 克隆掌机:从面包板到专业 PCB
- 用 Arduino UNO 和 OLED 显示屏制作经典 Pong 游戏:分步教程
- DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
- 用 Arduino Nano 与 MAX7219 制作 24×16 LED Pong 游戏机
- Arduino 触控打砖块:在 2.4 英寸 TFT LCD 上重现经典街机
- 自制巨型乐高迷你人偶动画操作游戏:Arduino 控制舵机与音效
- Pixel Chaser:Arduino Nano 单键 NeoPixel 追逐小游戏
- Arduino 自动化 Chrome 恐龙游戏 - LDR 光敏电阻 + Python 实现全自动跳跃
- DIY LED 轮盘赌游戏机 —— Arduino Nano 打造单人桌面街机