X-Plane コクピットの自作に挑戦!
X-Plane 針路バグのコントロール
ロータリーエンコーダを使用して、針路バグを制御。

X-Plane 10.31r3-1
X-Plane 10.31r3-11
右下のノブを回すとオレンジのマーカーが動作する、数字が変化する。これをロータリーエンコーダで回します。



今回の実際のレイアウトと配線図です。

P1010809.JPG-1

ロータリーエンコーダをTeensyに繋いだだけのシンプルな配線です。


針路バグ図面

ピンはこれ以外でももちろん動作します。色々試して見てください。

針路バグのスケッチ
これは、スケッチを公開しているこのサイトから頂きました。
X-Plane heading-bug.ino

#include <Encoder.h>
 
Encoder myEnc(7, 8);
short myEncPrev = 0;
 
FlightSimFloat headingBug;
 
void setup() {
  headingBug = XPlaneRef("sim/cockpit2/autopilot/heading_dial_deg_mag_pilot");
}
 
void loop() {
  FlightSim.update();
 
  // divide by 4 to find how many 'clicks' the encoder's gone through
  short myEncDiff = (myEnc.read() - myEncPrev) / 4;
 
  if (myEncDiff) {
    // only update prev when we've reached a detent!
    myEncPrev = 0;
    myEnc.write(0);
 
    // copy dataref to temporary value
    float hdg = headingBug;
 
    // apply changes to temp value
    hdg += myEncDiff;
 
    // do range checking
    while (hdg < 0.0) hdg += 360.0;
    while (hdg >= 360.0) hdg -= 360.0;
 
    // write validated new heading back to dataref
    headingBug = hdg;
  }
}
2行目が繋ぐピンの位置です。
Encoder myEnc(7, 8);


このコードは既に、1メモリずつカウントするように設定されています。
comments powered by Disqus
Contents