Datasheet
Page 168ยท Applied Robotics with the SumoBot
IF irLF = 1 AND irRF = 1 THEN ' Both?
maneuver = Forward ' State = Lunge forward
GOSUB Servos_And_Sensors
ELSEIF irLF = 1 THEN ' Just left?
counter = 0 ' State = track front left object
DO UNTIL (irLF = 1 AND irRF = 1) OR counter > 15
maneuver = CurveLeft ' Curve left 15
GOSUB Servos_And_Sensors
counter = counter + 1
LOOP
DO UNTIL (irLF = 1 AND irRF = 1) OR counter > 30
maneuver = RotateLeft ' Rotate left 30
GOSUB Servos_And_Sensors
counter = counter + 1
LOOP
ELSEIF irRF = 1 THEN ' Just right?
counter = 0 ' State=track front right object
DO UNTIL (irLF = 1 AND irRF = 1) OR counter > 15
maneuver = CurveRight ' Curve right 15
GOSUB Servos_And_Sensors
counter = counter + 1
LOOP
DO UNTIL (irLF = 1 AND irRF = 1) OR counter > 30
maneuver = RotateRight ' Rotate right 30
GOSUB Servos_And_Sensors
counter = counter + 1
LOOP
ELSEIF irLS = 1 THEN ' Object left side?
DO UNTIL irRF = 1 OR irLF = 1 ' State = track left side object
maneuver = RotateLeft ' Rotate left
GOSUB Servos_And_Sensors
LOOP
ELSEIF irRS = 1 THEN ' Object right side?
DO UNTIL irRF = 1 OR irLF = 1 ' State = track right side object
maneuver = RotateRight ' Rotate right
GOSUB Servos_And_Sensors
LOOP
ELSE ' No objects detected?
GOSUB Read_Object_Detectors ' State = search pattern
ENDIF
LOOP
' -----[ Subroutine - Servos_And_Sensors ]------------------------------------
Servos_And_Sensors:
GOSUB Pulse_Servos ' Call Pulse_Servos subroutine
' Call sensor subroutine(s).