'--------------------------------------------------------- ' Name : sonar-test.bas ' Compiler : PicBasic Pro - MicroEngineering Labs ' Notes : Program control of the Devantech SRF04 ' : ultrasonic module. Convert the raw distance ' : data to a frequency and output to the piezo ' : element. '--------------------------------------------------------- ' PortA set as outputs. Pin 1 input. trisa = %00000010 ' PortB set as outputs. pin 0 input. trisb = %00000001 '------------------------------------------------------ ' initialize variables trigger VAR PORTA.0 echo VAR PORTA.1 piezo VAR PORTA.3 dist_raw VAR WORD dist_inch VAR WORD dist_cm VAR WORD freq VAR WORD conv_inch CON 15 conv_freq CON 6 SOUND PIEZO,[115,10,50,10] start: main: gosub sr_sonar if freq > 47 then main sound piezo,[80 + freq,10] Goto main '--------------------------------------------------------- sr_sonar: pulsout trigger,1 ' send a 10us trigger pulse to the SRF04 pulsin echo,1,dist_raw ' start timing the pulse width on echo pin dist_inch = (dist_raw/conv_inch) ' Convert raw data into inches freq = (dist_raw/conv_freq) ' Convert raw data into a frequency pause 10 ' wait for 10ms before returning to main return end