[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=Purple]SwitchFor [/color][color=DarkCyan]= [/color][color=Purple]pinC.0[/color]
[color=Blue]Symbol [/color][color=Purple]SwitchRev [/color][color=DarkCyan]= [/color][color=Purple]pinC.1[/color]
[color=Blue]Symbol Motor_Forward[/color][color=DarkCyan]=[/color][color=Blue]B.0
Symbol Motor_Backward[/color][color=DarkCyan]=[/color][color=Blue]B.1
Symbol Ramper[/color][color=DarkCyan]=[/color][color=Blue]B.2
Symbol Active[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol RelayDelay[/color][color=DarkCyan]=[/color][color=Navy]1 [/color][color=Green]'s[/color]
[color=Blue]Symbol RampDelay[/color][color=DarkCyan]=[/color][color=Navy]5 [/color][color=Green]'s[/color]
[color=Blue]Symbol RunningDelay[/color][color=DarkCyan]=[/color][color=Navy]20 [/color][color=Green]'s[/color]
[color=Blue]Symbol StoppingDelay[/color][color=DarkCyan]=[/color][color=Navy]6 [/color][color=Green]'s[/color]
[color=Blue]symbol [/color][color=Purple]Direction[/color][color=DarkCyan]=[/color][color=Purple]b1[/color]
[color=Blue]symbol UP[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol DOWN[/color][color=DarkCyan]=[/color][color=Navy]2[/color]
[color=Blue]Symbol [/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Purple]b2[/color]
[color=Blue]Symbol Stopped[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]Symbol BeforeRamp[/color][color=DarkCyan]=[/color][color=Navy]1[/color]
[color=Blue]Symbol Ramping[/color][color=DarkCyan]=[/color][color=Navy]2[/color]
[color=Blue]Symbol Running[/color][color=DarkCyan]=[/color][color=Navy]3[/color]
[color=Blue]symbol Stopping[/color][color=DarkCyan]=[/color][color=Navy]4[/color]
[color=Blue]symbol 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=Purple]Direction[/color][color=DarkCyan]=[/color][color=Blue]Stopped
[/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Blue]Stopped
[/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]do
if [/color][color=Purple]SwitchFor[/color][color=DarkCyan]=[/color][color=Blue]Active then
if [/color][color=Purple]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=Purple]switchRev[/color][color=DarkCyan]=[/color][color=Blue]Active 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=Purple]Direction
[/color][color=Blue]case Stopped
high Motor_Forward
[/color][color=Purple]state[/color][color=DarkCyan]=[/color][color=Blue]BeforeRamp [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]case DOWN
low Motor_Backward
[/color][color=Purple]state[/color][color=DarkCyan]=[/color][color=Blue]StopThenRamp [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endselect
[/color][color=Purple]Direction[/color][color=DarkCyan]=[/color][color=Blue]UP
RETURN
[/color]
[color=Black]GoDOWN:
[/color][color=Blue]select case [/color][color=Purple]Direction
[/color][color=Blue]case Stopped
high Motor_Backward
[/color][color=Purple]state[/color][color=DarkCyan]=[/color][color=Blue]BeforeRamp [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]case UP
low Motor_Forward
[/color][color=Purple]state[/color][color=DarkCyan]=[/color][color=Blue]StopThenRamp [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endselect
[/color][color=Purple]Direction[/color][color=DarkCyan]=[/color][color=Blue]DOWN
RETURN
[/color]
[color=Black]GoStop:
[/color][color=Blue]low Motor_Forward[/color][color=Black],[/color][color=Blue]Motor_Backward[/color][color=Black],[/color][color=Blue]Ramper
if [/color][color=Purple]Direction [/color][color=DarkCyan]<> [/color][color=Blue]Stopped then
[/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Blue]Stopping [/color][color=Black]: [/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=Purple]State
[/color][color=Blue]case BeforeRamp
if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Blue]RelayDelay then
high Ramper
[/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Blue]Ramping [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
case Ramping
if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Blue]RampDelay then
[/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Blue]Running [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
case Running
if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Blue]RunningDelay then
low Motor_Forward[/color][color=Black],[/color][color=Blue]Motor_Backward[/color][color=Black],[/color][color=Blue]Ramper
[/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Blue]Stopping [/color][color=Black]: [/color][color=Purple]Time[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]endif
case Stopping
if [/color][color=Purple]Time[/color][color=DarkCyan]>[/color][color=Blue]StoppingDelay then
[/color][color=Purple]State[/color][color=DarkCyan]=[/color][color=Blue]Stopped
[/color][color=Purple]Direction[/color][color=DarkCyan]=[/color][color=Blue]Stopped
endif
endselect[/color]