Autor Tema: Problema tiempo de detección de push button  (Leído 2323 veces)

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

Desconectado jo-fe-ar

  • PIC10
  • *
  • Mensajes: 24
Problema tiempo de detección de push button
« en: 20 de Septiembre de 2009, 20:08:01 »
Hola, bueno, vengo a comentarles un problema que tengo a ver si me pueden ayudar, espero que si...
programo en pbp pic basic proeste es el problema...
tengo 3 botónes conectados al pic, y un lcd, cuando uno de esos botones se activa el lcd muestra un nuevo mensaje (esto lo hago por medio de if y gosub return, if boton = 0 then gosub etiqueta)
y ya estando en esa etiqueta que me llevo el gosub, igual vuelvo a detectar el boton para ir a otra etiqueta que mostrar otro mensaje...el problema esta aqui... tengo que poner en cada etiqueta pause 500 para ue el lcd se inicialize correctamente... entonces pause 500, muestro el mensaje en el lcd, detecto boton si esta presionado ejecuto gosub, si no paso nada regreso al inicio de la etiqueta, entonces, cada que inicio de nuevo la etiqueta tengo q esperar de nuevo 500 ms, que me son incomodos a la hora de detectar el boton, pues en la vida real, tengo que presionarlo un rato en lo que el programa llega a aesa parte de deteccion, y  me lo ejecuta, pero aveces me pasod e rato, y es incomodo....este es la parte del p´roble,ma del programa( aue es repetitiva durante todo el programa)...

UNO:
pause 500
LCDOUT $FE, 1, "buenos"
LCDOUT $FE, $C0, "dias"
IF DERECHA = 0 THEN pause 50
IF DERECHA = 0 THEN GOSUB DOS
IF CENTRO  = 0 THEN pause 50
IF CENTRO  = 0 THEN INICIO
pause 500

GOTO UNO

DOS:
LCDOUT $FE, 1, "buenas noches"
LCDOUT $FE, $C0, "adios"
IF DERECHA = 0 THEN pause 50
IF DERECHA = 0 THEN GOSUB TRES
IF CENTRO  = 0 THEN pause 50
IF CENTRO  = 0 THEN INICIO
IF IZQUIERDA = 0 THEN PAUSE 50
IF IZQUIERDA = 0 THEN return

GOTO DOS

TRES:

LCDOUT $FE, 1, "hola"
LCDOUT $FE, $C0,  "a todos"
IF CENTRO = 0 THEN pause 50
IF CENTRO = 0 THEN INICIO
IF IZQUIERDA = 0 THEN pause 50
IF IZQUIERDA = 0 THEN RETURN
IF DERECHA = 0 THEN PAUSE 50
IF DERECHA = 0 THEN GOSUB CUATRO


GOTO TRES

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema tiempo de detección de push button
« Respuesta #1 en: 20 de Septiembre de 2009, 21:30:55 »
El LCD debe inicializarse sólo una vez en el programa. Por lo tanto, el delay de 500 ms debe estar fuera de todo loop. Sólo es necesario una vez. Luego puedes usar el LCD bastante más rápido y sin mayores demoras..
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jo-fe-ar

  • PIC10
  • *
  • Mensajes: 24
Re: Problema tiempo de detección de push button
« Respuesta #2 en: 20 de Septiembre de 2009, 22:12:43 »
pero lo que pasa es que si les quito el pause 500, la imagen en el lcd parpadea mucho, y si si se los pongo, esta estable, sabe alguien porque pasa eso? ha y otra cosa ...


el mismo problema, pero en este caso, forzosamente tengo que esperar un segundo al inicio de una etiqueta para aumentar el valor de una variable, asi que al inicio de esta etiqueta pongo pause 1000, pero de igual manera, me afecta el tiempo de deteccion del boton, alguna forma de hacerlo sin que me afacte en la demora de la deteccion dekl boton?

gracias x responder espero me sigana yudando

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema tiempo de detección de push button
« Respuesta #3 en: 20 de Septiembre de 2009, 22:24:51 »
Te parparedea porque estás constantemente escribiendo la mísma frase en el LCD, sin sentido...


Código: Visual Basic
  1. pause 500
  2.  
  3. UNO:
  4.         LCDOUT $FE, 1, "buenos"
  5.         LCDOUT $FE, $C0, "dias"
  6. LOOP_UNO:
  7.         IF DERECHA = 0 THEN pause 50
  8.         IF DERECHA = 0 THEN GOSUB DOS
  9.         IF CENTRO  = 0 THEN pause 50
  10.         IF CENTRO  = 0 THEN INICIO
  11.         GOTO LOOP_UNO
  12.  
  13.  
  14. DOS:
  15.         LCDOUT $FE, 1, "buenas noches"
  16.         LCDOUT $FE, $C0, "adios"
  17. LOOP_DOS:
  18.         IF DERECHA = 0 THEN pause 50
  19.         IF DERECHA = 0 THEN GOSUB TRES
  20.         IF CENTRO  = 0 THEN pause 50
  21.         IF CENTRO  = 0 THEN INICIO
  22.         IF IZQUIERDA = 0 THEN PAUSE 50
  23.         IF IZQUIERDA = 0 THEN return
  24.         GOTO LOOP_DOS
  25.  
  26.  
  27. TRES:
  28.         LCDOUT $FE, 1, "hola"
  29.         LCDOUT $FE, $C0,  "a todos"
  30. LOOP_TRES:
  31.         IF CENTRO = 0 THEN pause 50
  32.         IF CENTRO = 0 THEN INICIO
  33.         IF IZQUIERDA = 0 THEN pause 50
  34.         IF IZQUIERDA = 0 THEN RETURN
  35.         IF DERECHA = 0 THEN PAUSE 50
  36.         IF DERECHA = 0 THEN GOSUB CUATRO
  37.         GOTO LOOP_TRES
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jo-fe-ar

  • PIC10
  • *
  • Mensajes: 24
Re: Problema tiempo de detección de push button
« Respuesta #4 en: 21 de Septiembre de 2009, 01:08:09 »
Muchas mucbas gracias enserio, solucionaste los problemas que tenía, e incluso, con lo ultimo, solucioné otro problemita que era que, en esas secuencias del gosub return, llegaba una etiqueta en la que despues de reccorer toadas las etiquetas, y regresar, al llegar a esa etiqueta, ya no iba mas para atras solo para adelante, y en algunos casos el lc se volvia loco y mostraba caracteres que no son...
pero ya solucionado muchas gracias!


 

anything