' {$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
Thursday, April 1, 2010
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
' {$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
Thursday, March 11, 2010
Thursday, February 18, 2010
Subscribe to:
Posts (Atom)