🕹

Seeed Studio XIAO RA4M1 と OLED モジュール (SSD1331) でつくるミニゲーム機

に公開

変更履歴

  • rev.0 2025/04/16 新規作成

1. はじめに

以前に Seeed Studio XIAO RA4MI を使用して電子オルゴールを作成する記事を書きました。

Seeed Studio XIAO RA4M1 でつくる電子オルゴール

今回は、この電子オルゴールに OLED モジュールを追加してミニゲーム機を作成したいと思います。

作成するミニゲーム機

外観

デモ

https://youtu.be/dO58xCIBQ2E

2. 用意するもの

部品

No. 部品名 型番 備考
1 作成した電子オルゴール - つくり方
2 OLEDモジュール QT095B 96×64ドット RGB。秋月電子通商で購入。
3 タクトスイッチ(3個) - -
4 ブレッドボード - -
5 ジャンパーワイヤ - -

3. 開発環境の構築

arduino-cli のインストール

電子オルゴールのプログラムは Arduino IDE を使用しましたが、今回はビルド時にインクルードパスの設定やプリプロセッサマクロを定義したいため
コマンドラインツールの Arduino CLI を使用します。

https://docs.arduino.cc/arduino-cli/

上記の公式ページから、ご使用のOSに合わせて Arduino CLI をインストールします。
私は Windows を使用しているため、arduino-cli.exe をダウンロードし、実行ファイルのパスをシステムに通しました。

python3 のインストール

今回のゲームプログラムはビルドで python を使用するため、PC の環境に合わせてインストールを実施します。

https://www.python.org/

また、ビルドには Python パッケージの pillow と PyYAML が必要になりますので、こちらも pip 等でインストールをお願いします。
下記は動作確認を行った時のバージョンです。

$ pip3 list
Package Version
------- -------
pillow  11.2.1
pip     24.0
PyYAML  6.0.2

ソースコードの取得とビルド&書き込み

以下の git コマンドを実行して、ゲーム作成用のソースコードを取得します。

git clone https://github.com/nyannkov/mgc-sketch
cd mgc-sketch
git submodule update --init

今回書き込むプログラムは、 mgc-sketch/samples/game/cat_tower にあります。カレントディレクトリをこの場所に移動して、
下記コマンドを実行します。

python3 ../../../scripts/mgc_generate.py
python3 ../../../scripts/mgc_build.py

成功すると、./build にビルド生成物ができます。
次に Seeed Studio XIAO RA4M1 と PC を接続して、XIAO RA4M1 に対応するポートを調べます。
私の環境では COM4 が割り当てられましたので、下記コマンドを実行してファームウェアのアップロードを実行しました。

 arduino-cli upload -p "COM4" --fqbn Seeeduino:renesas_uno:XIAO_RA4M1 --input-dir ./build

ファームウェアのアップロードに成功したら、XIAO RA4M1 と PC を切断します。

3. ミニゲーム機の組み立て

ブレッドボードの配線

ブレッドボードの追加

OLED モジュールとタクトスイッチを取り付けるため、ブレッドボードを追加します。

OLED モジュールとタクトスイッチの取り付け

下図のように OLED モジュールとタクトスイッチ3つをとりつけます。

タクトスイッチは、ボタンを押したときに右側と左側の端子が短絡するようにしたいため、下図のようにとりつけます。

VCC, GND の配線

OLED モジュールの GND および VCC 端子を、それぞれ - レーン、+ レーンに接続します。
各タクトスイッチは左右どちらかのピンを - レーンに接続します。ここでは左側の端子を - レーンに接続しました。

拡張したブレッドボードの +, - レーンを使用する場合は、それぞれ VCC, GND につながっていることをご確認ください。
今回の場合は、拡張したブレッドボードの - レーンと電子オルゴールの - レーンを接続しました。

XIAO RA4M1 への配線

タクトスイッチと OLED モジュールを XIAO RA4M1 に配線します。XIAO RA4M1 のピンアウトは公式サイトをご確認ください。

https://wiki.seeedstudio.com/getting_started_xiao_ra4m1/

タクトスイッチ

各タクトスイッチの右側端子を XIAO RA4M1 に接続します。

タクトスイッチ(左から数えて) XIAO RA4M1 備考
1番目 D6 -
2番目 D5 -
3番目 D4 赤色のスイッチ

OLED モジュール

つづいて OLED モジュールを接続します。

OLED モジュール XIAO RA4M1 備考
SCL SPI1_SCK -
SDA SPI1_MOSI -
RES D2 -
DC D7 -
CS D1 -

これで配線は完了です。

4. 動作確認

PC と XIAO RA4M1 を USB ケーブルで接続してゲームの操作ができたら完成です。

※ 日本語化をする場合は、スケッチファイル cat_tower.ino 内の setup 関数の内容を下記のように修正してビルド&書き込みをお願いします。

    //mgc::textdb::set_language(mgc::textdb::Language::English);
    mgc::textdb::set_language(mgc::textdb::Language::Japanese);

※ フォントは美咲フォントを使用させていただきました。

5. ゲームの遊び方

ゲームが始まると「ねこふんじゃった」が流れます。音楽が終わるまでに、塔の上にいる魚を捕まえてください。
捕まえるまでの時間が短いほど、高得点を獲得できます。

このゲームでは、音楽をタイマー割り込みで制御していますが、メインの処理と描画は単純なループで行っています。
そのため、使用するマイコンやドライバの性能が高いほど、猫の動きが速くなって高得点を狙いやすくなります。
もし制御が難しいほど動きが速くなってしまった場合は、タイマーなどを使って更新周期を調整してください。

他のマイコンへの移植やドライバの改造、またはゲーム自体のアレンジなど、いろいろと楽しんでいただけたらうれしいです。

Discussion