単純折り返し動作(センサ+ポイント)について説明します。
Simple wrapping behavior (sensor + point) describes.
以下の”エリア4”、”エリア5”と”エリア8”をセンシングすることで、ポイント(分岐器)を交えた自動運転してみます。
実際のスクリプトは、以下のとおりです。
これで実行すると、「”エリア4”→”エリア5”→”エリア8”→”エリア5”→元に戻る」
を繰り返す動作をします。
import jarray
import jmri
class A_singlepoint(jmri.jmrit.automat.AbstractAutomaton) :
def init(self):
self.Sensor8 = sensors.provideSensor("8")
self.Sensor5 = sensors.provideSensor("5")
self.Sensor4 = sensors.provideSensor("4")
self.throttle = self.getThrottle(5, True) # address 5
self.t2 = turnouts. provideTurnout("2") # point address 2
if (self.throttle == None) :
print "Couldn't assign throttle!"
return
def handle(self):
self.t2.state = CLOSED # point straight
self.throttle.setIsForward(True)
self.throttle.speedSetting = 0.31
self.waitSensorActive(self.Sensor5)
self.waitMsec(500)
self.throttle.speedSetting = 0
self.waitMsec(1500)
self.t2.state = THROWN # point curve
self.throttle.setIsForward(False)
self.throttle.speedSetting = 0.31
self.waitSensorActive(self.Sensor8)
self.throttle.speedSetting = 0
self.waitMsec(1500)
self.throttle.setIsForward(True)
self.throttle.speedSetting = 0.31
self.waitSensorActive(self.Sensor5)
self.waitMsec(500)
self.throttle.speedSetting = 0
self.waitMsec(1500)
self.t2.state = CLOSED # point straight
self.throttle.setIsForward(False)
self.throttle.speedSetting = 0.31
self.waitSensorActive(self.Sensor4)
self.throttle.speedSetting = 0
self.waitMsec(1500)
return 1# to continue
# create one of these
a = A_singlepoint()
# set the name
a.setName(" A_singlepoint script")
# and start it running
a.start()
上記の赤文字部分が、ポイント設定部になります。
例をとって説明します。
self.t2 = turnouts. provideTurnout("2") # point address 2
ポイントアドレス”2”に設定されたポイントを”t2”とします。
(※:ポイントアドレスの設定はDSC50Kにて事前に行っておきます)
self.t2.state = CLOSED # point straight
“t2”を”まっすぐ”に設定します。
上記スクリプトでは、車両を動かす前にまずデフォルトの”まっすぐ”にしています。
self.t2.state = THROWN # point curve
“t2”を”まがる”に設定します。
上記スクリプトでは、エリア5に到着したあとでポイントを”まがる”にしています。
実際に動かした動かした様子が以下の動画です。