レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

ATtiny85ベースのゲーム機を作ってみる

2020年10月24日 | 電子工作

Arduboyの様にAVRを使用した小型のゲーム機は幾つもありますが、その中で特に小型なのがATtiny85を使用したTiny Joypadではないでしょうか。DIPタイプでピン数8、フラッシュメモリ8Kバイト、SRAM512バイトの小型AVRでゲーム機を作ろうなんて思いつきませんよねぇ。素晴らしい。
遊べるゲームも子供だまし的なものではなく、ちゃんと楽しめそうなものばかりです。

画面表示にはI2C接続のSSD1306 OLEDを使うので配線もシンプルなうえ、上下左右の方向キーの入力にはアナログ入力を利用するので2ピンしか必要ありません。昔作ったArduboy(互換機)はOLEDがSPI接続で、キーもデジタル入力だったので配線が多く結構面倒だった記憶があります。



Arduboyは5V動作なので互換機を動作させるのに小型のリチウムイオンバッテリーを内蔵させる必要がありましたが、Tiny Joypadは3Vのコイン電池で動かせるのも魅力です。使用する部品点数も少なく手持ちの部品で作れそうだったので、試しにブレッドボードで組み上げてみることにしました。

回路図はこちらにあります。

簡単な回路なのですが、方向キーの回路に必要な分圧抵抗と同じ値の抵抗が手元になかったのでアナログジョイスティックをつないでみようと考えました。アナログスティックならX軸Y軸のアナログ値を読み取るだけなので2ピンで済みますし、スケッチの手直しもわずかで済みそうだったからです。



しかし実際に回路を組んでキー入力部分を修正したスケッチで動作確認をしてみると、3方向の動作は正常なのに1方向にスティックを倒したときだけTiny Joypadがリセットされるようになってしまいました。はじめは理由がよく分かりませんでしたが、よくよく考えてみると当たり前でした。スティックがつながっている端子の1つはリセット端子にもなっているので、スティックを倒して抵抗値が大きくなれば端子がLOWになってリセットがかかります。こんな簡単なことに気が付かなかったとは…

仕方がないので方向キーはタクトスイッチにして、分圧抵抗は秋月電子のお楽しみ袋に入っていた半固定抵抗を回路図の通り22k・33k・88kに設定して利用しました。



そのためちょっと大げさな配線になってしまいましたが、スケッチを変更すること無く3.3Vで動作させることが出来ました。ちなみにスケッチのコンパイルにはATTinyCoreを使います。


(バッテリーは以前ダイソーのモバイルバッテリーを3.3V電源に改造したもの)

Tiny Joypadのサイトにあるゲームを一通り動作させてみましたが、結構楽しめます。

ATtiny85でなく他のAVRで構築するのも難しくはなさそうですが、ATtiny85を使ったときよりは大きなサイズになりそうですね。やっばり小さなゲーム機(ゲーム基板?)を持ち歩いて、時間つぶしにちょっと遊ぶのがこのタイプのゲーム機のいいところですよね。

必要な抵抗を入手したら小さな基板に構築したいのですが、ゲームの殆どがアクションゲームで方向キーがタクトスイッチのままでは操作性がよくありません。基板に収められるスティックか十字キーがあればいいのですが。
なにかいい部品がみつかるまで製作はお預けです。



最新の画像もっと見る

コメントを投稿