工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino製ポケットゲーム機「A-Maze」:迷路自動生成で無限に遊べる

必要な部品と材料

部品数量備考
SSD1306 OLEDディスプレイ (128x64)1I2C接続、0.96インチ推奨
SparkFun Arduino Pro Mini 328 - 5V/16MHz1またはUno/Atmega328P単体
タクトスイッチ 12mm7十字キー+A/B/START
コインセル電池ホルダー (CR2032用)2直列で6V、レギュレーター経由で5V/3.3V
スライドスイッチ1電源ON/OFF
ユニバーサル基板 40x60mm1実装用
ピエゾブザー1効果音用(任意)

プロジェクト概要

Arduino Pro Miniベースの超小型ゲームコンソール「A-Maze」です。特徴は毎回異なる迷路を自動生成するため、同じマップで遊ぶことがありません。Bo-Taoshi(棒倒し)アルゴリズムをメモリー制約のあるAVRマイコン上で実装し、ICSPヘッダーを露出させることで後から別ゲームへ書き換え可能な「ポケットコンソール」として設計されています。

開発ステップ

Step 1: ブレッドボードでプロトタイピング

最初は4ボタン(十字キー)のみで迷路移動を検証。後にA/B/STARTボタンを追加し、ゲームコンソールとしての体裁を整えました。

Step 2: 部品調達

上記部品表を参照。Pro Miniの代わりにAtmega328Pチップ単体+28ピンDIPソケットでも構築可能です。

Step 3: 配線・回路図

機能Arduinoピン
上ボタンD7
下ボタンD6
左ボタンD9
右ボタンD8
AボタンD5
BボタンD4
STARTボタンD2
OLED SCLA5
OLED SDAA4
ブザーD3
Arduino製ポケットゲーム機「A-Maze」:迷路自動生成で無限に遊べる
回路図(クリックで拡大)

Step 4: ソースコード

GitHubリポジトリからクローンし、Arduino IDEでPro Mini (5V, 16MHz) 向けにビルド・書き込み。

git clone https://github.com/alojzjakob/A-Maze
# Arduino IDEで A-Maze.ino を開き、ボード「Arduino Pro or Pro Mini (5V, 16MHz)」を選択して書き込み

外部水晶発振子を使わない場合、内部8MHz発振で動作させる設定(フューズビット書き換え)が必要です。詳細は公式チュートリアルを参照。

Step 5: 動作確認

Arduino製ポケットゲーム機「A-Maze」:迷路自動生成で無限に遊べる
迷路生成〜プレイ画面

Step 6: ケース化・小型化

40x60mmユニバーサル基板上に全部品を実装し、3Dプリントケース(Thingiverse)に収納。ボタン配線は電池ホルダー下部に這わせ、画面下には絶縁テープを敷いてショート防止。ICSPヘッダーは基板端に露出させ、後からゲーム追加可能にしています。

アルゴリズム解説:Bo-Taoshi(棒倒し法)

グリッド上の各セルからランダムな方向に「棒」を倒して壁を作る手法で、スタックや再帰を使わないためRAM消費が極小。Atmega328Pの2KB SRAMでも快適に動作します。

今後の拡張

製造プロセス

  1. Arduino Nano RP2040で作るDIY Photoshopコントロールコンソール
  2. Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
  3. TeleBall: 自作レトロ携帯ゲーム機 – Arduinoでブロック崩し&テニス
  4. Arduboyクローンで作る自作携帯ゲーム機 – PCB設計から実装まで
  5. Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
  6. DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
  7. Arduino NanoとMAX7219で作る24×16 LEDポングゲーム機
  8. Arduinoタッチブレークアウトゲーム:2.4インチTFT LCDでクラシックアーケードを再現
  9. 巨大レゴミニフィグ・アニマトロニクス「オペレーション」ゲームをArduinoで自作
  10. Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
  11. Arduinoで自動化するChrome恐竜ゲーム – LDRとPythonで障害物を検知してジャンプ