Autor Tema: Como se puede selecionar una opcion de un menu usando un solo selector?  (Leído 1484 veces)

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

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Hola, estoy tratando de hacer un selector de menus usando un solo selector o pin de entrda en este cado el RA2, el modo de funcionamiento es el siguiente, si presiona una vez RA2 debe de ejecutarse la Option_0(), si presiono RA2 dos veces debe de ejecutarse Option_1() y asi sucesivamente, no puedo usar interrupciones.
Alguien me podria dar una sugerencia de como hacer esto?
Aqui dejo mi codigo aunque no sirve.. :5]

Código: [Seleccionar]
#define PULSADOR PIN_A2
int Modo;
.
.
.

while(1){

          if (!input(PULSADOR)){;
             Modo = 0;
             if (!input(PULSADOR)){;
                Modo = 1;
                if (!input(PULSADOR));
                    Modo = 2;
                 }
              }
           }
          if (Modo == 0)
              Option_0();
          if (Modo == 1)
              Option_1();
          if (Modo == 2)
             Option_2();
}

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Como se puede selecionar una opcion de un menu usando un solo selector?
« Respuesta #1 en: 22 de Enero de 2010, 13:45:02 »
Hola medusa.

Creo que es medio complicado hacerlo asi.

Si pensas detectar la cantidad de pulsaciones sobre un solo pulsador, tenes que lograr que el algoritmo contemple ciertas pautas y limites.

Por ejemplo, luego de la primer pulsacion ¿cuánto tiempo debe esperar a  una posible segunda, antes de considerar que la intención ha sido de pulsarlo sólo una vez? lo mísmo con una tercera pulsación.

Luego de cada pulsación, deberías esperar cierto tiempo a una posible próxima pulsación. Si no ocurre en dicho tiempo, considerás que el usuario quiso presionar el pulsador la cantidad de veces que llevás contados.

P.D. Te faltan algoritmos de antirebote ahi también.

¿Se entendió?


"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 bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Como se puede selecionar una opcion de un menu usando un solo selector?
« Respuesta #2 en: 22 de Enero de 2010, 15:49:39 »
Puedes hacer que el microcontrolador pase por un retardo de cada 1ms 500 veces, si se han producido los 500 retardos entonces tomar la opcion, mientras no se hayan producido los 500 retardos entonces esperar opcion.

Código: [Seleccionar]
while(1){

          if (!input(PULSADOR)){;
            delay_ms(1);
            retardos++;
          else
            opcion++;
            delay_ms(50);
          if(retardos>=500)break;
}
switch(opcion){
case 1: ...
.
.

Si gustas puedes variar el tiempo del retardo y tambien puedes agregar algun codigo de antirrebote.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Como se puede selecionar una opcion de un menu usando un solo selector?
« Respuesta #3 en: 22 de Enero de 2010, 16:16:57 »
Aparte de la implementación de los rebotes, yo lo haría así:

Código: [Seleccionar]
#define PULSADOR PIN_A2
int Modo;
.
.

Modo = 0;

while(1){

          if  !input(PULSADOR)  Modo++;

          switch(Modo)
             {
             case 0:    Option_0(); break;
             case 1:    Option_1(); break;
             case 2:    Option_2(); break;
             case 3:    Modo = 0; break;
             }

}

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Como se puede selecionar una opcion de un menu usando un solo selector?
« Respuesta #4 en: 22 de Enero de 2010, 19:04:45 »
Ese algoritmo tuyo tiene un problema, Jesús.

Cualquier opción del menú que necesite más de un click habrá pasado necesariamente por la ejecución de las anteriores.

Creo que habría que añadir un contador de tiempo para saber cuándo hemos elegido sólo un click, o dos, o tres...


 

anything