Autor Tema: Ayuda con pulsadores  (Leído 2993 veces)

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

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
Ayuda con pulsadores
« en: 27 de Marzo de 2004, 20:53:00 »
Hola a todos:

Me gustaría que alguien me comente como se usa un pulsador en el aspecto de la programación.
He tratado de usarlos varias veces pero tengo problemas con los resultados.
Cuando pulso y por ejemplo incremento una variable o muestro un numero mas en un display, me pasa que aumenta varias veces la variable o el numero. Me podrían pasar alguna rutina de cómo se testea un pulsador y cuanto tiempo hay que esperar para volver a chequearlo.

Muchas gracias.
Pablo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Ayuda con pulsadores
« Respuesta #1 en: 28 de Marzo de 2004, 01:42:00 »
Tienes que colocar una temporización antirebotes, para dejar que se estabilice el pulsador antes de testearlo. te busco por el FORO unos ejemplos que hace bastante tiempo dejé.

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Ayuda con pulsadores
« Respuesta #2 en: 28 de Marzo de 2004, 03:06:00 »
No encuentro lo que busco. Es igual te pongo este: http://miarroba.com/foros/ver.php?foroid=46840&temaid=1654587&msgid=13426247

Un saludo

adolfoadc

  • Visitante
RE: Ayuda con pulsadores
« Respuesta #3 en: 28 de Marzo de 2004, 07:46:00 »
A parte de esperar un tiempo de aproximadamente 500ms antes de confirmar que el pulsador esta pulsado si deseas quitarte el efecto de los rebotes puedes utilizar un condensador en paralelo con el pulsador para que amortigue antes los rebotes.
Cuando detectes la pulsacion espera 500ms, si sigue pulsado entonces esta confirmada la pulsacion y incrementas la variable.

Desconectado pendexgabo

  • PIC16
  • ***
  • Mensajes: 222
    • www.SosaGabriel.com.ar
RE: Ayuda con pulsadores
« Respuesta #4 en: 28 de Marzo de 2004, 12:40:00 »
buenas. debes tener en cuenta que en aspectos practicos, el micro es mucho mas rapido que vos y a la hora de presionar un pulsador el pic puede haber pasado muchas veces por la linea que le indica leer cierto pin, ademas CCS no estipula si el pin del micro es presionado manualmente o recibe la "señal" de otro medio..

posiblemente esto lo sabias, pero creo que a veces es mejor saber COMO funcionan las cosas y no solo como resolver los problemas

saludos

Desconectado solid84

  • PIC12
  • **
  • Mensajes: 56
RE: Ayuda con pulsadores
« Respuesta #5 en: 29 de Marzo de 2004, 15:54:00 »
que tal a todos otra manera es usar un retardo pequeño por ejemplo 32ms para la exploracion y usar una bandera(flag) un bit designado para eliminar los rebotes

ejemplo:

boton()
{    
         Delay_Ms(32);             //retardo de 32ms

          if(tecla_1==1)              //funcion de la tecla
         {
             if(rebote==1)
                return;                  //si la bandera en esta caso es 1 se
                                             //ejecuta un retorno

            else
           {

              rutina xxxxx            //ejecuta rutina
              rebote=1;               // se prende la bandera indica que el
                                             //boton ya se presiono y se evitan
                                             //los rebotes
           }  
         }

          else
               rebote=0;              //si la tecla no se presiona se apaga
                                             //la bandera
}

asi los rebotes y aun la tecla presionada no se ejecuta la rutina hasta que se libere la tecla y la bandera se apague espero sirva el ejemplo saludos

       

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Ayuda con pulsadores
« Respuesta #6 en: 30 de Marzo de 2004, 02:48:00 »
Sin embargo creo que con la bandera rebote lo que evitas es la autorepetición.
El efecto antirebote lo consigues con tu retardo de 32 ms.

Desconectado solid84

  • PIC12
  • **
  • Mensajes: 56
RE: Ayuda con pulsadores
« Respuesta #7 en: 30 de Marzo de 2004, 15:34:00 »
bueno quizas si pero recordemos que el rebote genera varios pulsos que el micro claramente sensa como 1 ó 0 segun sea el caso al tener una bandera se puede omitir el retardo ya que solo una pulsacion sera valida  y las demas invalidas creo que depende tambien de la aplicacion saludos

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Ayuda con pulsadores
« Respuesta #8 en: 31 de Marzo de 2004, 02:51:00 »
Tal como tienes escrito el programa, y que conste que no lo he probado, no admite una nueva pulsación mientras la primera detectada siga activa, a 1. Sin embargo, cuando esta primera pulsación cambia a 0, libera la bandera para admitir otra pulsación.
Por tanto, como al principio de una pulsación hay muchos cambios de 0 a 1 y viceversa, si no tuvieras el retardo es probable que hiciera cosas raras.

Si puedes, pruébalo y ya nos contarás.
Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Ayuda con pulsadores
« Respuesta #9 en: 31 de Marzo de 2004, 05:41:00 »
Pablo, podrías aparecer y decir como te ha ido.

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Ayuda con pulsadores
« Respuesta #10 en: 01 de Abril de 2004, 14:43:00 »
Hola aca estoy perdon por la demora.

Se me rompio el rigido y perdi casi todo.
Probe el primer ejemplor que me paso pocher y funciona perfecto.
No lo probe con varios pulsadores pero con uno funciona bien.
No le puse mas que 5v en la entrada con una resistencia de 10k y el pulsador a masa directo a la entrada.

Saludos.
Pablo


 

anything