DSシールド2のパワーオンオフを改造する
テンキーボードコントローラーですが、テンキーUSBコントローラーと操作性の互換をとるために、線路DCC電源オンオフは、BSキーのトグル動作にしたいと思いました。
しかしDCシールド2のシリアル通信では、線路DCC電源のオンオフを通知するコマンドは用意されていません。電源のオンオフを通知するコマンドを追加改造してコントローラー側で対応しようかと思いましたが、むしろ線路DCC電源オンオフをトグル動作できるようなコマンドを作った方が楽だと気がついたので改造しました。
線路電源,Power PW(PowerFlag) のパラメーターに 9 トグル動作を追加しました。
改造追加箇所は、DSshield.ino の boolean dispatch() {……}内の下記の赤字部分です
else if ((function == "setPower") || ((function == "sPW")))
{
if( arguments[0] == 9)
{
if( DSCore.IsPower() == 1) //パワーオンならオフ
{
arguments[0] = 0;
}
else //パワーオフならオン
{
arguments[0] = 1;
}
}
if( arguments[0] == 1)
{
/* 状態変更 */
gLED_State = LEDSTATE_RUN;
}
else
{
/* 状態変更 */
gLED_State = LEDSTATE_STOP;
}
/* LED状態の変更 */
changeLED();
return DSCore.SetPower(arguments[0]);
}
テンキーボードコントローラーのスケッチで、BSキーを押すと setPower(9)が送信されるように改造しました。
これでBSキーでDCC線路電源のオンオフがトグル動作でできるようになりました。
線路電源状態はDSシールド本体のLEDで確認します。
Recent Comments