So-net無料ブログ作成

DSBasicによる自動運転デバッグその2 [自動運転]

 やっと明日は休みなので、鉄道模型ショウに行くつもりですが、子供を誘ったのに誰も行かないらしいです。残念?ながら一人で羽をのばすことにします。
 さて、DSBasicがR0.3になって、バグがなくなり、プログラム領域も広がったとのことで、試してみました。特にバグのようなものは見つかりませんでした。ArduinoのCOMのコンソールからプログラムをかけるので、かなりデバッグ効率が上がります。でも、Arduinoのコンソールからは実行中のソフトは止められないようです。(ESCキーのコンソールでの送り方が分からない。エスケープシーケンスで送れるのか?)
 レイアウトは前回と同じで、メイカーフェア用のレイアウトの内回りです。
 レイアウトのセンサとアクセサリアドレスは以下のようになっています。
説明.png
 今回の自動運転は、まず信号機については、1,2,3,4共に閉塞区間?を持っていることにしてあり、信号機1を電車が通過すると、信号機4が黄色、信号機3が青色という風に変わります。信号機2だけちょっと変わっており、信号機1を電車が通過したら赤になり、電車を駅に止めます。(なんかこういう信号は変かもだかよくわからん)
実際のレイアウトは以下です。
re_DSC00823.jpg
動画は以下です。信号機1が手前、信号機2が奥に写っています。

そして、プログラムですが、以下です。
--------
75 T = 10
80 L= 3
85 S=25
90 D=50
100 A=GS8(0)
105 PRINT "S88(",A,")"
110 IF A&1 GOSUB 200
120 IF A&2 GOSUB 300
130 IF A&4 GOSUB 400
140 IF A&8 GOSUB 500
150 DELAY 300
155 CLS
160 GOTO 100
200 ACC 42,0:DELAY D:ACC 43,0:DELAY D:ACC 54,1:DELAY D:ACC 51,1:DELAY D
205 ACC 46,0:DELAY D:ACC 47,0:DELAY D:SPX L,S,0,T
206 DELAY 2000:ACC 46,1:DELAY D:ACC 47,1:DELAY D:SPX L,0,S,10
207 A = GS8(0)
210 RETURN
300 ACC 46,0:DELAY D:ACC 47,0:DELAY D:ACC 42,1:DELAY D:ACC 55,1
310 RETURN
400 ACC 50,0:DELAY D:ACC 51,0:DELAY D:ACC 46,1:DELAY D:ACC 43,1
410 RETURN
500 ACC 54,0:DELAY D:ACC 55,0:DELAY D:ACC 50,1:DELAY D:ACC 47,1
510 RETURN
--------

 プログラムの説明ですが、まず変数です。
a:S88のビットを保持します
d:Acc命令を立て続けに出すと切り替わらないことが多々あるので、そのためのWait[ms]を可変にしています。
10msではときどきしくじるので、50msにしました。
L:電車番号です。
S:自動運転時の最高スピードです。
T:電車停止までの時間です。
 次にプログラムの中身の説明です。
~90:初期値を設定しています。
100~160:いわゆるメインループでS88の値をとってきて、その値によって分岐させています。何もない場合は300ms待って、最初に戻ります。
200~210:信号機1の所の処理です。踏んだら、各信号機の色を変えた後、信号機2を赤にして、数秒後に電車が駅に止まるようにします。数秒後、信号機2を青にして、出発します。なお207行目でS88を一度読みだしていますが、これは、S88のバッファを最新にするためのゴミデータの掃き出し動作になります。(これをいれないと、センサを通過した後なのに、もう一回信号機1を通ったことになり電車が止まります)
300~310、400~410、500~510:各信号機の色を変更します。通過した信号機を赤にして、一つ前の信号機を黄色にして、二つ前の信号機を青にしています。
200~210も300以降と同様にすることで、単なる信号機制御だけするモジュールにも出来ます。この場合は電車は線路側にDCCを繋がらなければアナログでの制御などでも可能です。

まだ、DSBasicは少し領域が残っているので、外回りの信号機も制御しようかなあと思っております。
あと、駅にメロディーをいれようかなあと思っていたりしますが、まあ、明日から会社の夏休みなので、ゆるゆるとやって行こうと思います。(いや、メイカーフェアは来週の土日じゃないのか?という気もする)

あと、子供にこのレイアウトの木の質感よくない?と言ったら、ちゃんとニセ芝生(少し前にダイソーで買った)とかつけてちゃんとしたジオラマにしてほしいという要望があった。どうしようかなあ。

コメント(2)  トラックバック(0) 

コメント 2

Yaasan

0.40bを更新しました。エディタもあるのでご確認ください。
by Yaasan (2016-07-30 18:29) 

fujigaya2

更新ありがとうございます。
確認いたします。
by fujigaya2 (2016-07-30 22:18) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0