Thursday, April 1, 2010

escaping corners

' {$STAMP BS2}
' {$PBASIC 2.5}

DEBUG "program running!"

pulseCount VAR BYTE
counter VAR NIB
old7 VAR BIT
old5 VAR BIT


FREQOUT 4, 2000, 3000
counter = 1
old7 = 0
old5 = 1

DO

IF (IN7 <> IN5) THEN
IF (old7 <> IN7) AND (old5 <> IN5) THEN
counter = counter + 1
old7 = IN7
old5 = IN5
IF (counter >4) THEN
counter = 1
GOSUB Back_Up
GOSUB Turn_Left
GOSUB Turn_left
ENDIF
ELSE
counter = 1
ENDIF

ENDIF


IF (IN5 =0) AND (IN7 = 0) THEN
GOSUB Back_Up
GOSUB Turn_Left
GOSUB Turn_Left
ELSEIF (IN5 = 0) THEN
GOSUB Back_Up
GOSUB Turn_Right
ELSEIF (IN7 =0) THEN
GOSUB Back_Up
GOSUB Turn_left
ELSE
GOSUB Foward_Pulse
ENDIF

LOOP


Foward_pulse:
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
RETURN

Turn_Left:
FOR pulseCount = 0 TO 20
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
NEXT
RETURN

Turn_Right:
FOR pulseCount = 0 TO 20
PULSOUT 13, 850
PULSOUT 12, 850
NEXT
RETURN

Back_Up:
FOR pulseCount = 0 TO 40
PULSOUT 13, 650
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN

roaming with whiskers

' {$STAMP BS2}
' {$PBASIC 2.5}

DEBUG "program running!"


pulseCount VAR BYTE

FREQOUT 4, 2000, 3000


DO
IF (IN5 = 0) AND (IN7 = 0) THEN
GOSUB Back_Up
GOSUB Turn_Left
GOSUB Turn_Left
ELSEIF (IN5 = 0) THEN
GOSUB Back_Up
GOSUB Turn_Right
ELSEIF (IN7 = 0) THEN
GOSUB Back_Up
GOSUB Turn_Left
ELSE
GOSUB Foward_Pulse
ENDIF
LOOP

Foward_Pulse:
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
RETURN

Turn_Left:
FOR pulseCount = 0 TO 20
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
NEXT
RETURN

Turn_Right:
FOR pulseCount = 0 TO 20
PULSOUT 12, 850
PULSOUT 13, 850

PAUSE 20
NEXT
RETURN

Back_Up:
FOR pulseCount = 0 TO 40
PULSOUT 13, 650
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN

photo 3

photo 5

photo 2

Thursday, February 18, 2010