つじるの忘れんぼ鉄道

DCC自動運転で秋葉原にあった交通博物館のジオラマを目指すブログ

DSbasic 入門してみる(4)往復運転+1分岐

前回は単純な往復運転を自動化しました。

今回はポイント制御を追加し、往復するたびに検知区間①と②が入れ替わるようにします。

f:id:tsujiru:20190501161954p:plain

 

コードは以下の通り。

前回からの大きな差分は、検知区間③の処理にポイント(Adr:31)の制御(赤文字箇所)を追加したことで、これにより、検知区間①/②へ順番こに入線するようにしました。

screen(7)
s88start

sleep 5000
pwr 1
print "START S88 Control -Shuttle-"
acc 31,1
acc 41,1
prePos = 0
sleep 4000

dir 51,1
fnc 51,0,1
fnc 51,1,1
sleep 2000
fnx 51,2
sleep 2000
spd 51,200

while 1

if s88get(1)=1 then
if prePos = 1 then
else
print "S88.1 Detected"
prePos = 1
sleep 1000
spd 51,0
sleep 10000
dir 51,2
sleep 2000
fnx 51,2
sleep 2000
spd 51,200
end if
end if

if s88get(2)=1 then
if prePos = 2 then
else
print "S88.2 Detected"
prePos = 2
sleep 500
spd 51,0
sleep 10000
dir 51,2
sleep 2000
fnx 51,2
sleep 2000
spd 51,200
end if
end if

if s88get(3)=1 then
if prePos = 3 then
else
print "S88.3 Detected"
if getacc(31) = 0 then
acc 31,1
end if
if getacc(31) = 1 then
acc 31,0
end if
prePos = 3
spd 51,0
sleep 10000
dir 51,1
sleep 2000
fnx 51,2
sleep 2000
spd 51,200
end if
end if

wend

end

 

上記を実行すると、検知区間に進入して検知されたタイミングに「S88.X Detected」と表示されるので、処理状況をある程度把握できます。

f:id:tsujiru:20190501194410p:plain

デバッグ中などは、print文による出力粒度を上げることで、切り分け作業が楽になります。

 

ということで、実際に動きはこちらの動画をどうぞ。


DSbasic 自動往復運転 + 1分岐

 

おわり