TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Zero13 en 02 de Diciembre de 2003, 06:04:00
-
Hola a todos, llevo algunos dias....intentando hacer funcionar un emisor y receptor de infrarrojos....y no hay manera humana...lo he probado todo...( ó eso creo!
) y nada.
El emisor es el tipico de 2 patillas....
Y el receptor es de 3 patillas..veas...+ gnd out...de la marca Sharp.
Este pequeño circuito que me he montado lo he probado en otro sistema de pic que tengo ( StampBasic OEM BS2 ) y funciona...pero en Pic Basic no hay manera....
Os adjunto el codigo fuente que he escrito para intentar enviar una señal armonica de 38 Khz y despues leer el estado del receptor de infrarrojos Sharp.
" Codigo para PicBasic Pro ( a traves de MicroStudio Plus )
" Info: Emisor conectado en portb.0
" Receptor conectado en portb.1
emisor var portb.0
recept var portb.1
buzzer var portc.4
output emisor
inicio:
freqout emisor, 1, 38500
pause 50
recept=portb.1
if recept=1 then beep
goto inicio:
" Beep
freqout buzzer, 300, 1000
pause 500
goto inicio:
Si teneis algun codigo de ejemplo que os funcione, algun esquema ó alguna direccion que tengan probado un esquema de IR con Pics y PicBasic...os lo agradecere etarnamente, ya que tengo todo montado....motores...l293d...etc...pero me falto esto.
Mil gracias por adelantado.
Slds!
Zero13
-
Porque no inviertes los pines, utilizando la interrupcion del RB0 para detectar la emision??
Pregunto porque de leer tu codigo se decanta que ambos pines no coinciden en el tiempo, encima le agregaste una pausa de 50 milisegundos entre la emision y recepcion, por lo tanto dudo mucho detectes algo en el pin RB1.
Si activas la interrupcion por RB0 y pones un gosub al codigo del Beep en el Handler de interrupcion tal vez te funcione.

-
OK!, osea...simplemente cambio en la zona de las variables el portb.0 por el portb.1 ???. ....y asi funcionara?
Y la pausa...debo quitarla ?
Gracias por responderme.

Si tuvieras algun ejemplo sencillo te lo agradeceria.
Slds!,
Zero13
-
Hagamoslo mejor y mas facil, cuelga aqui el codigo del Basic Stamp, y vemos bien como hacemos la traduccion del mismo para que te funcione OK en PBP.
Solo debes copiarlo y lo pegas sobre el mensaje, insertandolo entre lineas de separacion, para hacerlo mas legible.
Las lineas de separacion estan arriba entre los botones de insercion en el texto.


-
Aqui te adjunto un codigo de Basic Stamp.
" -----[ I/O Definitions ]------------------------------------------------------
LfIrOut CON 4 " left IR LED output
LfIrIn VAR In11 " left IR sensor input
" -----[ Variables ]------------------------------------------------------------
irBits VAR Nib " storage for IR target data
irLeft VAR irBits.Bit1
" -----[ Main Code ]------------------------------------------------------------
Read_Left:
FREQOUT LfIrOut, 1, 38500 " modulate IR LED
irLeft = ~LfIrIn " read input (1 = target)
Display:
DEBUG Home
DEBUG "L R", CR
DEBUG "----",CR
DEBUG BIN1 irRight
PAUSE 20
GOTO Read_Left
Gracias de nuevo....
Slds!
Zero13
-
Zero, no seas timido y pon el programa completo del BS2, porque asi me quedan cosas descolgadas, variables inexistentes, etc.
Como puedo ayudarte asi?


-
Hola, una cosita, para transmitir pones:
freqout emisor, 1, 38500
Pero en el HELP del PBPlus y PBpro dice que la maxima frecuencia es de 32767 hertz y tu quieres generar 38500. ¿Esto no te probocara el error?
Saludos
-
Si la verdad...es que algo vi sobre el limite del mandato Freqout, pero la cuestion es que Stamp Basic si que lo permite y me parece que pasaba algo por el estilo...me refiero a que poniendo el mandato a 38 Khz...incluso 40 Khz funcionaba.....mu raro!

Pero digo Yo que a lo mejor si lo pongo a 32 Khz...tambien funcionaria...verdad?....unicamente que a menos frencuencia...
Se os ocurre otra manera sin tener que comprar el infrarrojo caro...G2Pxxx ???....de poder utilizar los infrarrojos de siempre....los de dos patitas...tanto emisor como receptor ó como mucho el recepto de tres patitas + gnd out
Slds!
Zero13
-



El programa completo simplemente tiene dos detectores de IR...derecho e izquierdo...y por simplificar el mensaje he recortado todo los concerniente a right.
Que por cierto este codigo no es mio....simplemente lo he puesto como ejemplo...ya que el codigo que Yo utice en su dia no lo tengo ahora a mano.... 

( es de Parallax )
Ahora acabo de hacer una prueba a insertarle a este codigo:
include \"bs2defs.bas\"
Y ni siquiera me da error con los IN....ni tampoco con los DEBUG de la impresion de caracteres por el RS232, que digo yo que sera como el HSEROUT en el PicBasic...verdad?
Esta noche probare este nuevo codigo con esta modificacion y con la de bajar la frecuencia hasta el maximo permitido por PicBasic....32xxx
Gracias muchachos por vuestro apoyo.... 
Igualmente si teneis algo de codigo que pueda controlar Infrarrojos sigo interesado...por si acaso esta noche no me funcionara....
Slds!
Zero13
-
El comando Debug en PBP y en BS2 son similares, admite todos los modificadores del Serout2 del PBP.
Al poner el encabezado de compatibilizacion del BS2 posiblemente te de algun error minimo, consistente en algun detalle, como por ejemplo el reemplazo de parentesis por corchetes, etcetera.
Seguramente va a funcionar correctamente, lo que si tienes que comprobar el correcto traspaso de cada uno de los pines del PIC respecto al BS2.
Si lees el BS2DEFS.bas alli estan las declaraciones de que pin se corresponde con cual PortA y PortB hablando...
