IF pinC.0 =0 THEN LED_Blink
LED_Blink:
HIGH B.0
WAIT 0.5
LOW B.0
WAIT B.0
[color=Green]'******************Sentinel Code.bas****************
'Version 2.0
'AJZ/July 2015
'This is code for the Super Sentinel using the AXE401 shield base
'and the AXE408 instant robot shield
'The sentinel is controlled by a 4 channel transmitter/receiver
'When the Channel button on the transmitter is pressed,
'the corresponding channel on the receiver goes high
'Channel A toggles the turret between auto & manual mode
'Channel D drives the turret left
'Channel B drives the turret right
'Channel C fires the gun
'the limit of rotation is determined by Hall effect sensors
'motor is GM3 or equivalent, 5 volt 3 RPM
'In addition the sound of an alien recording is played during rotation
'===Constants===[/color]
[color=Blue]symbol abit [/color][color=DarkCyan]= [/color][color=Navy]500 [/color][color=Green]'sets short pause interval
'===Variables===[/color]
[color=Blue]Symbol [/color][color=Purple]Chan_A [/color][color=DarkCyan]= [/color][color=Purple]pinA.0 [/color][color=Green]'Assign receiver channel A to Port A.0[/color]
[color=Blue]Symbol [/color][color=Purple]Chan_B [/color][color=DarkCyan]= [/color][color=Purple]pinA.1 [/color][color=Green]'Assign receiver channel B to Port A.1[/color]
[color=Blue]Symbol [/color][color=Purple]Chan_C [/color][color=DarkCyan]= [/color][color=Purple]pinA.2 [/color][color=Green]'Assign receiver channel C to Port A.2[/color]
[color=Blue]Symbol [/color][color=Purple]Chan_D [/color][color=DarkCyan]= [/color][color=Purple]pinA.3 [/color][color=Green]'Assign receiver channel D to Port A.3[/color]
[color=Blue]Symbol [/color][color=Purple]Limit_L [/color][color=DarkCyan]= [/color][color=Purple]pinB.3 [/color][color=Green]'Assign left travel limit to Port B.3[/color]
[color=Blue]Symbol [/color][color=Purple]Limit_R [/color][color=DarkCyan]= [/color][color=Purple]pinB.4 [/color][color=Green]'Assign right travel limit to Port B.4[/color]
[color=Blue]Symbol [/color][color=Purple]slave [/color][color=DarkCyan]= [/color][color=Purple]pinB.6 [/color][color=Green]'Assign auto-rotate latch to Port B.6
'B.5 & B.6 are jumpered together[/color]
[color=Blue]symbol motcont [/color][color=DarkCyan]= [/color][color=Blue]C.1 [/color][color=Green]'motor ON/OFF[/color]
[color=Blue]symbol motdir [/color][color=DarkCyan]= [/color][color=Blue]C.0 [/color][color=Green]'determines motor direction HI/LO[/color]
[color=Blue]symbol LED [/color][color=DarkCyan]= [/color][color=Blue]C.4 [/color][color=Green]'fires LED[/color]
[color=Blue]symbol beep [/color][color=DarkCyan]= [/color][color=Blue]B.2 [/color][color=Green]'makes "alien recording" noise [/color]
[color=Blue]symbol chirp [/color][color=DarkCyan]= [/color][color=Blue]B.0 [/color][color=Green]'makes "strange alien" noise[/color]
[color=Blue]symbol gun [/color][color=DarkCyan]= [/color][color=Blue]B.1 [/color][color=Green]'makes "alien machine gun" noise[/color]
[color=Blue]symbol master [/color][color=DarkCyan]= [/color][color=Blue]B.5 [/color][color=Green]'toggles auto mode on & off
'===Directives===[/color]
[color=Navy]#com 3 [/color][color=Green]'specify serial port[/color]
[color=Navy]#picaxe [/color][color=Black]28X2 [/color][color=Green]'specify processor
'#no_data 'save download time
'#terminal of 'disable terminal window
'============== Begin Main Program ==========================[/color]
[color=Purple]dirsA [/color][color=DarkCyan]= [/color][color=Navy]%00000000 [/color][color=Green]'all inputs[/color]
[color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%10100111 [/color][color=Green]'B.3, B.4 & B.6 are inputs[/color]
[color=Purple]dirsC [/color][color=DarkCyan]= [/color][color=Navy]%11111111 [/color][color=Green]'all outputs[/color]
[color=Black]main:[/color]
[color=Blue]If [/color][color=Purple]Chan_A [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Green]'press "A" on xmtr
[/color][color=Blue]toggle master [/color][color=Green]'toggles outpin B.5 between Hi/Lo[/color]
[color=Blue]end if
If [/color][color=Purple]slave [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Green]'jumper between B.5 & B.6
[/color][color=Blue]gosub [/color][color=Black]auto[/color]
[color=Blue]end if
if [/color][color=Purple]Chan_D [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Green]'press "D" on xmtr[/color]
[color=Blue]gosub [/color][color=Black]manleft [/color][color=Green]'manually rotate turret left[/color]
[color=Blue]end if
If [/color][color=Purple]Chan_B [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Green]'press "B" on xmtr[/color]
[color=Blue]gosub [/color][color=Black]manright [/color][color=Green]'manually rotate turret right[/color]
[color=Blue]end if
If [/color][color=Purple]Chan_C [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Green]'Chan "C" button is pressed on xmtr
[/color][color=Blue]gosub [/color][color=Black]shoot [/color][color=Green]'execute shoot sub-routine[/color]
[color=Blue]end if
pause abit
goto [/color][color=Black]main
auto:[/color]
[color=Blue]high beep [/color][color=Green]'activate "strange alien" sound[/color]
[color=Blue]pause abit [/color][color=Green]'a momentary pulse activates[/color]
[color=Blue]low beep [/color][color=Green]'a 30 second sound bite[/color]
[color=Blue]if [/color][color=Purple]Limit_L [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=DarkCyan]and [/color][color=Purple]Limit_R [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]then [/color][color=Green]'turret is out of the limits[/color]
[color=Blue]gosub [/color][color=Black]autoleft [/color][color=Green]'rotate turret left[/color]
[color=Blue]end if
If [/color][color=Purple]Limit_L [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then [/color][color=Green]'turret is in left limit
[/color][color=Blue]pause abit
gosub [/color][color=Black]autoright [/color][color=Green]'rotate turret right[/color]
[color=Blue]end if
If [/color][color=Purple]Limit_R [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then [/color][color=Green]'turret is in right limit
[/color][color=Blue]pause abit
gosub [/color][color=Black]autoleft [/color][color=Green]'rotate turret left[/color]
[color=Blue]end if
goto [/color][color=Black]main
autoleft:[/color]
[color=Blue]high motcont [/color][color=Black]: [/color][color=Blue]high motdir [/color][color=Green]'high C.1 & C.0 go left[/color]
[color=Blue]do until [/color][color=Purple]Limit_L [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]'until limit made
[/color][color=Blue]loop
low motcont [/color][color=Green]'low C.1 stops motor[/color]
[color=Blue]pause abit
return[/color]
[color=Black]autoright:[/color]
[color=Blue]high motcont [/color][color=Black]: [/color][color=Blue]low motdir [/color][color=Green]'high C.1 low C.0 go right[/color]
[color=Blue]do until [/color][color=Purple]Limit_R [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]'until limit made
[/color][color=Blue]loop
low motcont [/color][color=Green]'stop motor[/color]
[color=Blue]pause abit
return[/color]
[color=Black]manleft:[/color]
[color=Blue]high beep [/color][color=Green]'activate "alien recording" sound[/color]
[color=Blue]pause abit [/color][color=Green]'a momentary pulse activates[/color]
[color=Blue]low beep [/color][color=Green]'a 30 second sound bite[/color]
[color=Blue]high motcont [/color][color=Black]: [/color][color=Blue]high motdir [/color][color=Green]'high C.1 & C.0 go left[/color]
[color=Blue]if [/color][color=Purple]Chan_D [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=DarkCyan]or [/color][color=Purple]Limit_L [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then [/color][color=Green]'button released or limit made
[/color][color=Blue]low motcont [/color][color=Green]'stop motor[/color]
[color=Blue]end if
do until [/color][color=Purple]Limit_L [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]'until limit made
[/color][color=Blue]loop
low motcont [/color][color=Green]'low C.1 stops motor[/color]
[color=Blue]pause abit
return[/color]
[color=Black]manright:[/color]
[color=Blue]high beep [/color][color=Green]'activate "alien recording" sound[/color]
[color=Blue]pause abit [/color][color=Green]'a momentary pulse activates[/color]
[color=Blue]low beep [/color][color=Green]'a 30 second sound bite[/color]
[color=Blue]high motcont [/color][color=Black]: [/color][color=Blue]low motdir [/color][color=Green]'high C.1 low C.0 go right[/color]
[color=Blue]if [/color][color=Purple]Chan_B [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=DarkCyan]or [/color][color=Purple]Limit_R [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Blue]then [/color][color=Green]'button released or limit made
[/color][color=Blue]low motcont [/color][color=Green]'stop motor[/color]
[color=Blue]end if
do until [/color][color=Purple]Limit_R [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]'until limit made
[/color][color=Blue]loop
low motcont [/color][color=Green]'stop motor[/color]
[color=Blue]pause abit
return[/color]
[color=Black]shoot:[/color]
[color=Blue]high gun [/color][color=Green]'take pin B.4 high[/color]
[color=Blue]pause [/color][color=Navy]100 [/color][color=Green]'a short pulse plays entire sound bite[/color]
[color=Blue]low gun [/color][color=Green]'take pin B.4 low[/color]
[color=Blue]for [/color][color=Purple]b0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]3 [/color][color=Green]'entire sound bite is about 3 seconds
[/color][color=Blue]high LED [/color][color=Green]'so we flash the LED at 0.5 sec intervals
[/color][color=Blue]pause abit
low LED
pause abit
next [/color][color=Purple]b0[/color]
[color=Blue]return [/color][color=Green]'finished firing sequence[/color]
by Duane Benson
by Duane Benson
by Aaron Carman