Autor Tema: menú y LCD 2 x 16 duda al implementarlo  (Leído 2513 veces)

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

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
menú y LCD 2 x 16 duda al implementarlo
« en: 01 de Febrero de 2009, 04:19:36 »
Hola a todos  :)

Mi pregunta es si me pueden guiar en como desarrollar algo como esto:


Ya he probado otros ejemplos que hay en el foro , pero ninguno apunta a lo que yo quiero realizar. Mi duda más concreta es como realiza el desplazamiento de la opción y luego ejecuta la opción seleccionada.


Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #1 en: 01 de Febrero de 2009, 05:08:10 »
Hey pana para que hacer dos temas de lo mismo?

Ayudanos a mantener el orden!

--------------------------------------------------------


Yo no he realizado menu en 2x16 , pero si en uno de 128x64 grafico.

Utilizo los switch-case.

Asi que inicio mi menu en 0.

y el apuntador lo mando =
Digo apuntador a la rayita o tipo viñeta que marca la opcion.

- opcion0
  opcion1
  opcion2

ENtonces Estoy en cero y reviso si Indice1 y boton aceptar =1 , Opcion = 1 -Ejecutar 1
Si indice 2 y boton aceptar =1 , Opcion = 2 - Ejecutar 2

Y limitar el indice

indice <=2 && indice >=1

Asi tendras de 0-2   tres opciones en tu menu.

Espero haberme explicado.

Saludos!

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #2 en: 01 de Febrero de 2009, 05:15:05 »
perdón lo que pasa es que se me tildó internet y postee 2 veces por error. Prometo cuidar el orden la proxima  :mrgreen:

Por lo que vos me decís mi problema es con el display de 2 x 16, pero ya estoy pensando en la solución. Vi unos archivos en asm que me descargué de la red y me surjieron algunas ideas  :-/.

Acá te dejo algo de lo que me sirvió.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #3 en: 01 de Febrero de 2009, 05:28:09 »
Ok pana!

Haberlo dicho que es en ASM  xD :D

Bueno, tiene tiempo que no lo práctico pero tratemos de aclarar por lo menos como yo lo haria.

Creo una variable con el estado del apuntador , ya sea un circulo , un cuadrito , un guion.

de inicio la llamare Indice.

entonces INdice = 0

Despliewgas tu menu

 -Op0 ;    (indice 0)
  Op1 ;   ( Indice 1)
  Op2;    (Indice 2);

Pintas el indice por DEfaul en la 0 , pues es donde inicias.

Ahora Revisas si se presiono el BOton SUbir , Bajar o Aceptar.

Si presionas subir Aumentamos en 1 la Variable Indice.
Si presionamos Bajar DEcrementamos en 1 la variable Indice.

Si estamos en indice 0 no podemos ir menos de 0 (en este caso)
Si estamos en indice 2 no podemos ir más de 2(en este caso).


Si¨Presionas subir y la variable  indice es menor que 2 indice = +1;
Si al presionar subir INdice=2 , Inidice no será afetado.
Si al presionar bajar INdice=0; Indice no será afectado.
Si al Presionar bajar Indice mayor que 0 (es decir sea Indice 2 ó 1, Indice = -1;

Despues de hacer esto yo llamaria una pequeña subrutina para pintar y borrar el apuntador , se guion cuadro circulo , lo que decidas de acuerdo a una tablita.

Asi que si INdice = 0;

Guion0=1;
Guion1=0;
Guioon2=0;

Si fuera INdice =1;

Guion0=0;
Guion1=1;
Guion2=2;

Y lo correspondiente para el 2.

Ya que tienes esto ahora revisas si has PResionado el boton ACeptar, Si es Asi ejecutar lo debido.
Si no ha spresionado el boton Aceptar puedes seguir navegando en ese menu.


Espero poder ayudarte!

Saludos!

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #4 en: 01 de Febrero de 2009, 05:41:58 »
Bueno muchas gracias ya mañana voy a ver lo que me propones. El desarrollo lo quiero hacer en C de CCS , el ejemplo que puse anteriormente es a modo ilustrativo de lo quiero hacer. Pero lo que me acabás de aclarar me va a ayudar a hacer lo quiero,  Gracias por la ayuda cualquier duda te digo.  :mrgreen:

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #5 en: 01 de Febrero de 2009, 17:22:54 »
La verdad que se me a puesto más dificil de lo que pensaba, no logro comprender como es que hago para que me aparezca el mensaje según presionamos la tecla up o down.

Me estoy guiando con el código del siguiente link: http://www.todopic.com.ar/foros/index.php?topic=2251.0

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #6 en: 01 de Febrero de 2009, 18:28:43 »
Yo para manejar menus con un display lo hago con una variable que me indique que menu estoy mostrando o se va a mostrar, entonces al presionar abajo o arriba modifico esta variable y llamo a una funcion switch que me muestra el sector del menu que se eligio. Tambien sirve para ejecutar una accion, ya que si se lo selecciona, con la misma variable y otra funcion switch se puede ejecutar la accion.-
No contesto mensajes privados, las consultas en el foro

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #7 en: 01 de Febrero de 2009, 19:47:35 »
La idea es la siguiente:
Código: C
  1. void Menu(int a){
  2.    switch(ControlMenu){
  3.       case 1:
  4.          lcd_putc("\f");
  5.          lcd_putc("Opcion 1");
  6.       break;
  7.       case 2:
  8.          lcd_putc("\f");
  9.          lcd_putc("Opcion 2");
  10.       break;
  11.       case 3:
  12.          lcd_putc("\f");
  13.          lcd_putc("Opcion 3");
  14.       break;
  15.       }
  16. }
  17.  
  18. void Ejecuto(int a){
  19.    switch(ControlMenu){
  20.       case 1:
  21.       //...
  22.          lcd_putc("\f");
  23.          lcd_putc("Valor Analogico pin_A0 = 10");//Por Ejemplo.-
  24.       break;
  25.       case 2:
  26.       //...
  27.          lcd_putc("\f");
  28.          lcd_putc("Valor Analogico pin_A1 = 210");//Por Ejemplo.-
  29.       break;
  30.       case 3:
  31.       //...
  32.          lcd_putc("\f");
  33.          lcd_putc("Valor Analogico pin_A3 = 134");//Por Ejemplo.-
  34.       break;
  35.       }
  36. }
  37.  
  38.  
  39. void main()
  40. {
  41.    while(true){
  42.       if(Arriba==1){
  43.          --ControlMenu;
  44.          Menu(ControlMenu);// Actualizo Visualizacion del Menu
  45.       }else if(Abajo==1){
  46.          ++ControlMenu;
  47.          Menu(ControlMenu);
  48.       }else if(Enter==1){
  49.          Ejecuto(ControlMenu);// Ejecuto accion.-
  50.       }else if (Escape){
  51.          Menu(ControlMenu);// Se vulve a visualizar el menu.-
  52.       }
  53.    }

También debes agregarle un control a ControlMenu, así cuando llega a cero cargarle un 3, y cuando supera 3 cargarle un 1, de esa manera queda cíclico. Espero que sirva!!!
No contesto mensajes privados, las consultas en el foro

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #8 en: 01 de Febrero de 2009, 21:43:24 »
Gracias Suky :-/ :-/ :-/ Este código me orientó muchisimo, ahora voy a ver que sale  :-)

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: menú y LCD 2 x 16 duda al implementarlo
« Respuesta #9 en: 02 de Febrero de 2009, 05:33:52 »
Hola a todos  :-/

Gracias a la info que me dieron pude hacer que me funcionara el proyecto y lo hice con interrupciones  8). El tema es que ahora me falta incluir un mensaje junto con la opción , es decir por ejemp:

cuando en el lcd me marca

primera linea:             MENU
segunda linea:        opcion: 1 - (accion a realizar) ..... no se si me explico.

Bueno acá les dejo un avanze de lo que estooy haciendo. Cualquier cosa después les pregunto alguna duda sobre lo del mensaje con la opción que todavía no me queda claro.

 


 

anything