概要
子供の頃、手のひらサイズのキーチェーンゲームでよく遊びました。
小さなモノクロ液晶に、幾つかのボタンで構成された小型のゲーム機です。
こういうのです(画像はアルゴ算法堂様からお借りしました)。
とても懐かしいですね・・・。
ところで、こういったキーチェーンゲームなら作れるのではないか?
と思い、小型液晶とArduinoを使って作って見ました。
使用材料
- Arduino UNO R3 (開発とArduinoライタとして)
- ATMEGA328P(秋月で250円)
- モノクログラフィック液晶 AQM1248A (秋月で750円)
- 16MHzセラロック(秋月で35円)
- ユニバーサル基板(秋月で60円)
- タクトスイッチ(秋月で1個10円)
- ICソケット
- ロジックレベルコンバーター(ebayで2個100円程度)
モノクロ液晶 AQM1248A の利用
秋月から届いた状態では、液晶はまだハンダ付けされていません。
まずはハンダ付けを行いましょう。
次に、液晶とArduinoの接続です。
今回は、この液晶を利用するために、しなぷすさんの作成されたライブラリを使います。
https://synapse.kyoto/hard/MGLCD_AQM1248A/page001.html
液晶の接続は下記のように行います。
注意点として、この液晶は3.3Vで動作します。
Arduino UNOと接続する際には、Arduinoの5V → 液晶の3.3Vに信号の電圧を変換してあげなければいけません(でないと最悪液晶が壊れます)。
今回は、ロジックレベルコンバーターを間にはさみました。
(見づらいので、しなぷすさんのサイトをご参考にして下さい)
今回は
液晶 (AQM1248A) | Arduino |
---|---|
CS | 8 |
RS | 7 |
SCLK | 6 |
SDI | 5 |
につなぎました。
接続が終わったら、ライブラリをダウンロードし、インストールして下さい。
HelloWorldが動けばOKです。
ゲームの作成
今回は、延々と上にジャンプしていくゲームを作成しました。
ソースコードはgithubに上げています。
開発時にはArduinoで動作を確認し、プログラムがfixした後は、
空のATMEGA328PにArduinoブートローダ書き込み→プログラム書き込みを行い、ユニバーサル基板上に実装しました。
液晶はユニバーサル基板にハンダ付けしようか悩みましたが、ちょっと液晶がお高いので、後々取り外せるようにICソケットをハンダ付けし、そこに液晶を差し込む形にしました(笑)
スコア表示
登ったスコアを表示するために数字を表示していますが、
ライブラリ同梱のフォントは、デフォルトの横表示にのみ対応していました。
その為、縦表示を行うためには別途フォントを準備する必要があります。
今回は、しなぷすさんのサンプルゲームに同梱されているフォント画像データを元に、ライブラリ内に同梱されているツール(MGLCD\extras\BMP2H.exe)を利用し、回転した画像からビットマップデータを生成して利用しました。
感想
Arduinoとライブラリのおかげで、比較的簡単にゲームを作ることが出来ました。
乾電池2個で動作するので、外に持ち出して遊べます(笑)
夏休みの工作にいいかもしれません。
次回はカラー液晶を使ってゲームを作ってみたいと思います。