Bienvenido al foro. En este foro te ayudaremos a hacerlo, pero solo te ayudaremos
Aqui te explica como utilizar el srf05 en español y muy bien explicado, con los datos que te da ahi tienes que calcular el tiempo para los 50cm, activas la señal durante el tiempo que te dice ahi, como es un tiempo pequeño lo puedes hacer por bucle, y en la patilla de recepcion, que puede ser la misma de emitir, esperas que se ponga a 1, mides con un TIMER o por bucle el tiempo para 50cm y al rematar ese tiempo miras si esta a 0, si esta a 0 la distancia es inferior, si sigue a 1 la distancia es superior.
Puedes hacer hasta 20 medidas por segundo, e incluso hacerlas cada menos tiempo para saber la distancia aproximada.
http://www.msebilbao.com/notas/downloads/Medidor%20Ultrasonico%20SRF05.pdf
mmm disculpen la ignorancia pero aun no me sale, segun yo hice este programa para probar mi sensor y nadamas no me prende el led que conecte al pic pero el led que se encuentra en la parte posterior del sensor comienza a prender y apagar pero al momente de acercarle la mano a distancia aprox. de 20 cm se queda sin parpadear por lo que deduci que mi programacion esta mal si alguien me puede hacerme notar en que me equivoque se lo agradeceria mucho, recurro a este foro ya que lo intente de varias maneras y nadamas no me sale!!
list p=16F628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
#DEFINE PULSO PORTB,1
#DEFINE LED PORTB,2
#DEFINE ECO PORTA,1
;**********************************************************************
RESET_VECTOR CODE 0x0000 ; processor reset vector
goto START ; go to beginning of program
INT_VECTOR CODE 0x0004 ; interrupt vector location
MAIN_PROG CODE
START
bsf STATUS,RP0
bcf STATUS,RP1
movlw 0x00
movwf TRISB
movlw 0xFF
movlw TRISA
bcf STATUS,RP0
bcf STATUS,RP1
movlw d'7'
movwf CMCON
bcf PULSO ;prepara el pulso a nivel bajo
principal
bsf PULSO ;comienza el pulso
call tiempo ;llama a subrutina para mantener el pulso aprox.766 micro segundos
bcf PULSO ;termina el pulso
espera_eco
btfss ECO ;pregunta si ah recibido el eco
goto espera_eco
bsf LED ;prende led
goto espera_eco ;regresa hacer todo el proceso
;subrutina de tiempo para mandar el pulso al sensor
tiempo
movlw 0xFF
movwf 0x21
aqui decfsz 0x21
goto aqui
return
END ; directive 'end of program'