
Parallax, Inc. • Parallax Line Follower (#29115) • 12/2001
Page 12
lastBits = %00100 ' assume starting straight
' -----[ Main Code ]------------------------------------------------------------
'
Main:
GOSUB Read_Line_Follower ' read the Line Follower
Steer_Robot:
steer = NCD lfBits ' get highest "on" bit
BRANCH steer,[Off_Line, Hard_Right, Right, Straight, Left, Hard_Left]
Save_Last:
lastBits = lfBits ' save last reading
GOTO Main
' -----[ Subroutines ]----------------------------------------------------------
'
Read_Line_Follower:
lfBits = 0 ' clear last reading
FOR ledPos = 2 TO 6
OutL.LowBit(ledPos) = LEDon ' turn the LED on
PAUSE 1 ' allow sensor to read
lfBits.LowBit(ledPos) = In9 ^ LFmode ' record the sensor reading
OutL = OutL | %01111100 ' turn LEDs off
NEXT
lfBits = lfBits >> 2 ' shift bits to zero index
RETURN
Off_Line:
lfBits = lastBits ' get last known position
GOTO Steer_Robot
Hard_Right:
PULSOUT LMotor, MStop + Speed075 ' slow a bit on left
PULSOUT RMotor, MStop ' stop right motor
GOTO Save_Last
Right:
PULSOUT LMotor, MStop + Speed100 ' full speed on left
PULSOUT RMotor, MStop - Speed050 ' slow right motor
GOTO Save_Last
Straight:
PULSOUT LMotor, MStop + Speed100 ' both motors forward
PULSOUT RMotor, MStop - Speed100
GOTO Save_Last
Left:
PULSOUT LMotor, MStop + Speed050 ' slow left motor
PULSOUT RMotor, MStop - Speed100 ' full speed on right
GOTO Save_Last