見出し画像

「ゲーム機」も作って遊ぼう!MakeCodeArcade 番外編 ジョイスティックを使おう

はじめに

自分でゲーム機を作れることのメリットのひとつに、「すぐにカスタマイズできる」というものがあります。

STM32F4ボードを使ったHomeMadeコンソールも、ファームウェアの書き換えや回路次第で色々なことができちゃったりします。

今回は アナログコントローラ、いわゆる ジョイスティック を繋いでコントロールしてみましょう〜。

使うジョイスティック

スクリーンショット_2020-03-03_19-35-26

写真は aliexpress より。だいたい 50〜100円 くらい。

arduino用モジュール でお馴染みのやつです^^

X軸とY軸にそれぞれ ポテンショメータ(可変抵抗)がついていて、スティックの動きに合わせて変わる電圧をマイコンのADC(アナログ→デジタル変換回路)で読み取る仕組みだ。

スイッチも付いていて、スティックを押し込むとグランドに落ちる信号線も付いたりします。

board.h の修正

マイコンボード側はADC機能が使えるピンを使う必要があります。筆者が使用している廉価STM32F411中華ボードだと、10本がADCとして使えるみたい。(PA0〜PA7およびPB0,PB1)

それで、board.h を修正していきます。board.h の修正については以下の記事を参照してください。


board.h には方向ボタン(上下左右の4方向)を定義する箇所があるのですが、アナログコントローラは前述の通り、二軸 です。少ないですね〜。どうしましょう〜?

答え:
・左右ボタン(X軸)に同じピン。上下ボタン(Y軸)に同じピンを割り当てる。計2本ということになります!
・それぞれのピンの定義値に、+方向(右 or 下)であれば 1100、−方向(左 or上)であれば 1200 を加算する。

まあ、仮にX軸をPB0、Y軸をPB1ピンにつなぐなら、以下の通りということですね…

   47, 0x10+1200, // PIN_BTN_LEFT = PB00(ADC)
   48, 0x10+1100, // PIN_BTN_RIGHT = PB00(ADC)
   49, 0x11+1200, // PIN_BTN_UP = PB01(ADC)
   50, 0x11+1100, // PIN_BTN_DOWN = PB01(ADC)

これで、ビルドかけたファームウェアを突っ込めば、マイコン側が自動的にジョイスティックとして読み込んでくれるはず。

プログラム側も、下図のようにブロックを積むだけで、ハートマークが舞い散る中(笑)、キャラクターを動かせたりします…本当に凄いですね!

スクリーンショット_2020-03-03_22-33-23

さて…、そろそろ自分でも何かゲーム作りたいのだけど…

いいアイデアが無い…\(^o^)/

この記事が気に入ったらサポートをしてみませんか?