Autor Tema: ANTI-REBOTES SOFTWARE  (Leído 5355 veces)

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

Desconectado er_clemen

  • PIC10
  • *
  • Mensajes: 42
ANTI-REBOTES SOFTWARE
« en: 11 de Julio de 2003, 19:04:00 »
¿Quien me puede decir como hacer un antirebotes por software con PBP?

GRACIAS

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: ANTI-REBOTES SOFTWARE
« Respuesta #1 en: 12 de Julio de 2003, 06:28:00 »
Puedes utilizar el comando Button, que preve un tiempo programable de antirrebote, o desarrollar una rutina de escaneo de la tecla con 20 mseg de retardo...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: ANTI-REBOTES SOFTWARE
« Respuesta #2 en: 02 de Diciembre de 2006, 14:36:35 »
No me queda claro adonde va el retardo para evitar el rebote.
Usando este programa para leer el teclado, donde iría el retardo de 20mseg????(tiene un retardo al final, pero  está mal puesto o no es suficiente)

barrido:   
        LOW A                       ;hacer bajo la 1era fila
  IF UNO    = 0 THEN numero=1:return ;si 1ra tecla es presionada sacar 1   
  IF DOS    = 0 THEN numero=2:return ;si 2da tecla es presionada sacar 2
  IF TRES   = 0 THEN numero=3:return ;si 3ra tecla es presionada sacar 3
   
        HIGH A                     ;poner en alto la 1era fila
        LOW B                      ;hacer bajo la 2da fila
  IF UNO    = 0 THEN numero=4:return    ;si 1ra tecla es presionada sacar 4 
  IF DOS    = 0 THEN numero=5:return  ; y así sucesivamente 
  IF TRES   = 0 THEN numero=6:return   
 
        HIGH B                     ;poner en alto la 2da fila
        LOW C                      ;hacer bajo la 3ra fila
  IF UNO    = 0 THEN numero=7:return   
  IF DOS    = 0 THEN numero=8:return 
  IF TRES   = 0 THEN numero=9:return     
   
        HIGH C                     ;poner en alto la 3ra fila
        LOW D                      ;hacer bajo la 4ta fila
       
  IF DOS    = 0 THEN numero=0:return ;solo senso el 0   
 
 
        HIGH D                     ;poner en alto la 4ta fila
  pause 10                       ;pausa de 10 milisegundos
 goto barrido           

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ANTI-REBOTES SOFTWARE
« Respuesta #3 en: 02 de Diciembre de 2006, 14:43:42 »
Deberías ponerlo antes de cada "return"

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: ANTI-REBOTES SOFTWARE
« Respuesta #4 en: 02 de Diciembre de 2006, 14:51:05 »
Hola! No se nada de PBP pero yo hice un antirrebotes en asm(en C es tambien facil de hacer) que consistia en poner un registro a 127(más o menos la mitad) y cada vez que se leía un 0 en la linea se decrementaba el registro y si se leía un 1 se incrementaba... de esta forma cuando el registro se desborda por arriba tienes un 1 en la linea, y si lo hace por abajo tienes un 0... Lo utilizé con un interruptor tipo switch(de estos malillos que fallan mucho) y me funcionaba a la perfección... no fallaba nunca. Espero que te sirva...salu2!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado electronando

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 427
Re: ANTI-REBOTES SOFTWARE
« Respuesta #5 en: 02 de Diciembre de 2006, 15:14:01 »
te doy una formula q nunca me falla supongamos q portb.0 esta con pull up a 5voltios y si se juntan contactos me lleven a tierra , solo uso esto en contactos super ruidosos como botones de lata switch de fines de carreraen donde de acuerdo a la cantidadde ruidosidadq pueda tener aumentas obajas el tiempo de gracia paravolver a testear mira

if portb.0=0 then

pause 20 'ëste es el retardo o tiempo de gracia
if portb.0=0 then
(acalarutina q deseas ejecutar)
endif
endif
esto es que preguntas laprimeravez y una vez q te acierte sea ruido o no despues de un tiempo de estabilizacion vuelvo hacer la pregunta y si acierta en esta se ejecuta recien la rutina la verdadnunca entendi de una forma bien explicita lo de button por eso uso esta rutina q me funciona de maravillas espero te sirva :-/

Desconectado Marioguillote

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: ANTI-REBOTES SOFTWARE
« Respuesta #6 en: 02 de Diciembre de 2006, 15:51:43 »
Hola TREMENS

Exactamente como te dijo Nocturno, debes ponerlo antes del return, cosa que te quedaría :

IF UNO    = 0 THEN numero=1 : DELAYMS 20 : return ;si 1ra tecla es presionada sacar 1   

Esto debieras repetirlo en cada línea.
Yo particularmente al usar esa técnica de barrido utilizo retardos de más tiempo, ya que 20 ms me resulta poco.
Yo he usado satisfactoriamente tiempos de entre 200 ms y 600 ms.

Saludos
Mario

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: ANTI-REBOTES SOFTWARE
« Respuesta #7 en: 02 de Diciembre de 2006, 16:10:03 »
Esto es un ejemplo de cómo usar el button:


UP                       VAR PORTB.6             'TECLA DE UP
DOWN                  VAR PORTB.7             'TECLA DOWN 

 loop10:
 Button UP,1,255,0,B5,0,loop11
 High INUP
 loop11:
 IF INUP=1 Then SPPISTON                           
                       
 loop12:
 Button DOWN,1,255,0,B6,0,loop13
 High INDOWN
 loop13: 
 IF INDOWN =1 Then SPPISTON
                       
 Write 0,SPPISTON.BYTE0
 Write 1,SPPISTON.BYTE1

Espero sirva.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: ANTI-REBOTES SOFTWARE
« Respuesta #8 en: 02 de Diciembre de 2006, 16:13:22 »
Yo siempre implemento un antirebote asi en PBP

if portx.x=x then
 pause 50
  if portx.x=x then   'el estado de x debe ser el mismo despues del Igual
     'acciones
  endif
endif
"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 aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: ANTI-REBOTES SOFTWARE
« Respuesta #9 en: 02 de Diciembre de 2006, 16:54:53 »
Yo hago como navaismo....y funciona.
Al principio me perseguia con que "que pasa si justo tengo dos ruidos separados por el mismo tiempo de la demora, y lo interpreto como un 1 que en realidad no existe?" pero en la practica no pasa nunca (o he tenido mucha suerte) :mrgreen:

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: ANTI-REBOTES SOFTWARE
« Respuesta #10 en: 02 de Diciembre de 2006, 17:37:01 »
Hola Amigos, yo a los anti-rebotes los escribo (en asm) con tres verificaciones..
supongamos que el pulsador conecta a masa y la resistencia es a +
verifico si el pin esta en cero---> si
 demora 50 ms  ----> continuo ya que no pulsaron
luego de la demora, verifico si continua en cero----> si

entonces lo mantienen pulsado,  entro en un loop verificando si es uno  (sera uno cuando suelte)
continua el programa....   :mrgreen:

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: ANTI-REBOTES SOFTWARE
« Respuesta #11 en: 02 de Diciembre de 2006, 18:27:51 »
'Esto no falla nunca
Dim p1 As Bit
p1=0
main:
   If RA0 = 1 Then p1 = 1
   If p1 = 1
      hago lo que sea
      p1 = 0
   Endif
Goto main
End       
Saludos desde Granada, España.

Desconectado pandarojo

  • PIC10
  • *
  • Mensajes: 6
Re: ANTI-REBOTES SOFTWARE
« Respuesta #12 en: 27 de Mayo de 2007, 08:17:53 »
El problema viene si al mismo tiempo estamos atendiendo la visualización con varios displays de 7 segmentos. Entonces con esas demoras se producen parpadeos. Me imagino que una solución podría ser anidar x veces pausas muy pequeñas.

Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: ANTI-REBOTES SOFTWARE
« Respuesta #13 en: 27 de Mayo de 2007, 12:00:11 »
Si atiendes al display mediante la interrupción del Timer no tiene porque haber parpadeos extraños.

Desconectado pandarojo

  • PIC10
  • *
  • Mensajes: 6
Re: ANTI-REBOTES SOFTWARE
« Respuesta #14 en: 28 de Mayo de 2007, 12:08:05 »
Ya, pero es que en los códigos de ejemplo no había visto el uso de interrupciones por ningún lado. Cosa que, por otra parte me gustaría ver, me refiero a un ejemplillo completo para ver como funcionan. Se nota que soy novato ¿verdad? Estoy intentando hacer un proyectillo por mi cuenta pero, tengo poca idea de microcontroladores y nada de ensamblador, por eso tiro por el basic.
En un post aparte expondré lo que pretendo hacer.

Saludos.


 

anything