TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: lycans2005 en 20 de Abril de 2010, 02:24:26
-
Ayuda, no he podido hacer andar el sensor,
quiero medir distancia y mostrar en el lcd....
el codigo alparecer funciona pero no muestra la medicion
'DEFINICIÓN DE REGISTROS PARA EL LCD
DEFINE LCD_DREG PORTB 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS
DEFINE LCD_DBIT 0 'DESDE EL BIT B.0 AL BIT B.3
DEFINE LCD_RSREG PORTB 'SELECCIÓN DEL PUERTO DEL REGISTRO
DEFINE LCD_RSBIT 4 'EN EL BIT B.4
DEFINE LCD_EREG PORTB 'UTILIZAR EL ENABLE EN EL PUERTO B
DEFINE LCD_EBIT 5 'EN EL BIT B.5
define OSC 4
DISPARO VAR PORTA.2 'PIN USADO PARA EL PULSO DE DISPARO
ECO VAR PORTA.3 'PIN USADO PARA EL ECO
MEDIDA VAR Word 'VARIABLE de 16 bits PARA ALMACENAR LA MEDIDA
TRISA = %00001000
proceso:
pause 100 ' Pausa inicial para estabilizar el circuito (50ms)
disparo = 0 ' Inicializa el valor de DISPARO
PulsOut DISPARO,5 ' Manda un pùlso de disparo para empezar a medir
GoSub leer_eco ' Llamada a funcion para leer el ancho del eco recibido
GoTo proceso ' Vuelve e iniciar cuando se ha leido el eco
leer_eco: 'Funcion de leer el eco
Select Case eco 'si hay eco no manda pulso de disparo
Case 1 'Si no nay eco
GoTo proceso 'Vuelve a iniciar el proceso
Case 0 'Si hay eco
PulsIn ECO,2,MEDIDA 'Lee el acho del pulso de eco y lo guarda en medida
medida= medida/54 'para convertir en cm
Lcdout $fe, 1, "DISTANCIA:", #medida, " cm" 'Muestra el valor medido en el LCD
If medida <10 Then
lcdout $FE, $C0
Lcdout "Cuidado" 'Aviso
EndIf
GoTo proceso 'Vuelve a lanzar el proceso
End Select
End
(http://s2.subirimagenes.com/otros/4385988cl.jpg)
-
Bueno como nadie dijo nada...y despues de tanto trabajo por fin me dio
ahi va:
Esta vez lo hice con pic basic proton ya que me permite manejar numeros flotantes.
Esta en el modo 1, si alguien sabe como lograr trabjar en modo dor...por favor publiquen.
Tengo una duda, alquien me podria dcir como hago para que los numero no parpaden tanto
es super canson ver esos numero cambiando y que se vean como apagandosen
SRF05 modo compatibilidad con SR04
'Carlos Andres Vargas C.
'lycans2005@hotmail.com
'Cualquier tipo de mejora por favor enviarmela.
Device 16F628A 'PIC Utilizado
Xtal = 4 'Oscilador de 4MHZ
' DEFINICIÓN DE REGISTROS PARA EL LCD
Declare LCD_Interface 4
Declare LCD_Lines 2
Declare LCD_DTPin PORTB.0 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS DESDE EL BIT B.0 AL BIT B.3
Declare LCD_ENPin PORTB.5 'UTILIZAR EL ENABLE EN EL PUERTO B, EN EL BIT B.5
Declare LCD_RSPin PORTB.4 'SELECCIÓN DEL PUERTO DEL REGISTRO,EN EL BIT B.4
'VARIABLES
Dim DISPARO As PORTA.3 'PIN USADO PARA EL PULSO DE DISPARO
Dim ECO As PORTA.4 'PIN USADO PARA EL ECO
Dim MEDIDA As Word 'Variable para guardar la medida
Dim dist_pulg As Word
Dim dist_cm As Float
'Factor de conversion
Dim cm As 6
Dim pulg As 15
Low DISPARO 'set trigger pin to logic 0
main:
GoSub proceso 'get sonar reading
Print $FE, 1, "Dist:" , Dec2 dist_cm," cm" 'display the distance in cm con 2 decimales
GoTo main
End
proceso:
DISPARO=0
PulsOut DISPARO,5 'Se genera un pulso de 10uS (5x2uS)
PulsIn ECO,1,MEDIDA 'Se mide la duracion del ECO
'dist_pulg = (medida/pulg) 'Converte medida en pulgadas
dist_cm = (MEDIDA/cm) 'Converte medida en cm
If dist_cm <10 Then 'distancia menor a 10 cm arroja una advertencia
Print $FE, $C0, "CUIDADO!"
EndIf
DelayMS 100 'wait for 10us before returning to main
Return
proceso2:
PulsOut DISPARO,5 '10us init pulse
Output DISPARO 'dummy command (delay)
RCIn ECO,1,MEDIDA 'measure echo time
'dist_pulg = (medida/pulg) 'Converte medida en pulgadas
dist_cm = (MEDIDA/cm) 'Converte medida en cm
DelayMS 100 'wait for 10us before returning to main
Return
-
una pregunta cuando va a proseso 2
-
una pregunta cuando va a proseso 2
jjeje amigo creo que nunca, pero si se lo quito no me funciona....realmente no se que esta pasando
lo hice con base en muchos ejemplos que encontre.
prueba y me avisa
-
gracias lycans2005 ha funcionado es mi primer proyecto interesante ,te da muchos animos ,haber si consigo hacer que funcione para aparcar mi coche , que tendrian que ser dos srf04 y display de 7 segmentos grandes,si alquien puede ayudar para mejorar el proyecto. Tampoco he conseguido quitarle el dichoso parpadeo pero he conseguido que no se muevan tanto los numeros decimales poniendo solo 1 Dec1 dist_cm.Hay os pongo foto montaje en protoboard.http://imageshack.us/photo/my-images/9/sam0380vg.jpg