Ping Ultrasonic Range Sensor code?

Hi,
does anyone know if there is any Basic Atom 28 Pro code out there to use the “Ping Ultrasonic Range Sensor” by Parrallex?

Thanks,
Deron

Hail!

here ist the code snippet for a Devantech SRF05. Hopefully, it is the same as the Parallax:

trigger  con p11           ' Define pin for Trigger pulse
echo     con p11           ' Define pin for Echo pulse
head	 con p0

ledA	con p4
ledB	con p5
ledC	con p6

range var word			' Range from SRF05

pause 1000
clear

' all LED OFF (high=low...)
high p4
high p5
high p6

' Bootstrap
low p4
pause 100
low p5
pause 100
low p6
pause 100
serout s_out,i38400,"Start",13]

main:
	gosub ping
	gosub showrange 
	pause range/10
goto main

'--------------------------
ping:
	sound p9,[10\2000]
	
	low trigger
	pulsout trigger, 10
	pulsin echo,0,range

      serout s_out,i38400,"range=",dec range,13]
return  

'--------------------------
showrange:
	high ledA
	high ledB
	high ledC
	
	if range<1000 then
		low ledA
	endif
	
	if range<2000 then
		low ledB
	endif
	
	if range<3000 then
		low ledC
	endif
return

It pings via PIN 11 and reads the range just from there. according to the range, it shows up to three leds on the board and pauses for a few milliseconds depending upon the range.

HTH

This is my subrutine that I use for my Ping sensor. Its in PBasic but probably works for MBasic as well. I havent used a ping sensor with an Atom before but if there are differences, there minor.

Get_Sonar: Ping = IsLow PULSOUT Ping, Trigger PULSIN Ping, IsHigh, rawDist rawDist = rawDist */ Scale rawDist = rawDist / 2

Here is some code for a rover that I build that uses a PING sensor mounted on a servo. It might make more sence then whats posted above.

[code]’ {$STAMP BS2}
’ {$PBASIC 2.5}
'Controlls a two motored rover with a ping sensor mounted to a servo

Trigger CON 5
Scale CON $200

RawToIn CON 889
RawToCm CON 2257

IsHigh CON 1
IsLow CON 0

rawDist VAR Word
inches VAR Word
counter VAR Word
leftvalue VAR Word
rightvalue VAR Word

Ping PIN 5

PAUSE 4000 '3 seconds to activate
SEROUT 14, 84, $80, 2,2] 'sets controller in two motor mode
LOW 15 'reset motor controller
HIGH 15
PAUSE 100 'motor controller startup time
FOR counter = 1 TO 10 'Servo center
PULSOUT 1, 720
PAUSE 20
NEXT

'----------MAIN---------------------------------------------------------------------------------------------------------------

DO

GOSUB Get_Sonar

IF (inches < 8) THEN 'when obstacle is less then 8 inches away:
SEROUT 14, 84, $80, 0, 4, 0] 'motors stop
SEROUT 14, 84, $80, 0, 6, 0]
PAUSE 500
GOSUB Servo_Look

IF (leftvalue < rightvalue) THEN
GOSUB Turn_Right
ELSEIF (leftvalue > rightvalue) THEN
GOSUB Turn_Left
ELSEIF (leftvalue + rightvalue < 5) THEN
GOSUB Turn_Around
ELSE
GOSUB Turn_Around
ENDIF

ELSE
SEROUT 14, 84, $80, 0, 4, 100] 'right motor strait
SEROUT 14, 84, $80, 0, 6, 100] 'left motor strait
ENDIF

LOOP

'---------SUBROUTINES------------------------------------------------------------------------------------------------------

Get_Sonar: 'gets sonar from strait ahead
Ping = IsLow
PULSOUT Ping, Trigger
PULSIN Ping, IsHigh, rawDist
rawDist = rawDist */ Scale
rawDist = rawDist / 2
inches = rawDist ** RawToIn
RETURN

Get_Sonar_Left: 'gets sonar from left
Ping = IsLow
PULSOUT Ping, Trigger
PULSIN Ping, IsHigh, rawDist
rawDist = rawDist */ Scale
rawDist = rawDist / 2
leftvalue = rawDist ** RawToIn
RETURN

Get_Sonar_Right: 'gets sonar from right
Ping = IsLow
PULSOUT Ping, Trigger
PULSIN Ping, IsHigh, rawDist
rawDist = rawDist */ Scale
rawDist = rawDist / 2
rightvalue = rawDist ** RawToIn
RETURN

Servo_Look:
FOR counter = 1 TO 50 'Servo left
PULSOUT 1, 1250
PAUSE 20
NEXT
GOSUB Get_Sonar_Left 'get left distance
FOR counter = 1 TO 50 'Servo right
PULSOUT 1, 300
PAUSE 20
NEXT
GOSUB Get_Sonar_Right 'get right distance
FOR counter = 1 TO 50 'Servo center
PULSOUT 1, 720
PAUSE 20
NEXT
RETURN

Turn_Left:
SEROUT 14, 84, $80, 0, 4, 100] 'right motor forward
SEROUT 14, 84, $80, 0, 7, 100] 'left motor reverse
PAUSE 2000
RETURN

Turn_Right:
SEROUT 14, 84, $80, 0, 5, 100] 'right motor reverse
SEROUT 14, 84, $80, 0, 6, 100] 'left motor forward
PAUSE 2000
RETURN

Turn_Around:
SEROUT 14, 84, $80, 0, 5, 100] 'right motor reverse
SEROUT 14, 84, $80, 0, 7, 100] 'left motor reverse
PAUSE 1000
SEROUT 14, 84, $80, 0, 5, 100] 'right motor reverse
SEROUT 14, 84, $80, 0, 6, 100] 'left motor forward
PAUSE 2000
RETURN[/code]

Thank you SIRS! That will move me in the right direction! LOL… a pun!