Justin Ratliff's ping robot article
7
GOSUB bumpck 'don't stay bumped into it = highest priority
GOSUB act 'acts on highest priority movement needed
' i.e. last to set direction
GOTO main
wander: 'randomly wander around
IF wDur > 0 THEN wDone1
RANDOM seed 'random direction
i = seed & %111 'mask off for 0-7 only
LOOKUP i,[fd,tl,fd,fd,fd,fd,tr,fd],wDir 'chose direction
seed = seed + i
wDur = (seed & %111111) + 20 'mask for 64 choices of duration
wDone1:
wDur = wDur - 1 'decrement wander counter
drive = wDir 'get direction
PULSOUT NECK, 900
LOW LED
RETURN 'completed
act: 'moves servo motors
IF aDur > 0 THEN aDec 'already doing one, got here
aDur = SACT '# of main loops between pulseouts +1
PULSOUT LEFT,ldrive * 10
PULSOUT RIGHT,rdrive * 10
aDec: aDur = aDur - 1 'decrement act loop cntr
RETURN
avoid:
PULSOUT 7, 5
PULSIN 7, 1, time
time = time ** 2251
IF time > 0062 THEN avdone
avfront:
HIGH LED
avDir = rl 'rotate away
avDur = 15
drive = rl
GOTO avdone
avdone:
RETURN
bumpck:
IF bumper = 0 THEN bmpnow
IF bDur > 0 THEN bmpact