Arduino使ってパタポン2を半自動化した話
はじめに
パタポンっていうゲームがある。 どんなゲームか簡単に言うと、リズムに合わせてコマンドを打って蛮族を操作する2Dリズムアクションゲーム。
(パタポン PV)
パタポンは楽しくて好きなんだけどこのゲームの大きな特徴の、"リズムにあわせてコマンドを打つ"っていうのがすっごく下手でゲームを楽しめない!!
なので電子工作の力を借りて 楽をする Pataponを簡略化するものを作った!
準備したものと費用
- パタポン2 (約1500円)
- diablock+*1 (500円)
- 5Vソレノイド*2x4 (650円 x4)
- ジャンパワイヤx20 (180円)
- 5.6k抵抗100本入り (100円)
- パワートランジスタ2個入りx2 (100円x2)
- 整流用ショットキーバリアダイオードx20 (10円x20)
- PSP用ハードカバー (1500円)
総額 6780円!
…パタポン2本体より他のほうが高い!
工作
今回の工作には大きく分けて5つの工程がある。
1. ソレノイドをPSPのボタンに合わせて組み合わせる
ソレノイドがちょうどいい感じにPSPのボタンと合うサイズをしていた。なので"+"の形を作るようにして並べてみた。
ただこのままだと固定もできないし、空洞のせいでいつ崩れるかわからない。
なので手元にあった"粘土"と"結束バンド"で形を作った。
2. ソレノイドを動かせる回路を作る
Arduinoからソレノイドを動かす回路を作る。
5V Solenoid with Arduino | Natural Days
このブログに書いてあることを真似して作った。
これを4つ並べた。
3. PSPに載せるものをdiablock+で作る
ソレノイドの1辺が見事に2ブロックサイズですごいきれいに収まる物が作れた。
ソレノイドのコードを通す道を作るのに苦労した。
4. ハードケースにdiablock+を載せる
ここはとても緊張した。
ブロックの固定にすごい苦労した。
失敗した…
すごいずれてて、まともにボタン押せないっていう大変なミスが起こってる。
なのでヤスリをかけて穴を大きくした。
(実際にPSPの上に載ってるところ。)
5. 実際にパタポン用にArduinoを制御するコードを書く
簡単に動作の説明をする。
pythonの方で予めパタポン用の6つのコマンドリストを作っておく。
1. 進め
2. 攻撃
3. 逃げろ
4. ジャンプ
5. ためる
6. 守る
キーボードの入力から"進め"等の命令を受ける。するとプログラムはタイミングを合わせてボタンに対応した文字をシリアル通信で送る。
Arduinoはシリアル通信を受けて文字に対応したソレノイドを動かす。
[Arduino側のプログラム]
[Pythonプログラム]
これらを実際に組み合わせて動くところが次の項目。
動作
(パタポン2 "進め"コマンドの実行 )
(パタポン2 1ステージ目のプレイ動画)
動いた!!
まだまだ改良の余地はありだけどその辺は追って直す感じで。
まとめ
トランジスタの使い方をちょっとだけ知った。リレー動かしてた時との差を感じる。トランジスタについてまとめて自分用のメモに記事を書きたい。
電子部品とかちょいちょい買うのにデータシートが読めないのはやばい気がする。学ぼう。
Python使ってるけどたまたまOpenCV使えてSerial通信もできるから選んでるだけで決してRubyから浮気したとかではない!
感想
じつはOpenCVを使ってタイミング合わせをしてやりたかったんだけどどうもタイミングが合わない。
前回の反省(FF10の雷避けの時)を活かしてPSPの画面をキャプチャする物を買って来て画面を取得することもできて、OpenCVに画面見せながら操作させることは出来た。でもわかりにくいしどうしたもんかなと。
電子工作を一応してるんだけど引き出しが少ないし、1歩進むのにすごい時間がかかる。電子工作の師匠がほしい。
パタポンシリーズの中では2が一番好き。パタポン4出ないかな…