MobiFlight でボリュームを接続した Arduino で Microsoft Flight Simulator (MSFS) のスロットルコントロールができるところまでできましたが、1つ問題があります。
それは下記の写真のように、普通の回転ボリュームは最小から最大まで回すとだいたい300度回転します。ラジオやオーディオのボリュームのツマミを思い出してもらえばよいかと思います。
なので、飛行機のスロットルとしては回りすぎです。
下のようにだいたい90度くらいで最小から最大をコントロールできるようにしたいです。
MobiFlightでこれをどう設定するのか最初分からなかったのですが、いろいろ調べてみたところ、デバイスからの値を計算式で変更することができることが分かりました。
それは、 InputConfigWizard の画面で、デフォルトでは表示されていないのですが、Show Preset Code をチェックすると、Arduino から読み込んだ値を MSFS に渡すときに変換している計算式が表示され、これを修正すれば良さそうです。
で、この計算式(逆ポーランド式で記述されている)の 16.0147 なのですが、これは、Arudino 側の値が 0~1023 の範囲で送られてくるのですが、MSFS 側は 0~16383 の値が必要なので、16383 ÷ 1023 = 16.0147 で Arduino からの値を 16.0147 倍しているという意味です。
また、16383 以上にならないように最大値を 16383 に設定していいます。(16383 以上の値になった場合 16383 になる)
なので、ボリュームで 300度回転するうちの 90度 まで回したところで最大になるように、 300 ÷ 90 = 3.3333333 を 16.0147 に掛けて、3.3333333 × 16.0147 = 53.382 となり、16.0147 のところを、53.382 に変更します。
これで、MSFS で試してみます。
OK!
だいたい90度回転したところでスロットル出力が最大(右上に写っている黒いスロットルレバーが最も奥に押し込まれている)になっているようですね。
次は、スロットルの操作がボリュームのツマミでは雰囲気でないので、スロットルレバーを作成したいと思います。