[color=Green]'******************************************************************
'** STEPPER MOTOR DRIVER ROUTINE PICAXE 20x2 **
'** Control stepper motor with IR controller. **
'** IR controller "clear" key stops motor and goes to idle. **
'** Use Sony Remote code "TV 1007". **
'******************************************************************[/color]
[color=Blue]symbol [/color][color=Purple]speed[/color][color=DarkCyan]=[/color][color=Purple]b0[/color]
[color=Blue]symbol [/color][color=Purple]coils[/color][color=DarkCyan]=[/color][color=Purple]b1[/color]
[color=Blue]symbol [/color][color=Purple]irdata[/color][color=DarkCyan]=[/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Purple]steps[/color][color=DarkCyan]=[/color][color=Purple]w4[/color]
[color=Blue]symbol idleled[/color][color=DarkCyan]=[/color][color=Blue]B.7 [/color][color=Green]'(pin 11).[/color]
[color=Blue]symbol ir_rcv[/color][color=DarkCyan]=[/color][color=Blue]B.4 [/color][color=Green]'(pin 14). [/color]
[color=Navy]#picaxe [/color][color=Black]20x2 [/color][color=Green]'Define 20x2 chip.[/color]
[color=Blue]setfreq m4[/color]
[color=Purple]dirsC [/color][color=DarkCyan]= [/color][color=Navy]%00001111 [/color][color=Green]'Define output pins.[/color]
[color=Blue]pause [/color][color=Navy]1000
[/color]
[color=Black]idle:
[/color][color=Blue]pause [/color][color=Navy]100
[/color][color=Blue]high idleled [/color][color=Green];Turn On idle LED;
[/color][color=Blue]let [/color][color=Purple]outpinsC [/color][color=DarkCyan]= [/color][color=Navy]%00000000 [/color][color=Green]'Turn output pins OFF.
[/color][color=Blue]irin IR_RCV[/color][color=Black],[/color][color=Purple]irdata [/color][color=Green]'Wait until receive IR data from clicker.
[/color][color=Blue]if [/color][color=Purple]irdata [/color][color=DarkCyan]= [/color][color=Navy]99 [/color][color=Blue]then low idleled[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]idle:[/color][color=Blue]endif[/color]
[color=Green]'**************************************************************
'** NOTE "speed" settings are used as "timeouts" in the irin **
'** statements to control speed of rotation. **
'** Set "speed" to get desired rotation speed. **
'************************************************************** [/color]
[color=Black]decide:
[/color][color=Blue]select case [/color][color=Purple]b2
[/color][color=Blue]case [/color][color=Navy]18 [/color][color=Blue]let [/color][color=Purple]speed[/color][color=DarkCyan]=[/color][color=Navy]2[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]go_CW [/color][color=Green]'IR clicker "right arrow" turns cw fast.
[/color][color=Blue]case [/color][color=Navy]19 [/color][color=Blue]let [/color][color=Purple]speed[/color][color=DarkCyan]=[/color][color=Navy]100[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]go_CW [/color][color=Green]'IR clicker "left arrow" turns cw slowly.
[/color][color=Blue]case [/color][color=Navy]16 [/color][color=Blue]let [/color][color=Purple]speed[/color][color=DarkCyan]=[/color][color=Navy]2[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]go_CCW [/color][color=Green]'IR clicker "up arrow" turns ccw fast.
[/color][color=Blue]case [/color][color=Navy]17 [/color][color=Blue]let [/color][color=Purple]speed[/color][color=DarkCyan]=[/color][color=Navy]100[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]go_CCW [/color][color=Green]'IR clicker "down arrow" turns ccw slowly.
[/color][color=Blue]case [/color][color=Navy]11 [/color][color=Blue]goto [/color][color=Black]step_cw [/color][color=Green]'IR clicker "OK" key steps cw.
[/color][color=Blue]case [/color][color=Navy]37 [/color][color=Blue]goto [/color][color=Black]step_ccw [/color][color=Green]'IR clicker "INPUT" key" steps ccw.
[/color][color=Blue]endselect
[/color]
[color=Green]'** Turn OFF idle LED & rotate CW fast or slow **
'** based on "speed" selected by IR clicker in "decide". **
'** Rotates until "clear" key causes exit to idle. **[/color]
[color=Black]go_CW:
[/color][color=Blue]low B.7
do
for [/color][color=Purple]coils [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Navy]3
[/color][color=Blue]lookup [/color][color=Purple]coils[/color][color=Black],[/color][color=Blue]([/color][color=Navy]3[/color][color=Black],[/color][color=Navy]6[/color][color=Black],[/color][color=Navy]12[/color][color=Black],[/color][color=Navy]9[/color][color=Blue])[/color][color=Black],[/color][color=Purple]pinsC [/color][color=Green]'Coil sequence for my stepper.
[/color][color=Blue]next [/color][color=Purple]coils
[/color][color=Blue][PLAIN]irin[[/PLAIN][/color][color=Purple]speed[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black],[/color][color=Blue]IR_RCV[/color][color=Black],[/color][color=Purple]irdata [/color][color=Green];Look for IR controller button.
[/color][color=Blue]if [/color][color=Purple]irdata [/color][color=DarkCyan]= [/color][color=Navy]99 [/color][color=Blue]then [/color][color=Black]idle [/color][color=Green];IR clicker "clear" key stops rotation & goes to idle.
[/color][color=Blue]loop[/color]
[color=Green]'** Turn OFF idle LED & rotate CCW fast or slow **
'** based on "speed" selected by IR clicker in "decide". **
'** Rotates until "clear" key causes exit to idle. **
[/color]
[color=Black]go_CCW:
[/color][color=Blue]low B.7
do
for [/color][color=Purple]coils [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]to [/color][color=Navy]3
[/color][color=Blue]lookup [/color][color=Purple]coils[/color][color=Black],[/color][color=Blue]([/color][color=Navy]9[/color][color=Black],[/color][color=Navy]12[/color][color=Black],[/color][color=Navy]6[/color][color=Black],[/color][color=Navy]3[/color][color=Blue])[/color][color=Black],[/color][color=Purple]pinsC [/color][color=Green]'Coil sequence for my stepper.
[/color][color=Blue]next [/color][color=Purple]coils
[/color][color=Blue][PLAIN]irin[[/PLAIN][/color][color=Purple]speed[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black],[/color][color=Blue]IR_RCV[/color][color=Black],[/color][color=Purple]irdata
[/color][color=Blue]if [/color][color=Purple]irdata [/color][color=DarkCyan]= [/color][color=Navy]99 [/color][color=Blue]then [/color][color=Black]idle [/color][color=Green];IR clicker "clear" key stops rotation & goes to idle.
[/color][color=Blue]loop
[/color]
[color=Green]'** Turn OFF idle LED; rotate 2 steps CW; **
'** & return to "idle". **
[/color][color=Black]step_cw:
[/color][color=Blue]low B.7
[/color][color=Purple]steps[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]do until [/color][color=Purple]steps[/color][color=DarkCyan]=[/color][color=Navy]2
[/color][color=Blue]for [/color][color=Purple]coils[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Blue]to [/color][color=Navy]3
[/color][color=Blue]lookup [/color][color=Purple]coils[/color][color=Black],[/color][color=Blue]([/color][color=Navy]3[/color][color=Black],[/color][color=Navy]6[/color][color=Black],[/color][color=Navy]12[/color][color=Black],[/color][color=Navy]9[/color][color=Blue])[/color][color=Black],[/color][color=Purple]pinsC [/color][color=Green]'Coil sequence for my stepper.
[/color][color=Blue]next [/color][color=Purple]coils
[/color][color=Blue]inc [/color][color=Purple]steps
[/color][color=Blue]loop
goto [/color][color=Black]idle[/color]
[color=Green]'** Turn OFF idle LED; rotate 2 steps CCW; **
'** & return to "idle". **[/color]
[color=Black]step_ccw:
[/color][color=Blue]low B.7
[/color][color=Purple]steps[/color][color=DarkCyan]=[/color][color=Navy]0
[/color][color=Blue]do until [/color][color=Purple]steps[/color][color=DarkCyan]=[/color][color=Navy]2
[/color][color=Blue]for [/color][color=Purple]coils[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Blue]to [/color][color=Navy]3
[/color][color=Blue]lookup [/color][color=Purple]coils[/color][color=Black],[/color][color=Blue]([/color][color=Navy]9[/color][color=Black],[/color][color=Navy]12[/color][color=Black],[/color][color=Navy]6[/color][color=Black],[/color][color=Navy]3[/color][color=Blue])[/color][color=Black],[/color][color=Purple]pinsC [/color][color=Green]'Coil sequence for my stepper.
[/color][color=Blue]next [/color][color=Purple]coils
[/color][color=Blue]inc [/color][color=Purple]steps
[/color][color=Blue]loop
goto [/color][color=Black]idle
[/color]