[color=Green];6 sensor,dual continuous servo line follower[/color]
[color=Navy]#picaxe [/color][color=Black]20m2[/color]
[color=Blue]setfreq m32
symbol lservo[/color][color=DarkCyan]=[/color][color=Blue]b.2
symbol rservo[/color][color=DarkCyan]=[/color][color=Blue]b.3
symbol [/color][color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Purple]w0[/color]
[color=Blue]symbol [/color][color=Purple]portpin[/color][color=DarkCyan]=[/color][color=Purple]b2[/color]
[color=Navy]#define [/color][color=Black]chargetime [/color][color=Navy]20
#define [/color][color=Black]setval [/color][color=Navy]7000[/color]
[color=Blue]servo lservo[/color][color=Black],[/color][color=Navy]164 [/color][color=Green];default speed[/color]
[color=Blue]servo rservo[/color][color=Black],[/color][color=Navy]164[/color]
[color=Black]main:[/color]
[color=Green];do ; test c.0 to c.5
; pinsc=portpin ; charge cap
; pauseus chargetime
; reflec=0
; pinsc= -portpin ; discharge cap
; if reflec>setval then
; select case portpin
; case 1
; servopos lservo,170:servopos rservo,158:goto main ;go right fastest
; case 2
; servopos lservo,168:servopos rservo,160:goto main ;go right faster
; case 3
; servopos lservo,166:servopos rservo,162:goto main ;go right slow
; case 4
; servopos lservo,162:servopos rservo,166:goto main ;go left slow
; case 5
; servopos lservo,160:servopos rservo,168:goto main ;go left faster
; case 6
; servopos lservo,158:servopos rservo,170:goto main ;go left fastest
; endselect
; endif
; portpin=portpin+portpin ; next pin
;loop until portpin=64
;servopos lservo,164:servopos rservo,164:goto main
;
;sensor 2[/color]
[color=Blue]high c.2 [/color][color=Green]; charge cap[/color]
[color=Blue]pauseus [/color][color=Black]chargetime[/color]
[color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]input c.2 [/color][color=Green];drain cap[/color]
[color=Blue]do while [/color][color=Purple]pinc.2[/color][color=DarkCyan]=[/color][color=Navy]1
[/color][color=Blue]inc [/color][color=Purple]reflec[/color]
[color=Blue]loop
if [/color][color=Purple]reflec[/color][color=DarkCyan]>[/color][color=Black]setval [/color][color=Blue]then servopos lservo[/color][color=Black],[/color][color=Navy]166[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]162[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main:[/color][color=Blue]endif [/color][color=Green];go right slow
;sensor 3[/color]
[color=Blue]high c.3 [/color][color=Green]; charge cap[/color]
[color=Blue]pauseus [/color][color=Black]chargetime[/color]
[color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]input c.3 [/color][color=Green];drain cap[/color]
[color=Blue]do while [/color][color=Purple]pinc.3[/color][color=DarkCyan]=[/color][color=Navy]1
[/color][color=Blue]inc [/color][color=Purple]reflec[/color]
[color=Blue]loop
if [/color][color=Purple]reflec[/color][color=DarkCyan]>[/color][color=Black]setval [/color][color=Blue]then servopos lservo[/color][color=Black],[/color][color=Navy]162[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]166[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main:[/color][color=Blue]endif [/color][color=Green];go left slow
;sensor 1[/color]
[color=Blue]high c.1 [/color][color=Green]; charge cap[/color]
[color=Blue]pauseus [/color][color=Black]chargetime[/color]
[color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]input c.1 [/color][color=Green];drain cap[/color]
[color=Blue]do while [/color][color=Purple]pinc.1[/color][color=DarkCyan]=[/color][color=Navy]1
[/color][color=Blue]inc [/color][color=Purple]reflec[/color]
[color=Blue]loop
if [/color][color=Purple]reflec[/color][color=DarkCyan]>[/color][color=Black]setval [/color][color=Blue]then servopos lservo[/color][color=Black],[/color][color=Navy]168[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]160[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main:[/color][color=Blue]endif [/color][color=Green];go right faster
;sensor 4[/color]
[color=Blue]high c.4 [/color][color=Green]; charge cap[/color]
[color=Blue]pauseus [/color][color=Black]chargetime[/color]
[color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]input c.4 [/color][color=Green];drain cap[/color]
[color=Blue]do while [/color][color=Purple]pinc.4[/color][color=DarkCyan]=[/color][color=Navy]1
[/color][color=Blue]inc [/color][color=Purple]reflec[/color]
[color=Blue]loop
if [/color][color=Purple]reflec[/color][color=DarkCyan]>[/color][color=Black]setval [/color][color=Blue]then servopos lservo[/color][color=Black],[/color][color=Navy]160[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]168[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main:[/color][color=Blue]endif [/color][color=Green];go left faster
;sensor 0[/color]
[color=Blue]high c.0 [/color][color=Green]; charge cap[/color]
[color=Blue]pauseus [/color][color=Black]chargetime[/color]
[color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]input c.0 [/color][color=Green];drain cap[/color]
[color=Blue]do while [/color][color=Purple]pinc.0[/color][color=DarkCyan]=[/color][color=Navy]1
[/color][color=Blue]inc [/color][color=Purple]reflec[/color]
[color=Blue]loop
if [/color][color=Purple]reflec [/color][color=DarkCyan]>[/color][color=Black]setval [/color][color=Blue]then servopos lservo[/color][color=Black],[/color][color=Navy]170[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]158[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main:[/color][color=Blue]endif [/color][color=Green];go right fastest
;
;sensor 5[/color]
[color=Blue]high c.5 [/color][color=Green]; charge cap[/color]
[color=Blue]pauseus [/color][color=Black]chargetime[/color]
[color=Purple]reflec[/color][color=DarkCyan]=[/color][color=Navy]0[/color]
[color=Blue]input c.5 [/color][color=Green];drain cap[/color]
[color=Blue]do while [/color][color=Purple]pinc.5[/color][color=DarkCyan]=[/color][color=Navy]1
[/color][color=Blue]inc [/color][color=Purple]reflec[/color]
[color=Blue]loop
if [/color][color=Purple]reflec[/color][color=DarkCyan]>[/color][color=Black]setval [/color][color=Blue]then servopos lservo[/color][color=Black],[/color][color=Navy]158[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]170[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main:[/color][color=Blue]endif [/color][color=Green];go left fastest
;[/color]
[color=Blue]servopos lservo[/color][color=Black],[/color][color=Navy]164[/color][color=Black]:[/color][color=Blue]servopos rservo[/color][color=Black],[/color][color=Navy]164[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]main[/color]