En un proyecto que desarrollo necesito implementar un menú en una pantalla GLCD 128x64, buscando por la red encontré este excelente proyecto (http://www.reifel.org/PICUserInterface/) en el que utilizan un display Nokia 6100. A partir de esa librería, me dedique a entender como trabaja y tomando su estructura re-escribí la librería para un GLCD monocromático :( :D :D
Para crear un elemento del submenú tenemos la siguiente estructura:
typedef struct{
char TipoMenu;
rom char *TextoMenu;
rom char *PtrMenuSeleccion;
}MENU;
Un ejemplo en la creación de un Submenú:
Creamos Menú principal:
- El primer elemento direcciona al volver atrás en el submenú:
- MENU_MAIN o SUBMENU_ANTERIOR: Regresa a pantalla principal o a un submenú anterior.
- vInicializaSistemaDisplay: Función a ejecutar al regresar atrás.-
- Segundo elemento: Primer ítem del menú a crear:
- MENU_SUBMENU: Indica que al seleccionar este se debe crear otro submenú.
- "Sub Menu": Texto del ítem.-
- SubMenu1: Submenú a crear y dibujar.-
- Tercer elemento: Segundo ítem del menú a crear:
- MENU_COMANDO: Indica que al ejecutar tal ítem se ejecuta una función.-
- "Control Motor": Texto del ítem.
- vControlMotor: Función que se ejecuta, puede generar una pantalla con mensaje, barra deslizante o nada.-
- Sexto elemento: Elemento que indica finalización del menú.-
MENU MenuPrincipal[]={
{MENU_MAIN,"",vInicializaSistemaDisplay},
{MENU_SUBMENU,"Sub Menu",SubMenu1},
{MENU_COMANDO,"Control Motor",vControlMotor},
{MENU_COMANDO,"Backlight",vControlBack},
{MENU_COMANDO,"About",vMuestraAbout},
{MENU_FIN,"",0}
};
El programa está controlado por medio de punteros a la memoria de programa. Por ejemplo en el bucle del programa principal (main), ejecuta una función (vEjecutaFuncion(Evento)) apuntada por el puntero *FuncionActualEjecucion, el cual direcciona las distintas funciones que trabajan con los eventos en las distintas pantallas presentadas en el GLCD.
Por ejemplo al dibujar la pantalla principal cargamos en puntero la función vEventosPantallaPrincipal, la cual atenderá los eventos, en este caso solo se espera a que se pulse el botón inferior derecho para acceder al submenú.
(http://img130.imageshack.us/img130/3568/imagen0230.jpg)
Al clickear en menú ejecutamos la función vSeleccionMenu(MenuPrincipal,1) que dibujará el Menú seleccionado y volverá a direccionar el puntero a la función vEventosSubMenu, la cual atiende los eventos que ocurran en el menú dibujado en pantalla. Es mas o menos un resumen de cómo trabaja el código.
(http://img714.imageshack.us/img714/5725/imagen0229.jpg)
Dentro de las opciones de menús del tipo comando tenemos:
Visualizar mensaje simple:
(http://img130.imageshack.us/img130/3950/imagen0240.jpg)
Visualizar opción a ejecutar:
(http://img96.imageshack.us/img96/9774/imagen0237y.jpg)
Visualizar deslizador para modificar una variable:
(http://img96.imageshack.us/img96/222/imagen0232.jpg)
Visualizar una variable:
(http://img690.imageshack.us/img690/3632/imagen0242.jpg)
Vídeo de muestra: (El video no muestra la ultima opción de menú, lo desarrolle después :mrgreen: )
Se adjunta proyecto con el ejemplo mostrado. Al ser flexible, se pueden ir agregando otras opciones de menús.
Saludos!
Bueno, ahora que tengo un TFT con Touch Screen estoy actualizando, en realidad migrando y mejorando la librería :rolleyes: Algunas imagenes:
(http://img403.imageshack.us/img403/3394/imagen1100k.jpg)(http://img152.imageshack.us/img152/5886/imagen1101.jpg)
(http://img340.imageshack.us/img340/6332/imagen1105j.jpg)(http://img337.imageshack.us/img337/4314/imagen1103b.jpg)
(http://img375.imageshack.us/img375/5779/imagen1104.jpg)
Con 2 opciones de visualización de items, iconos o botones :-)
Saludos!
PD:Pero todavía no he implementado los acentos :oops: :D :D :D :D
chango suky!, te has ido a la REPu$·%&/$%&·a madre que lo pario! sabelo.... muy lejos :D
impresionante trabajo . groso!
p.D. como es el pinout de ese LCD? y fisicamente como es el cable de datos?
Hola! Una foto:
(http://mbed.org/media/uploads/Suky/lcd_tft_.png)
Tiene 16 pines para datos, y después los conocidos RS, RW, CS, etc... Aquí (http://mbed.org/cookbook/TFT-LCD-with-HX8347) una librería en C++ para el mbed y un esquema de como se conecta:
(http://mbed.org/media/uploads/Suky/lcd_tft.png)
Saludos!
En un proyecto que desarrollo necesito implementar un menú en una pantalla GLCD 128x64, buscando por la red encontré este excelente proyecto (http://www.reifel.org/PICUserInterface/) en el que utilizan un display Nokia 6100. A partir de esa librería, me dedique a entender como trabaja y tomando su estructura re-escribí la librería para un GLCD monocromático :( :D :D
Para crear un elemento del submenú tenemos la siguiente estructura:
typedef struct{
char TipoMenu;
rom char *TextoMenu;
rom char *PtrMenuSeleccion;
}MENU;
Un ejemplo en la creación de un Submenú:
Creamos Menú principal:
- El primer elemento direcciona al volver atrás en el submenú:
- MENU_MAIN o SUBMENU_ANTERIOR: Regresa a pantalla principal o a un submenú anterior.
- vInicializaSistemaDisplay: Función a ejecutar al regresar atrás.-
- Segundo elemento: Primer ítem del menú a crear:
- MENU_SUBMENU: Indica que al seleccionar este se debe crear otro submenú.
- "Sub Menu": Texto del ítem.-
- SubMenu1: Submenú a crear y dibujar.-
- Tercer elemento: Segundo ítem del menú a crear:
- MENU_COMANDO: Indica que al ejecutar tal ítem se ejecuta una función.-
- "Control Motor": Texto del ítem.
- vControlMotor: Función que se ejecuta, puede generar una pantalla con mensaje, barra deslizante o nada.-
- Sexto elemento: Elemento que indica finalización del menú.-
MENU MenuPrincipal[]={
{MENU_MAIN,"",vInicializaSistemaDisplay},
{MENU_SUBMENU,"Sub Menu",SubMenu1},
{MENU_COMANDO,"Control Motor",vControlMotor},
{MENU_COMANDO,"Backlight",vControlBack},
{MENU_COMANDO,"About",vMuestraAbout},
{MENU_FIN,"",0}
};
El programa está controlado por medio de punteros a la memoria de programa. Por ejemplo en el bucle del programa principal (main), ejecuta una función (vEjecutaFuncion(Evento)) apuntada por el puntero *FuncionActualEjecucion, el cual direcciona las distintas funciones que trabajan con los eventos en las distintas pantallas presentadas en el GLCD.
Por ejemplo al dibujar la pantalla principal cargamos en puntero la función vEventosPantallaPrincipal, la cual atenderá los eventos, en este caso solo se espera a que se pulse el botón inferior derecho para acceder al submenú.
(http://img130.imageshack.us/img130/3568/imagen0230.jpg)
Al clickear en menú ejecutamos la función vSeleccionMenu(MenuPrincipal,1) que dibujará el Menú seleccionado y volverá a direccionar el puntero a la función vEventosSubMenu, la cual atiende los eventos que ocurran en el menú dibujado en pantalla. Es mas o menos un resumen de cómo trabaja el código.
(http://img714.imageshack.us/img714/5725/imagen0229.jpg)
Dentro de las opciones de menús del tipo comando tenemos:
Visualizar mensaje simple:
(http://img130.imageshack.us/img130/3950/imagen0240.jpg)
Visualizar opción a ejecutar:
(http://img96.imageshack.us/img96/9774/imagen0237y.jpg)
Visualizar deslizador para modificar una variable:
(http://img96.imageshack.us/img96/222/imagen0232.jpg)
Visualizar una variable:
(http://img690.imageshack.us/img690/3632/imagen0242.jpg)
Vídeo de muestra: (El video no muestra la ultima opción de menú, lo desarrolle después :mrgreen: )
Se adjunta proyecto con el ejemplo mostrado. Al ser flexible, se pueden ir agregando otras opciones de menús.
Saludos!
Suky Saludos,
Cual es la referencia de la GLCD que implementaste? la monocromatica que usas para la libreria que creaste.
Gracias