DCCで自動運転(4)~スクリプトの意味~

このところ、朝晩はけっこう涼しいのですが、昼間はまだ夏!
それでも33℃とかだと死にそうな感じは無くなるのが嬉しいッス。
さらに仕事の環境が冷暖房完備なのも嬉しいッス~o(^^)o

さて・・・
最大の懸案だった FLAG(フラグ)とか、LABEL (ラベル)などの関数の理解ですが、本当にできるんだろうか???
と、
か~~~なり不安でした。

他の方のスクリプトを見ても全くワケが分かりません。
こちらの下のほうに紹介されてる皆さんの運転記事を見ていてもクエスチョンマークがアタマの中にイッパイ!!(´Д` )

ク ク ク ク クエスチョン~~♪♪ なんていう曲がグルグルwww(古!!!)

前回試したYaasan様の 「Y字ルート1センサー」では、簡単なフラグを使いましたが、
それでもイマイチ分かってませんでした。


どうしたもんじゃろの~・・・・・
(今回の朝ドラは見事に外しましたな...(笑))







私の悪い癖で、すぐにアタマで考えようとしてしまいます。
こういうことは実際に紙に書いてみると分かるということは何度も実践してきたのに・・・

Yaasan様のスクリプトを分解してみます。

(このスクリプトを開始する条件(トリガー)を、センサー(1)への「進入」と仮定。)

*****ココから

DESKTOPSTATION,SCRIPT,2013

SPEED,0,0,50 (スピードを5秒間で0にする)
DIRECTION,0,2,0 (進行方向を前進にする)

JUMP,LEFT,1,1 (※1)
(最初の「1」は「フラグ1」 、 あとの「1」はフラグの数(変数)の意味)
→ 「フラグ1」が「1」なら「 LEFT 」 というラベルにジャンプする

ACCESSORY,3,0,0 (ポイント(3番)を直進側に変換)(※2)
SPEED,0,256,50 (スピードを5秒間で 256 にする)
WAIT,30,,0 (3秒待つ)
SPEED,0,0,50 (5秒間でスピードを 0 にする)
DIRECTION,0,1,0 (進行方向を後進に)
WAIT,20,,0 (2秒待つ)

SETFLAG,1,1,0
(最初の「1」は「フラグ1」 、 あとの「1」はフラグの数(変数=任意の数字)の意味)
→ 「フラグ1」を「1」にセットする

SPEED,0,256,50 (スピードを5秒間で256にする)
EXIT,,,0 (スクリプト終了)(※3)

(センサー(1)が反応(進入)して初回のスクリプトは 最初からここまでが動く)
(次にセンサー(1)が反応したときには、「フラグ1」は「1」になっているので、「LEFT」にジャンプする)

LABEL,LEFT,,0
(「LEFT」というラベルを設定。)
→以下のスクリプトは ※1で「フラグ1」が「1」だったらココへ飛んでくる。

ACCESSORY,3,1,0 (ポイント(3番)を分岐側に転換)
SPEED,0,256,50 (スピードを5秒で256へ上げる)
WAIT,30,,0 (3秒待つ)
SPEED,0,0,50 (スピードを5秒で0に下げる)
DIRECTION,0,1,0 (前後進を後進に切替)
WAIT,20,,0 (2秒待つ)

SETFLAG,1,0,0
→ここで「フラグ1」の数字(変数)を「0」に戻す
→→つまり、この「LEFT」スクリプトが終了してからセンサー(1)が反応した場合は、「フラグ1」は「0」に変わっているので、
※1 でJUMPコマンドが反応しないため、スクリプトは※2~※3へつづく。

SPEED,0,256,50 (スピードを5秒で256へ上げる)
EXIT,,,0 (スクリプト終了)

*****ココまで


ええ、、、、と・・・・・・・書いたらナットクしました。

なるほどね~
こういう設定をすることで、同じセンサーに違う働きを与えることができるんですね~(^^)

知っている人から見ればごく簡単なことなんでしょうが、今まで変数なんて概念を知らなかった人間だとワカラナイという。。。

でも、これが理解できたおかげで、1車輌のスイッチバックなら書くことができたんです!!o(^^)o
もう嬉しかったことと言ったらありません!!!\(^▽^)/
え?オオゲサ??www

定義ファイルは長いのでココでは割愛wさせていただいて・・・

早速実践!!

S88センサーを置くとケーブルを引っ張らねばならないので、レール配置をやり直しました。


が、、、ちょと疲れましたのでまた次回。。。m(_ _)m




名前
URL
削除用パスワード
by i-qss | 2016-09-03 06:03 | 鉄道模型(DCC自動運転) | Comments(0)

なんくるないさぁ。。。


by taka@