![見出し画像](https://assets.st-note.com/production/uploads/images/62927535/rectangle_large_type_2_0426b68aba645b585482ff38afde2e99.jpg?width=1200)
シムレース用スイッチボックス作成 Vol.1
試行錯誤でスイッチボックスを作って形になってきたので、シムレーサーの皆さんのお役に立てればとまとめてみました。
目的
Arduino(マイコンボード)でキーボード、ジョイスティックをエミュレートするプログラムを動かしてシムレースで使うボタンボックスを作成します。
どのような仕組みなのか
ここではPIN2にスイッチをつないで、スイッチが押されたときにジョイパットのボタン2が押されたという信号をPCに送るというプログラムが設定されていることとして説明します。
1. ArduinoのPIN2とGNDにスイッチをつなぐ
2. プログラムを登録
PIN2がLOW(GNDと接した状態)になったらジョイスティックのボタン2が押されたことにするプログラムを登録。
3. プログラムでPINの状態を監視
PINがGNDと接していないときの状態はHIGHと言います。
HIGHはスイッチが押されていないのでなにもしない。
4. スイッチを押す
PINの状態がLOWになる。
LOWになったということはスイッチが押されたということになる。
4. PCにジョイスティックのボタンが押されたと送信
という感じです。
ジョイスティックでなくキーボードが押されたというプログラムにすれば「Sorry!」などチャット文言を送るショートカットボタンが作れます。
Arduinoの選定
Arduinoにはいろいろなバージョンや互換ボードがありますがキーボード、ジョイパットとして使用するにはATmega32U4(というチップ)を使用しているものにする必要があるので今回はArduino Leonardoの互換ボードのLeonardo Pro Microを使用します。
Leonardo Pro MicroにはデジタルIOとアナログIOが合わせて18ピンあり、
この18ピンにスイッチを接続していきます。
(アナログIOはデジタルIOとして使用しすべてデジタルIOとして使います)
単純なのは各ピンにスイッチを接続することなのですが、そうなると最大で18個のボタンしか接続することができません。
ロータリエンコーダをぐるぐる回してABS、TC、MAPなどなどを調整したいとなると右回り、左回り、プッシュの動作をするロータリスイッチをつなぐと1個で3ピン使用するで例えばロータリエンコーダ4個つけると12ピン使用することになり、残り6個しかボタンを付けられなくなります。
そこで単純なボタンに関してはマトリクス配線をすることで、例えば10ピン使用した場合5x5=25個のスイッチを繋ぐことが可能になります。
(マトリクス配線については後程・・・)
ということで、今回は
・10ピン使用してスイッチを25個
・8ピン使用してロータリエンコーダを4個
(プッシュはスイッチの方につなぐ)
つなぐことのできるボタンボックスを作ります。
(なかなか豪華なやつになりそう)