#--- サンプル演出1 ---
def Sample1											#defを省略して「Sample1」と書いても同じ。
	wait abs 10000				#演出開始から10秒以上経過するまで待つ
	speed 10				#分周比を設定する
	repeat 5				#繰り返しの先頭
		call Gata3			#「3×2回がたがたする」を呼ぶ			#goto,call共に、ラベルの前方参照/後方参照どちらも可能。これは前方参照の例である。
		wait 500			#500[ms]待つ					#「wait rel 500」と書いても同じ。
	end					#繰り返しの終端
	wait abs 20000				#演出開始から20秒以上経過するまで待つ
	speed 5					#分周比を設定する
	repeat 10				#繰り返しの先頭
		call Gata3			#「3×2回がたがたする」を呼ぶ
		wait 250			#250[ms]待つ					#「wait rel 250」と書いても同じ。
	end					#繰り返しの終端
	move 100				#絶対位置100へ移動する				#「move abs 100」と書いても同じ。
	wait 1000				#1秒待つ
	move -100				#絶対位置-100へ移動する				#「move abs -100」と書いても同じ。
end

#--- サンプル演出2 ---
def Sample2											#defを省略して「Sample2」と書いても同じ。
	init					#初期動作を行う					#「move init」と書いても同じ。
	wait abs 5000				#演出開始から5秒以上経過するまで待つ
	stop					#動作完了していなくても、停止する		#「move stop」と書いても同じ。
	user 10					#アプリケーション定義命令10番を実行する
	goto Sample1				#Sample1へジャンプする				#goto,call共に、ラベルの前方参照/後方参照どちらも可能。これは後方参照の例である。
end

#--- サンプル演出3 ---
def Sample3											#defを省略して「Sample3」と書いても同じ。
	repeat					#無限繰り返しの先頭
		call Gata3			#「3×2回がたがたする」を呼ぶ
		wait 500			#500[ms]待つ					#「wait rel 500」と書いても同じ。
	end					#無限繰り返しの終端
#end												#無限繰り返しのため、ここへは到達しないので、endが不要である。

#--- 3x2回がたがたするサブルーチン ---
def Gata3											#defを省略して「Gata3」と書いても同じ。
	repeat 2				#外側の繰り返しの先頭
		repeat 3			#内側の繰り返しの先頭				#goto,call,repeatは、スタックサイズまでネスト可能。2014/4/25現在、スタックサイズは4と定義している。
			move rel +1		#少し進む					#「move rel 1」と書いても同じ。
			wait			#動作完了を待つ					#「wait stop」と書いても同じ。
			move rel -1		#少し戻る
			wait			#動作完了を待つ					#「wait stop」と書いても同じ。
		end				#内側の繰り返しの終端
		wait 100			#100[ms]待つ					#「wait rel 100」と書いても同じ。
	end					#外側の繰り返しの先頭
end

#--- 式を使用した例 ---
def Sample4											#defを省略して「Sample4」と書いても同じ。
	wait abs (1+2)*1000			#演出開始から3秒以上経過するまで待つ		#「wait abs 3000」と書いても同じ。
	move -(30*5/10)				#接待位置15へ移動する				#「move -15」と書いても同じ。
end

#//{{2014/11/28変更:パルスモーターの直接制御を追加したことに伴い、シーケンサの命令セット,命令コード,命令コード定義用マクロを変更しました。}}
#--- パルスモーターの直接制御の例 ---
def Sample5_1
	speed 5					#┐
	move direct 10 always			#│						#alwaysを省略して「move direct 10」と書いても同じ。
	wait					#│
	speed 4					#│
	move direct 10 always			#直接制御による段階的な加速を行う		#alwaysを省略して「move direct 10」と書いても同じ。
	wait					#│
	speed 3					#│
	move direct 100 always			#│						#alwaysを省略して「move direct 100」と書いても同じ。
	wait					#┘

	wait 100

	speed 5
	move direct -200 if off until rise	#既にセンサを検出していなければ、センサを検出するまで最大200パルス移動する。
	wait
end
#↓dRudSeqP.batを利用すると、Sample5_1と同じシーケンスを、Sample5_2のように書く事も出来ます。
def Sample5_2
	5 move direct 10 always			#┐						#alwaysを省略して「move direct 10」と書いても同じ。
	4 move direct 10 always			#直接制御による段階的な加速を行う		#alwaysを省略して「move direct 10」と書いても同じ。
	3 move direct 100 always		#┘						#alwaysを省略して「move direct 100」と書いても同じ。

	wait 100

	5 move direct -200 if off until rise	#既にセンサを検出していなければ、センサを検出するまで最大200パルス移動する。
end
def Sample6
	move stop direct			#直接制御による停止を行う			#moveを省略して「stop direct」と書いても同じ。
end

#//{{2014/12/12追加:条件分岐'if on','if off'を追加したことに伴い、シーケンサの命令セット,命令コード,命令コード定義用マクロを変更しました。}}
#--- 条件分岐の例 ---
def Sample7_1
	stop					#確実に停止する
	if on					#センサ安定状態がOnならば…
		init				#初期動作を行う						#┬条件分岐で一行だけ飛ばす場合は、このように書ける。
	wait					#動作を行ったかどうかにかかわらず、動作完了を待つ	#┘
end
def Sample7_2
	stop					#確実に停止する
	if off					#センサ安定状態がOffならば…
	goto @F					#'@@'までジャンプする					#┬条件分岐で二行以上飛ばす場合は、このように書ける。
		move 100			#絶対位置100へ移動する					#│
		wait				#動作完了を待つ						#│
@@													#┘
	move -100
end
#↓dRudSeqP.batを利用すると、Sample7_2と同じシーケンスを、Sample7_3のように書く事も出来ます。
def Sample7_3
	stop					#確実に停止する
	if off goto @F				#センサ安定状態がOffならば…'@@'までジャンプする	#┬条件分岐で二行以上飛ばす場合は、このように書ける。
		move 100			#絶対位置100へ移動する					#│
		wait				#動作完了を待つ						#│
@@													#┘
	move -100
end
#//{{2014/12/12追加:ローカルラベル'@@','@B','@F'を追加しました。}}
#--- ローカルラベルの例 ---
#以下はジャンプ先を示すためだけの例であり、意味のある動作ではありません。実行しないでください。実行すると無限ループになります。
def Sample8
	goto @F					#─┐
	goto @F					#─┤
@@						#←┤
	goto @F					#─│┐
	goto @B					#─┘│
@@						#←─┤
	goto @B					#──┤
	goto @B					#──┘
end
