BVE 鉄道シミュレーターで自宅運転台を動かそう~電車でGoコントローラーを使う~の続きです。
https://qiita.com/usashirou/items/ac358a8828f54f97bc2b
今回は、 電流計をスピードメーターとして動かしてみる で作った速度計をBVEで動かしてみます。
https://qiita.com/usashirou/items/4a57c976fb4771e29ca8
ATSプラグイン
速度をBVEから出力し、速度計(電流計)に表示してみましょう。
今回使用するのは BveSerialOutput です
速度などの情報をシリアルポートから出力するBVE用プラグインを製作してみました。
— ED67900-5 (@ED67900_5) March 31, 2019
設定ファイルエディタで設定ファイルを編集することで、出力するテキストのフォーマットを自由に変えられます。
なお、このプラグインはC#で作成しました。https://t.co/YATpQRlP2Q pic.twitter.com/gSlhv3n1u2
ED67900-5さんは 実物車両運転シミュレータ製作講座 などを発行されている運転台シミュレーターを作られている方になります。
通販開始しました!!
— ED67900-5 (@ED67900_5) December 31, 2021
実物車両運転シミュレータ製作講座 | ツナギ図laboratory https://t.co/PEr4Y9Ltea #booth_pm
シリアル出力エディタを設定する
シリアル出力エディタ.exeを起動します。
警告が出ますが、詳細情報をクリックします。
実行します。
出力するポート番号、通信速度、列車速度を設定して保存をクリックします。
列車速度の桁数を変更しないと常に1桁の数字のみが送られます。
今回は125Kmまでなので3桁にしましょう。
保存する場所は、C:\Users\user\Desktop\Scenarios\Uchibo20\E217r\Ats\x86 にします。
**保存場所はATSプラグインのある場所となる為、ATSプラグインの読み込む場所に合わせて変更してください
車両を改造する
先のプラグインを使うには車両を改造する必要があります。
車両のデータは detailmodules.txt に記載されています。
ここに先のプラグインを登録します。
C:\Users\user\Desktop\Scenarios\Uchibo20\E217r\Ats\x86 の detailmodules.txt を編集します。
なお、プラグインは上から読み込むようで、順番によっては反映されないことに注意してください。
SerialOutput.dllを一番上に追記します。
また、先ほどダウンロードした SerialOutput.dll をコピーしておきます。
外部デバイスを準備する
外部デバイスとして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.3Vの電圧を255で割った値を出力するプログラムになっています。
デバックモード
SerialOutput の デバックモード にチェックすると出力内容が表示されます。
以上で、とりあえずスピードメーターが動くようになったと思います。
BVEで動かす
BVEで動かした映像になります
ESP32とArduinoUnoでBVEを動かしてみた pic.twitter.com/9tXcI20sAR
— usashirou (@usashirou1) February 6, 2022
引用・著作権表示
© 2020 mackoy
© 三八電車店
© ねぎ味噌BVE公開所
© ED67900-5
© ツナギ図laboratory