[color=Navy]#Picaxe [/color][color=Black]20M2[/color]
[color=Navy]#No_Data [/color]
[color=Blue]output B.0[/color][color=Black],[/color][color=Blue]B.1[/color][color=Black],[/color][color=Blue]B.2[/color][color=Black],[/color][color=Blue]B.3[/color][color=Black],[/color][color=Blue]B.4[/color][color=Black],[/color][color=Blue]B.5[/color][color=Black],[/color][color=Blue]B.6[/color][color=Black],[/color][color=Blue]B.7
input C.0[/color][color=Black],[/color][color=Blue]C.1[/color][color=Black],[/color][color=Blue]C.2[/color][color=Black],[/color][color=Blue]C.3[/color][color=Black],[/color][color=Blue]C.4[/color][color=Black],[/color][color=Blue]C.5[/color][color=Black],[/color][color=Blue]C.6[/color][color=Black],[/color][color=Blue]C.7
Symbol [/color][color=Black]SwitchFor [/color][color=DarkCyan]= [/color][color=Purple]pinC.0[/color]
[color=Blue]Symbol [/color][color=Black]SwitchRev [/color][color=DarkCyan]= [/color][color=Purple]pinC.1[/color]
[color=Blue]Symbol [/color][color=Black]Motor_Forward[/color][color=DarkCyan]=[/color][color=Blue]B.0
Symbol [/color][color=Black]Motor_Backward[/color][color=DarkCyan]=[/color][color=Blue]B.1
Symbol [/color][color=Black]Ramper[/color][color=DarkCyan]=[/color][color=Blue]B.2
Symbol [/color][color=Black]Active[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol [/color][color=Black]RelayDelay[/color][color=DarkCyan]=[/color][color=Navy]1 [/color][color=Green]'s[/color]
[color=Blue]Symbol [/color][color=Black]RampDelay[/color][color=DarkCyan]=[/color][color=Navy]5 [/color][color=Green]'s[/color]
[color=Blue]Symbol [/color][color=Black]RunningDelay[/color][color=DarkCyan]=[/color][color=Navy]20 [/color][color=Green]'s[/color]
[color=Blue]Symbol [/color][color=Black]StoppingDelay[/color][color=DarkCyan]=[/color][color=Navy]6 [/color][color=Green]'s[/color]
[color=Blue]symbol [/color][color=Black]Direction[/color][color=DarkCyan]=[/color][color=Purple]b1[/color]
[color=Blue]symbol [/color][color=Black]UP[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol [/color][color=Black]DOWN[/color][color=DarkCyan]=[/color][color=Navy]2[/color]
[color=Blue]Symbol [/color][color=Black]State[/color][color=DarkCyan]=[/color][color=Purple]b2[/color]
[color=Blue]Symbol [/color][color=Black]Stopped[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]Symbol [/color][color=Black]BeforeRamp[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol [/color][color=Black]Ramping[/color][color=DarkCyan]=[/color][color=Navy]2[/color]
[color=Blue]Symbol [/color][color=Black]Running[/color][color=DarkCyan]=[/color][color=Navy]3[/color]
[color=Blue]symbol [/color][color=Black]Stopping[/color][color=DarkCyan]=[/color][color=Navy]4[/color]
[color=Blue]symbol [/color][color=Black]StopThenRamp[/color][color=DarkCyan]=[/color][color=Navy]5[/color]
[color=Black]Main:
[/color][color=Blue]low B.0[/color][color=Black], [/color][color=Blue]B.1[/color][color=Black],[/color][color=Blue]B.2
[/color][color=Black]Direction[/color][color=DarkCyan]=[/color][color=Black]Stopped
State[/color][color=DarkCyan]=[/color][color=Black]Stopped
[/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]do
if [/color][color=Black]SwitchFor[/color][color=DarkCyan]=[/color][color=Black]Active [/color][color=Blue]then
if [/color][color=Black]switchRev[/color][color=DarkCyan]=[/color][color=Blue]ON then [/color][color=Green]' Hey Dude ! What are you doing ?
[/color][color=Blue]GOSUB [/color][color=Black]GoStop
[/color][color=Blue]else
GOSUB [/color][color=Black]GoUP
[/color][color=Blue]endif
else
if [/color][color=Black]switchRev[/color][color=DarkCyan]=[/color][color=Black]Active [/color][color=Blue]then
GOSUB [/color][color=Black]GoDOWN
[/color][color=Blue]else
GOSUB [/color][color=Black]GoStop
[/color][color=Blue]endif
endif
GOSUB [/color][color=Black]LookAtWatch
[/color][color=Blue]loop
[/color]
[color=Black]GoUP:
[/color][color=Blue]select case [/color][color=Black]Direction
[/color][color=Blue]case [/color][color=Black]Stopped
[/color][color=Blue]high [/color][color=Black]Motor_Forward
state[/color][color=DarkCyan]=[/color][color=Black]BeforeRamp : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]case [/color][color=Black]DOWN
[/color][color=Blue]low [/color][color=Black]Motor_Backward
state[/color][color=DarkCyan]=[/color][color=Black]StopThenRamp : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endselect
[/color][color=Black]Direction[/color][color=DarkCyan]=[/color][color=Black]UP
[/color][color=Blue]RETURN
[/color]
[color=Black]GoDOWN:
[/color][color=Blue]select case [/color][color=Black]Direction
[/color][color=Blue]case [/color][color=Black]Stopped
[/color][color=Blue]high [/color][color=Black]Motor_Backward
state[/color][color=DarkCyan]=[/color][color=Black]BeforeRamp : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]case [/color][color=Black]UP
[/color][color=Blue]low [/color][color=Black]Motor_Forward
state[/color][color=DarkCyan]=[/color][color=Black]StopThenRamp : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endselect
[/color][color=Black]Direction[/color][color=DarkCyan]=[/color][color=Black]DOWN
[/color][color=Blue]RETURN
[/color]
[color=Black]GoStop:
[/color][color=Blue]low [/color][color=Black]Motor_Forward,Motor_Backward,Ramper
[/color][color=Blue]if [/color][color=Black]Direction [/color][color=DarkCyan]<> [/color][color=Black]Stopped [/color][color=Blue]then
[/color][color=Black]State[/color][color=DarkCyan]=[/color][color=Black]Stopping : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
RETURN
[/color]
[color=Black]LookAtWatch:
[/color][color=Blue]select case [/color][color=Black]State
[/color][color=Blue]case [/color][color=Black]BeforeRamp
[/color][color=Blue]if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Black]RelayDelay [/color][color=Blue]then
high [/color][color=Black]Ramper
State[/color][color=DarkCyan]=[/color][color=Black]Ramping : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
case [/color][color=Black]Ramping
[/color][color=Blue]if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Black]RampDelay [/color][color=Blue]then
[/color][color=Black]State[/color][color=DarkCyan]=[/color][color=Black]Running : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
case [/color][color=Black]Running
[/color][color=Blue]if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Black]RunningDelay [/color][color=Blue]then
low [/color][color=Black]Motor_Forward,Motor_Backward,Ramper
State[/color][color=DarkCyan]=[/color][color=Black]Stopping : [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
case [/color][color=Black]Stopping
[/color][color=Blue]if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Black]StoppingDelay [/color][color=Blue]then
[/color][color=Black]State[/color][color=DarkCyan]=[/color][color=Black]Stopped
Direction[/color][color=DarkCyan]=[/color][color=Black]Stopped
[/color][color=Blue]endif
endselect[/color]