BVE 鉄道シミュレーターで自宅運転台を動かそう～速度計を動かす

BVE 鉄道シミュレーターで自宅運転台を動かそう～電車でGoコントローラーを使う～の続きです。
https://qiita.com/usashirou/items/ac358a8828f54f97bc2b
今回は、 __電流計をスピードメーターとして動かしてみる__ で作った速度計をBVEで動かしてみます。
https://qiita.com/usashirou/items/4a57c976fb4771e29ca8
# ATSプラグイン
速度をBVEから出力し、速度計（電流計）に表示してみましょう。
今回使用するのは __BveSerialOutput__ です
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">速度などの情報をシリアルポートから出力するBVE用プラグインを製作してみました。<br>設定ファイルエディタで設定ファイルを編集することで、出力するテキストのフォーマットを自由に変えられます。<br>なお、このプラグインはC#で作成しました。<a href="https://t.co/YATpQRlP2Q">https://t.co/YATpQRlP2Q</a>
 <a href="https://t.co/gSlhv3n1u2">pic.twitter.com/gSlhv3n1u2</a></p>&mdash; ED67900-5 (@ED67900_5) <a href="https://twitter.com/ED67900_5/status/1112336446994542592?ref_src=twsrc%5Etfw">March 31, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ED67900-5さんは __実物車両運転シミュレータ製作講座__ などを発行されている運転台シミュレーターを作られている方になります。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">通販開始しました！！<br><br>実物車両運転シミュレータ製作講座 | ツナギ図laboratory <a href="https://t.co/PEr4Y9Ltea">https://t.co/PEr4Y9Ltea</a> <a href="https://twitter.com/hashtag/booth_pm?src=hash&amp;ref_src=twsrc%5Etfw">#booth_pm</a></p>&mdash; ED67900-5 (@ED67900_5) <a href="https://twitter.com/ED67900_5/status/1476792574489014275?ref_src=twsrc%5Etfw">December 31, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# シリアル出力エディタを設定する
シリアル出力エディタ.exeを起動します。
警告が出ますが、詳細情報をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/d257658d-384c-aa0f-a0c8-ff3f28a9885c.png)
実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/fd90c25e-9017-3aa0-3372-0636c8122290.png)
出力するポート番号、通信速度、列車速度を設定して保存をクリックします。
列車速度の桁数を変更しないと常に１桁の数字のみが送られます。
今回は125Kmまでなので3桁にしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/3df68dbc-e684-8611-3613-68d868eceb87.png)
保存する場所は、__C:\Users\user\Desktop\Scenarios\Uchibo20\E217r\Ats\x86__ にします。
__**保存場所はATSプラグインのある場所となる為、ATSプラグインの読み込む場所に合わせて変更してください__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/373fa317-d8ec-f479-a800-31d54e238137.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/0f599d6a-8c00-9b58-5ec8-72cbcfaff65b.png)
# 車両を改造する
先のプラグインを使うには車両を改造する必要があります。
車両のデータは __detailmodules.txt__ に記載されています。
ここに先のプラグインを登録します。
__C:\Users\user\Desktop\Scenarios\Uchibo20\E217r\Ats\x86__ の __detailmodules.txt__ を編集します。
なお、プラグインは上から読み込むようで、順番によっては反映されないことに注意してください。
SerialOutput.dllを一番上に追記します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/c39b47b6-c247-8ff4-10d7-6b66ae7f17f9.png)
また、先ほどダウンロードした __SerialOutput.dll__ をコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/9ed4a94a-c51c-3d01-2d8b-b614ed6bcdc6.png)
# 外部デバイスを準備する
外部デバイスとしてArduino等で製作したメータ類を使用します。
__電流計をスピードメーターとして動かしてみる__ でESP32の出力ピンに可変抵抗を付けてメータを動かせるようにしています。
https://qiita.com/usashirou/items/4a57c976fb4771e29ca8
今回は、最大4個のメータを動かしたいのでdacwriteからledcに変更しました。
# プログラム

```
const int dac1 = 25;
const int dac2 = 26;
const int dac3 = 32;
const int dac4 = 33;
char bvein;

void setup() {
  pinMode(dac1, OUTPUT);
  pinMode(dac2, OUTPUT);
  pinMode(dac3, OUTPUT);
  pinMode(dac4, OUTPUT);

  ledcSetup(1, 12800, 8);
  ledcSetup(2, 12800, 8);
  ledcSetup(3, 12800, 8);
  ledcSetup(4, 12800, 8);
  ledcAttachPin(dac1, 1);
  ledcAttachPin(dac2, 2);
  ledcAttachPin(dac3, 3);
  ledcAttachPin(dac4, 4);
  Serial.begin(115200);
  //  Serial.setTimeout(100);      
}

void loop() {
  int input;
  if (Serial.available() > 3) {//3バイト以上入力された場合
    bvein = Serial.parseInt();   
    if (bvein != -1 ) {
      if (bvein >= 0 && bvein <= 125) { //スピードが125Km以下なら速度計に計算値を出力する
        ledcWrite(2, bvein * 1.45); //メータと実際の表示の誤差を埋めるためにbveinに加減算する
      }
    }
  }
}
```

最大125Kmまでの速度を3.3Ｖの電圧を255で割った値を出力するプログラムになっています。
# デバックモード
__SerialOutput__ の __デバックモード__ にチェックすると出力内容が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/e29c6780-0129-6fd6-96a3-d53096002555.png)

以上で、とりあえずスピードメーターが動くようになったと思います。
# ＢＶＥで動かす
ＢＶＥで動かした映像になります
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ESP32とArduinoUnoでBVEを動かしてみた <a href="https://t.co/9tXcI20sAR">pic.twitter.com/9tXcI20sAR</a></p>&mdash; usashirou (@usashirou1) <a href="https://twitter.com/usashirou1/status/1490289573196288001?ref_src=twsrc%5Etfw">February 6, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 引用・著作権表示
© 2020 mackoy
© 三八電車店
© ねぎ味噌BVE公開所
© ED67900-5
© ツナギ図laboratory