Autor Tema: ayuda picbasic pro y serout & serin  (Leído 9296 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
ayuda picbasic pro y serout & serin
« en: 14 de Septiembre de 2005, 13:21:00 »
Rebotado

hola estoy haciendo un control remoto usando unos transmisores de rf basados en modulacion ASK y tambien usando un pic 16f84a.

Resulta que en la etapa de prueba lo k hice fue encender un led y apagarlo usando el comando serout para el transmisor y el serin para el receptor.

Los problemas k tengo esk mi control remoto esta condicionado a dos switches uno para encender y otro para apagarlo, lo k yo kiero es usar solo un switch. Pero el problema va mas alla pork si uso un swtch digamos k kuando esta abierto mande un "5" y cuando este cerrado un "7"; pues el problema radica en que mientras este cerrado mandara iindefinidamente el numero 5 entonces lo k yo kiero es k lo mande solo una vez

mi programa lo hice asi


tx:
if onn=1 then
 serout datout, N2400,{7}
endif

if onn=0 then
 serout datout,N2400,{5}
endif

goto tx

y el del receptor lo hice asi:

rx:
serin datain, N2400,dato
if dato=5 then OPEN
if dato=7 then CLOSE

OPEN:
high ledver

CLOSE:
low ledver


lo k estaba leyendo es k el comando serin posee la capacidad de compara los datos de entrada con los que se requieren patra asi filtrar los no deseados y ademas posee la capacidad de meter tiempo de retardo para poder leer los datos que entrar sin k se puedan perder o encimar.
El problema es k uso el micro code studio y no me permite poner llaves solo corchetes.

Alguien podria decirme un ejemplo del serin o alguna sugerencia
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
RE: ayuda picbasic pro y serout & serin
« Respuesta #1 en: 15 de Septiembre de 2005, 08:54:00 »
Que tal mi pana navaismo!
Que modulos rf son los que tienes, ya que algunos tienen sus detalles a la hora de enviarle los datos.

Y asi te podre ayudar a hecharlos a andar!

Saludos

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
RE: ayuda picbasic pro y serout & serin
« Respuesta #2 en: 16 de Septiembre de 2005, 11:28:00 »
Gracias Ralf2 pero en realidad el problema no es de los transmisores ya que si los he usado hasta una distancia de 80mts,  el problema esta en mi programa.

 
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
RE: ayuda picbasic pro y serout & serin
« Respuesta #3 en: 16 de Septiembre de 2005, 19:40:00 »
hola mi cabeza ya de plano tiene muchos golpes, komo volvi hacer todo, hagamos de cuenta k no uso los modulos rf ahora solo comunico los pics con un cablecillo directamente, pero no me sale nada se supone que con un switch mando un dato para prender un led y si esta cerrado mando otro para apagarlo y no lo hace ya revise los pics y si funcionan, ya me canse de cambiar el programa y nada la verdad ya no se k hacer. les juro k ya me duele la cabeza de estar piense y piense y nomas no. he hecho otros programillas pero este en particular como me ha ddado dolores de cabeza

alguna ayuda aki los kodigos:

"TX  CODIGO TRANSMISOR
 
INCLUDE "MODEDEFS.BAS"


TRISA=1                                     "marco el porta.o como entrada

BOTON VAR PORTA.0                 "swtich
VIATX VAR PORTA.1                   "pin de salida serie
LEDVE VAR PORTA.2                   "indicadores segun estado del swtch
LEDRO VAR PORTA.3
 
 
 TX:
 
 
   IF BOTON=1 THEN     "aqui si  oprimo el boton segun hago k envie el dato 7
    GOSUB SEND1
   ENDIF

 
 
   IF BOTON=0 THEN      "aqui si esta abierto mando un 0
    GOSUB SEND2
   ENDIF
 
 
 GOTO TX
 
                                   "subrutinas
 SEND1:
  SEROUT VIATX,N9600,[7]
  LOW  LEDRO
  HIGH LEDVE
 RETURN
 
 SEND2:
  SEROUT VIATX,N9600,[0]
  LOW  LEDVE
  HIGH LEDRO
 RETURN


......................................................................

" RX CODIGO RECEPTOR


INCLUDE "MODEDEFS.BAS"

TRISB=1

VIARX VAR PORTB.0
LEDRO VAR PORTB.1
LEDVE VAR PORTB.2
DATO  VAR BYTE

RX:

SERIN VIARX,N9600,DATO

IF DATO=0 THEN
 HIGH LEDVE
 LOW LEDRO
ENDIF


IF DATO=7 THEN
 LOW  LEDVE
 HIGH LEDRO
ENDIF



GOTO RX:
............................................

alguien puede ayudarme que esta mal es mi programa k puedo hacer
porfavor!!!!!!!!!!locoLlorandoHeladoLlorica
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
RE: ayuda picbasic pro y serout & serin
« Respuesta #4 en: 21 de Septiembre de 2005, 10:22:00 »
Que tal mi pana navaismo!

Te voy a colocar un programa para que lo pruebes con el puerto serial y con los modulos RF y me cuentas como te fue.

Codigo para el transmisor

include modedefs.bas

boton  var portb.0

loop:          if boton=0 then
                  gosub led_on
                  else
                  gosub led_off
                  endif
                  goto loop


led_on:     serout portb.1,n2400,[$FF,$FF,"OK","A"]
                 return

led_off:     serout portb.1,n2400,[$FF,$FF,"OK","B"]
                 return

end

Explicacion: pregunta si el boton=0, si es asi salta a la etiqueta led_on alli envia serialmente dos veces FF (hex), para sincronizar el transmisor con el receptor, luego envia la direccion corespondientes al receptor al cual le quieres enviar los datos (en este caso la direccion consta de los caracteres ascii "OK"Giñoy luego envias los datos en este caso es la letra "A".
En caso de que boton sea diferente de cero salta a led_off y envia la letra "B".

Codigo del receptor

datos          var   byte
led_rojo     var   portb.1
led_verde   var  portb.2

Loop:             serin portb.0,n2400,["OK"],datos

                      If datos="A" then led_on
                      lf datos="B" then led_off  
                      goto Loop

led_on:          High led_rojo
                      low led_verde
                      goto Loop

led_off:          low led_rojo
                      high led_verde
                      goto Loop

end

Explicacion:espera que llegue los caracteres ascii "OK" sino no recibe datos, sino se coloca el wait "OK" el receptor capatara ruido y los leds podrian encenderse de manera aleatoria, mosca con esto.
Una vez que el receptor recibe los caracteres "OK" guarda el dato "A" o "B" en la variable datos.
Si el caracter que llega es la "A" salta a la etiqueta led_on y si es el "B" saltara a led_off, luego de encender los led correspondientes a la etiqueta que salto vuelve a Loop a la espera de un nuevo dato.

La velocidad la baje a 2400 baudios hay que ver si en el data sheet de tus modulos estos pueden trabajar a mas velocidad.

Recuerda que los caracteres FF son solo para sincronizar el transmisor con el receptor y no tienen ningun otro cometido prueba el circuito primero conectando el transmisor con el receptor con un cable y si todo anda bien prueba luego con los modulos y muy importante no olvides decirme o mejor dicho decirnos como te fue.

Este programa lo adapte a lo que lo que entendi que era lo que querias hacer pero obviamente lo podemos poner mas interesante.

Y tienes varios errores en tu programa cuando terminas los endif el programa sigue a la siguienrte linea de tu program y por eso te falla debes colocar un goto despues del endif para mandarlo a preguntar por el boton.

Saludos!

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
RE: ayuda picbasic pro y serout & serin
« Respuesta #5 en: 21 de Septiembre de 2005, 23:23:00 »
loco
gracias ralf2 pense k nadie mas me iba a kontestar; si probe tu programa (en proteus para evitarme las molestias de hacerlo) antes de simularlo lo compile y pues el transmisor tenia unos errores al menos eso me marcaba en el code studio y le añadi unos gosub. el receptor estaba bien ("solo detallitos"Giño.

regresando al tema pues le añadi al receptor unos lineas para ver si en un lcd el dato k entra y pues komo k no pasa de mostrarme los FF, es decir no pasa de ahi. De todos modos voy a checarlo kon kalma y te vuelvo a dar las gracias.

te envio uno parecido al primero prog:

"TX  CODIGO TRANSMISOR
 
INCLUDE "MODEDEFS.BAS"


TRISA=1

BOTON VAR PORTA.0
VIATX VAR PORTA.1
LEDVE VAR PORTA.2
LEDRO VAR PORTA.3
 
c var byte
 
 
 TX:
 
 
   IF BOTON=1 THEN
    GOSUB SEND1
   ENDIF

 
 
   IF BOTON=0 THEN
    GOSUB SEND2
   ENDIF
 
 
 GOTO TX
 
 
 SEND1:
   for c=0 to 10
    SEROUT VIATX,T300,[6]
    LOW  LEDRO
    HIGH LEDVE
     IF BOTON=0 THEN
     GOTO TX
     ENDIF
  pause 3000
  next c
 RETURN
 
 SEND2:
  for c=0 to 10
   SEROUT VIATX,T300,[0]
   LOW  LEDVE
   HIGH LEDRO
    IF BOTON=1 THEN
     GOTO TX
    ENDIF
  pause 3000
  next c
 RETURN
.....................................

" RX CODIGO RECEPTOR


INCLUDE "MODEDEFS.BAS"

TRISB=1

VIARX VAR PORTB.0
LEDRO VAR PORTB.1
LEDVE VAR PORTB.2
CLEAN VAR PORTB.6
DATO  VAR BYTE


RX:

SERIN VIARX,T300,DATO

IF DATO=0 THEN
 LCDOUT #DATO
 HIGH LEDVE
 LOW LEDRO
ENDIF


IF DATO=6 THEN
 LCDOUT #DATO
 LOW  LEDVE
 HIGH LEDRO
ENDIF



GOTO RX:
.............................

nota segun otros programas k he hecho no es necesario poner un goto debajo de cada endif ya que seria un gasto innecesario de memoria. pork el micro esta haciendo un loop constante  desde el rx: hasta el goto rx y lo mismo para el tx.


estos progs ya los cheke en proteus y si funcionan pero los paso a un Circuito fisico y no funciona k sera. voy a checar bien tu programa

gracias de nueva cuenta es bueno saber k no estamos solos. pongo el sch de proteus de mi prog. no pude subirlo
 
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
RE: ayuda picbasic pro y serout & serin
« Respuesta #6 en: 22 de Septiembre de 2005, 09:51:00 »
Que tal mi pana!
Ya correji el programa que te envie previamente para el transmisor revizalo.

Lo que veo y que no me di cuenta es que de esta manera el transmisor va a estar constantemente enviando datos dependiendo del estado de boton (0 o 1), seria mejor colocar dos pulsadores cuando uno se active me enciende el led rojo y apaga el verde y cuando el otro este pulsado invierta los estados de los led, como una sugerencia podrias colocar esto:

loop:    if botonA=0 then led_on
            if botonB=0 then led_off
            goto loop
Aqui coloco el goto para que solo cuando alguno de los pulsadores este activado, envie los datos en caso contrario no.

Ahora en cuanto a lo tuyo veo varias cosas que me paresen que no estan bien.
coloco el codigo del transmisor

TX:


IF BOTON=1 THEN
GOSUB SEND1
ENDIF



IF BOTON=0 THEN
GOSUB SEND2
ENDIF


GOTO TX                    

SEND1:
for c=0 to 10
SEROUT VIATX,T300,[6]
LOW LEDRO
HIGH LEDVE
IF BOTON=0 THEN     ; esto no hace falta ya que boton=1
GOTO TX                    ; aqui lo estas mandando de nuevo al inicio, no va ENDIF                        ; esto no va, se usa con if then
pause 3000
next c
RETURN

Con send1 vas a enviar 11 veces (0 al 10) el 6 al receptor cada 3 segundos es lo que quieres hacer?

SEND2:
for c=0 to 10
SEROUT VIATX,T300,[0]
LOW LEDVE
HIGH LEDRO
IF BOTON=1 THEN
GOTO TX
ENDIF
pause 3000
next c
RETURN
.....................................
Aplica lo mismo que para send1 y de esta forma te trabajara.

Reviza esto y luego me comentas

Saludos

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
RE: ayuda picbasic pro y serout & serin
« Respuesta #7 en: 22 de Septiembre de 2005, 22:48:00 »
Sonrisa

Gracias Ralf la verdad es tu programa el anterior me sirvio de mucho ya que me pude dar una idea de como usar mejor los comandos basandome en ese hice uno k mande los datos cada 2 segundos y me funciono de maravilla.

lo estuve haciendo segun tus recomendaciones y la verdad funciono muy bien ya lo probe con los modulos y funciona perfecto.

De nuevo muchas gracias, sin tu ayuda y sin tus ejemplos me hubiese atascado mucho y ya se pork no jalaban ninguno de los progs fisicamente como tengo el Tx y el Rx en protos separados los probe sin los modulos y no tenia juntas las tierras de cada proto por eso no funcionabaSonrisa Gigante osea k un detalle basico de electronica me tenia en stop total.
Gracias seguire probando todo para hacerlo mas complejo.
en realidad lo k kiero es un control remoto para un robot k estoy haciendo y kon esto ya esta mas k hecho

Gracias
VacilandoVacilandoVacilandoVacilando
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
RE: ayuda picbasic pro y serout & serin
« Respuesta #8 en: 23 de Septiembre de 2005, 08:51:00 »
Que tal mi pana navaismo!

Me alegro mucho haberte podido ayudar, y que todo te alla funcionado bien!!!Giño

Para eso estamos aqui para ayudarnos entre todos!

Saludos


 

anything