スロットル象限とトリムホイール
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 3 | ||||
| × | 1 |
必要なツールとマシン
> |
| |||
|
アプリとオンラインサービス
> |
|
このプロジェクトについて
はじめに
最近PCをアップグレードしてMSFS2020を実行できるようにしたので、使用していたコントロールを改善するように促されました。キーボードは実際に飛ぶための適切な感触を持っていません、そして私は経験をより良いものにアップグレードしたかったです。私はフルタイムのフライトシマーではなく、フルコックピットや購入したコントロールのセットを作るために多くを費やすためのスペースやお金を買う余裕がありません。
<図>
デザイン
私はCADで、自分が持っているツールを使用して作成できる一連のコントロールの設計に着手し、実際の飛行機がどのように感じられるかを合理的に体験しました。飛行機のコントロールに触れたことがないので、それに基づいています。こうなると思います。
私が望むコントロールは、スロットル、フラップ、着陸装置、およびエレベータートリムホイール用のいくつかの単一レバーであると決定しました。私は主にシムで小型の軽量シングルエンジン飛行機を飛ばしているので、それが私が焦点を当てていたものです。
トリムホイールの設計は最も困難であり、私が望むルックアンドフィールを提供すると思われる設計を思い付くまでに、何日にもわたっていくつかのスケッチのアイデアが必要でした。
<図><図>
<図>
ビルド
すべてのパーツは私のUPにABSで3Dプリントされました!プリンター、それらは次に塗装され、Arduino、最初はレオナルドに配線され、次にマイクロに交換されました。使用しないときは簡単に収納できるプラグアンドプレイユニットになります。
パーツ
3Dプリントパーツリスト
各レバーモジュールには
が必要です
各ホイールモジュールには
が必要です
バックボックスパーツは、Arduinoと配線を収納するために使用できます。
結論
非常に楽しいビルドで、コーディングの観点からは非常に簡単です。このビルドでの本当の課題は、デザイン、特にトリムホイールと感触の取得でした。 右。
コード
- Quadrant.ino
Quadrant.ino Arduino
設定変数とシリアルモニターを使用して、各ポテンショメーターのエンドポイント値を見つけ、axisLimits配列に入力します#includeJoystick_ Joystick; // analogReadの最大値と最小値をこれらに入力します配列//これらは0〜1023の範囲に変換されますint axisLimits0 [] ={686、338}; int axisLimits1 [] ={345、695}; int axisLimits2 [] ={327、678}; int axisLimits3 [] ={342、692}; int axisLimits4 [] ={0、1023}; int axisLimits5 [] ={0、1023}; //これらの変数を設定して軸をオンまたはオフにしますboola0Used =true; bool a1Used =true; bool a2Used =true; bool a3Used =true; bool a4Used =false; bool a5Used =false; //設定モードは、ピン値と変換された値をシリアルモニターに出力します// int設定=-1; //シリアルモニターへの印刷なし// intsetting =2; //値0〜5、ピン値をシリアルモニターに出力int設定=-1; void setup(){if(a0Used)pinMode(A0、INPUT); if(a1Used)pinMode(A1、INPUT); if(a2Used)pinMode(A2、INPUT); if(a3Used)pinMode(A3、INPUT); if(a4Used)pinMode(A4、INPUT); if(a5Used)pinMode(A5、INPUT); Joystick.begin(); if(setting> =0)Serial.begin(9600);} void loop(){int value =0; int pos =0; if(a0Used){value =analogRead(A0); pos =translateValue(value、axisLimits0 [0]、axisLimits0 [1]); Joystick.setThrottle(pos); if(setting ==0)settingPrint(value、pos); } if(a1Used){value =analogRead(A1); pos =translateValue(value、axisLimits1 [0]、axisLimits1 [1]); Joystick.setRxAxis(pos); if(setting ==1)settingPrint(value、pos); } if(a2Used){value =analogRead(A2); pos =translateValue(value、axisLimits2 [0]、axisLimits2 [1]); Joystick.setRyAxis(pos); if(setting ==2)settingPrint(value、pos); } if(a3Used){value =analogRead(A3); pos =translateValue(value、axisLimits3 [0]、axisLimits3 [1]); Joystick.setRzAxis(pos); if(setting ==3)settingPrint(value、pos); } if(a4Used){value =analogRead(A4); pos =translateValue(value、axisLimits4 [0]、axisLimits4 [1]); Joystick.setXAxis(pos); if(setting ==4)settingPrint(value、pos); } if(a5Used){value =analogRead(A5); pos =translateValue(value、axisLimits5 [0]、axisLimits5 [1]); Joystick.setYAxis(pos); if(setting ==5)settingPrint(value、pos); } delay(5);} int translateValue(int v、int f1、int f2){//値を0〜1023の範囲に変換しますint result =0; int start =0;フロート範囲=0; if(f1 1023)result =1023;結果を返します;} voidsettingPrint(int value、int pos){Serial.print(value); Serial.print( ""); Serial.println(pos);}
カスタムパーツとエンクロージャー
必要な場合に備えてタブのないもの私が使用するもの Sketchfabはまだ処理中です。
このファイルには、すべてのパーツがSTEPファイルとして含まれています 回路図
さらにコントロールを追加するには、5VとGRDを接続し、ピンA1からA5を使用します製造プロセス