As far as I know, the Roaming with BoeBot program works fine and the hardware hookup in the manual works as well. The hardware and the software have been around and in use for many years. When you say "doesn't work" what do you mean? Have you used the IR LEDs and IR receiver for other things/exercises and did they work properly?
You should have already done the IR Test programs before you got to this point. I would re-run those programs to verify functionality of the IR detectors.
i re typed code 4 times and all it does is go forward here is the code.
'
[ Title ]
' Robotics with the Boe-Bot - RoamingWithIr.bs2
' Adapt RoamingWithWhiskers.bs2 for use with IR object detectors.
' {$STAMP BS2} ' Stamp directive.
' {$PBASIC 2.5} ' PBASIC directive.
DEBUG "Program Running!"
'
[ Variables ]
irDetectLeft VAR Bit
irDetectRight VAR Bit
pulseCount VAR Byte
'
[ Initialization ]
FREQOUT 4, 2000, 3000 ' Signal program start/reset.
'
[ Main Routine ]
DO
FREQOUT 8, 1, 38500 ' Store IR detection values in
irDetectLeft = IN9 ' bit variables.
FREQOUT 2, 1, 38500
irDetectRight = IN0
IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN
GOSUB Back_Up ' Both detect obstacle
GOSUB Turn_Left ' Back up & U-turn (left twice)
GOSUB Turn_Left
ELSEIF (irDetectLeft = 0) THEN ' Left detects
GOSUB Back_Up ' Back up & turn right
GOSUB Turn_Right
ELSEIF (irDetectRight = 0) THEN ' Right detects
GOSUB Back_Up ' Back up & turn left
GOSUB Turn_Left
ELSE ' None detect
GOSUB Forward_Pulse ' Apply a forward pulse
ENDIF ' and check again
LOOP
'
[ Subroutines ]
Forward_Pulse: ' Send a single forward pulse.
PULSOUT 13,850
PULSOUT 12,650
PAUSE 20
RETURN
Turn_Left: ' Left turn, about 90-degrees.
FOR pulseCount = 0 TO 20
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
NEXT
RETURN
Turn_Right:
FOR pulseCount = 0 TO 20 ' Right turn, about 90-degrees.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Back_Up: ' Back up.
FOR pulseCount = 0 TO 40
PULSOUT 13, 650
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
You should have already done the IR Test programs before you got to this point. I would re-run those programs to verify functionality of the IR detectors.
+1. Sensors (m)aligned and working properly? Servos centered? New batteries? If all else fails, add some debug statements in your code to monitor sensor output and program flow.
Check the resistor value you are using with the IR LEDs since you may have changed it from the original value.
As the resistor value increases the LED gets dimmer and the detection distance drops.
Try walking up to your BOE-Bot and put something in front of it to see if it's near-sighted.
I'm not clear if you only ran the IR test before you typed in the main code or if you have run it since the main code doesn't seem to work. You should be able to run the IR test now to confirm the IR sensors are still working. If they work with that test then they should be working with the IR roaming code. If not my best guess (other than a code issue) would be low batteries and the robot resetting. However if that was happening you should be hearing the Piezo beep more than just the one time at the start of the program.
Try this condensed program. Bot should drive forward until either of the IR sensors is triggered, then just stop. The quickest drive & IR sensor test I can think of. Untested but it should work.
' {$STAMP BS2} ' Stamp directive.' {$PBASIC 2.5} ' PBASIC directive.
irDetectLeft VAR Bit
irDetectRight VAR Bit
DO
PULSOUT 13,850' drive forward
PULSOUT 12,650
FREQOUT 8, 1, 38500' Store IR detection values in
irDetectLeft = IN9 ' bit variables.
FREQOUT 2, 1, 38500
irDetectRight = IN0
IF (irDetectLeft = 0) OR (irDetectRight = 0) THEN exit ' exit if either sensor triggered
PAUSE 10
LOOP
exit: STOP
END
Comments
'
[ Title ]
' Robotics with the Boe-Bot - RoamingWithIr.bs2
' Adapt RoamingWithWhiskers.bs2 for use with IR object detectors.
' {$STAMP BS2} ' Stamp directive.
' {$PBASIC 2.5} ' PBASIC directive.
DEBUG "Program Running!"
'
[ Variables ]
irDetectLeft VAR Bit
irDetectRight VAR Bit
pulseCount VAR Byte
'
[ Initialization ]
FREQOUT 4, 2000, 3000 ' Signal program start/reset.
'
[ Main Routine ]
DO
FREQOUT 8, 1, 38500 ' Store IR detection values in
irDetectLeft = IN9 ' bit variables.
FREQOUT 2, 1, 38500
irDetectRight = IN0
IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN
GOSUB Back_Up ' Both detect obstacle
GOSUB Turn_Left ' Back up & U-turn (left twice)
GOSUB Turn_Left
ELSEIF (irDetectLeft = 0) THEN ' Left detects
GOSUB Back_Up ' Back up & turn right
GOSUB Turn_Right
ELSEIF (irDetectRight = 0) THEN ' Right detects
GOSUB Back_Up ' Back up & turn left
GOSUB Turn_Left
ELSE ' None detect
GOSUB Forward_Pulse ' Apply a forward pulse
ENDIF ' and check again
LOOP
'
[ Subroutines ]
Forward_Pulse: ' Send a single forward pulse.
PULSOUT 13,850
PULSOUT 12,650
PAUSE 20
RETURN
Turn_Left: ' Left turn, about 90-degrees.
FOR pulseCount = 0 TO 20
PULSOUT 13, 650
PULSOUT 12, 650
PAUSE 20
NEXT
RETURN
Turn_Right:
FOR pulseCount = 0 TO 20 ' Right turn, about 90-degrees.
PULSOUT 13, 850
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
Back_Up: ' Back up.
FOR pulseCount = 0 TO 40
PULSOUT 13, 650
PULSOUT 12, 850
PAUSE 20
NEXT
RETURN
+1. Sensors (m)aligned and working properly? Servos centered? New batteries? If all else fails, add some debug statements in your code to monitor sensor output and program flow.
It keeps the code formated to see if there are the spaces needed in the code.
As the resistor value increases the LED gets dimmer and the detection distance drops.
Try walking up to your BOE-Bot and put something in front of it to see if it's near-sighted.
Amanda
' {$STAMP BS2} ' Stamp directive. ' {$PBASIC 2.5} ' PBASIC directive. irDetectLeft VAR Bit irDetectRight VAR Bit DO PULSOUT 13,850 ' drive forward PULSOUT 12,650 FREQOUT 8, 1, 38500 ' Store IR detection values in irDetectLeft = IN9 ' bit variables. FREQOUT 2, 1, 38500 irDetectRight = IN0 IF (irDetectLeft = 0) OR (irDetectRight = 0) THEN exit ' exit if either sensor triggered PAUSE 10 LOOP exit: STOP END