PING sensor array and HB-25 motor controller
'there are five ping sensors in a row in the front of the robot each with its assigned position , and etc
'the motor controller i used were two HB-25 motor controllers each individually wired to its own motor.
'the robot has ample external power and all the motors respond to the example code but i cant get the select case
'to work for the different variables. i would greatly appretiate any help. Thank you very much. [noparse]:)[/noparse]
and this is the code for the HB-25 motor contorller example:
'the motor controller i used were two HB-25 motor controllers each individually wired to its own motor.
'the robot has ample external power and all the motors respond to the example code but i cant get the select case
'to work for the different variables. i would greatly appretiate any help. Thank you very much. [noparse]:)[/noparse]
' {$STAMP BS2}
' {$PBASIC 2.5}
timeFarRight VAR Word
timeRight VAR Word
timeMid VAR Word
timeLeft VAR Word
timeFarLeft VAR Word
speed VAR Byte
distFarLeft VAR Byte
distLeft VAR Byte
distRight VAR Byte
distFarRight VAR Byte
distMid VAR Byte
index VAR Word
leftWheel PIN 9
rightWheel PIN 8
farLeft PIN 0
farRight PIN 12
left PIN 15
right PIN 13
mid PIN 14
DO : LOOP UNTIL leftWheel = 1 ' Wait For HB-25 Power Up
LOW leftWheel ' Make I/O Pin Output/Low
PAUSE 5 ' Wait For HB-25 To Initialize
PULSOUT leftWheel, 750 ' Stop Motor 1
DO : LOOP UNTIL rightWheel = 1 ' Wait For HB-25 Power Up
LOW rightWheel ' Make I/O Pin Output/Low
PAUSE 5 ' Wait For HB-25 To Initialize
PULSOUT rightWheel, 750
DO
GOSUB distance
LOOP
distance:
PULSOUT farLeft, 5
PULSIN farLeft, 1, timeFarLeft
timeFarLeft = timeFarLeft ** 2251
distFarLeft = timeFarLeft
PULSOUT left, 5
PULSIN left, 1, timeLeft
timeLeft = timeLeft ** 2251
distLeft = timeLeft
PULSOUT mid, 5
PULSIN mid, 1, timeMid
timeMid = timeMid ** 2251
distMid = timeMid
PULSOUT right, 5
PULSIN right, 1, timeRight
timeRight = timeRight ** 2251
distRight = timeRight
PULSOUT farRight, 5
PULSIN farRight, 1, timeFarRight
timeFarRight = timeFarRight ** 2251
distFarRight = timeFarRight
DEBUG HOME, "Left wheel: ", DEC4 distFarLeft, " cm",
CR, "Body Left: ", DEC4 distLeft, " cm",
CR, "Center Distance: ", DEC4 distMid, " cm",
CR, "Body Right: ", DEC4 distRight, " cm",
CR, "Right wheel: ", DEC4 distFarRight, " cm"
RETURN
brickWall:
FOR index = 0 TO 250
PULSOUT leftWheel, 750 + index
PAUSE 1
PULSOUT rightWheel, 750 - index
NEXT
PAUSE 2000
IF (distFarLeft>12 AND distLeft AND distMid>12 AND distRight>12 AND distFarRight) THEN
GOSUB brickWall
ELSE
RETURN
ENDIF
obstLeft:
PAUSE 100 'ill figure this one out later i just need response to distance first
RETURN
obstRight:
PAUSE 100 'same as above
RETURN
and this is the code for the HB-25 motor contorller example:
' =========================================================================
' File...... HB-25 Motor Test.bs2
' Purpose... Tests One Or Two HB-25's Connected To P15
' Author.... Parallax, Inc.
' E-mail.... support@parallax.com
' Updated... 01-18-2006
'
' {$STAMP BS2}
' {$PBASIC 2.5}
' -----[noparse][[/noparse] Program Description ]---------------------------------------------
' This program tests the HB-25 by waiting for it to power up, then pulsing
' the output to ramp the motors up in opposite directions, wait 3 seconds
' then ramp them back down to a stopped position. While the code is
' written for two HB-25/motors you can use it with just one by commenting
' out or removing the lines for the second motor, commented below. If you
' have two HB-25/motors connected, remember to remove the jumper block from
' the second HB-25.
' -----[noparse][[/noparse] I/O Definitions ]-------------------------------------------------
HB25 PIN 9 ' I/O Pin For HB-25
' -----[noparse][[/noparse] Variables ]-------------------------------------------------------
index VAR Word ' Counter For Ramping
' -----[noparse][[/noparse] Initialization ]--------------------------------------------------
DO : LOOP UNTIL HB25 = 1 ' Wait For HB-25 Power Up
LOW HB25 ' Make I/O Pin Output/Low
PAUSE 5 ' Wait For HB-25 To Initialize
PULSOUT HB25, 750 ' Stop Motor 1
PAUSE 1 ' 1 mS Delay
PULSOUT HB25, 750 ' Stop Motor 2 (If Connected)
' The Above 2 Lines May Be Removed
' If You Are Using Single Mode
' -----[noparse][[/noparse] Program Code ]----------------------------------------------------
Main:
PAUSE 20 ' Wait 20 mS Before Ramping
FOR index = 0 TO 250 ' Ramp Up To Full Speed
PULSOUT HB25, 750 + index ' Motor 1 Forward
PAUSE 1 ' 1 mS Delay For Motor 2 Pulse
PULSOUT HB25, 750 - index ' Motor 2 Reverse
PAUSE 20 ' 20 mS Smoothing Delay
NEXT
PAUSE 3000 ' Wait 3 Seconds
FOR index = 250 TO 0 ' Ramp Back Down
PULSOUT HB25, 750 + index ' Motor 1 Forward Slowing
PAUSE 1 ' 1 mS Delay For Motor 2
PULSOUT HB25, 750 - index ' Motor 2 Reverse Slowing
PAUSE 20 ' 20 mS Smoothing Delay
NEXT
STOP ' Use STOP To Prevent State Change

Comments