Zdeněk Krejčí

Zdeněk Krejčí

Stránky na téma programování v C++
*************************************************************************
Knihovna Menu Atmega16
Tato knihovna složí k vytvoření menu + submenu na základě několika parametrů (popis a příklad níže).Dále parametry k určení jaká položka bude mýt (pokud vůbec) submenu nebo další program pro spuštění.
Knihovna též funkcemi do_focuse_item(x) zobrazuje u jednotlivých položek označení * pokud není rozbalitelná -> pokud je a nebo obsahuje další podprogram.Tím pádem incrementováním x "do_focuse_item(x)" se pohybuje označení po daných položkách a samozřejmě za sebou maže předchozí označení.
Pozice označení se rovná konci délky označené položky + 3 mýsta.
Tato knihovna je nastavená pro používání knihovny lcd_4 nebo lcd_8


Pro vytvoření menu je zapotřebí:
1) Nastavit do Menu manager atkuální menu(jako kdyby jsme už měli zobrazené naše hlavní menu) abyMenu Manager věděl kde začít.Toto uloží do mm.current_menu = 1;
2) Nastavit do Menu manager jestli je to poprvé co se Menu bude zobrazovat H nebo ne L do mm.first_time = 1;.

Funkce Create_menu:
1) První parametr je menu_ID to je př.1 je instance 1 atd...
2) Jestli má daná instance hlavičku 1 nebo ne0 tj když ano první položka se bude zobrazovat uprostřed tj.bude brána jen jako nadpis a není možné k ní nastavit další funkci.
3) Seznam názvů položek do pole array and a správně   nastavit   do definice jeho velikosti [x] počet položek od nuly což bude parametr 3.
4) Použitím jiné číselné proměné poslat udaj o velikosti našeho array jako parametr 4
5) Použitím jiného číselného pole = array napsat seznam čísel o stejném počtu jako je seznam položek jestli je daná položka executable/rozbalitelná 1 nebo ne 0  a poslat parametrem 5.

Tento příklad vytvoří hlavní menu:
                  Menu (jako hlavička tj.bude se zobrazovat uprostřed displeje)
Nastaveni
Nastaveni zobrazeni
Konec

a sub menu:
Volt
Amper
Nastaveni
Nastavení22
zpet

Vytvoření hlavního menu

int size = 0;
Seznam položek
char  *main_main[6]={"Menu","Mereni","ah","Nastaveni","Nastaveni55","Konec"};
Určení lélky seznamu
size=sizeof(main_main)/2;
Nastavit které položky budou rozbalitelné
int   exabl_main[  6 ]={0,0,1,0,1,1};
Volání vlastní funkce
create_menu(1 ,1 ,main_main,size,exabl_main);

Vytvoření sub menu
Seznam položek
char *sub_menu_1[5]={"Volt","Amper","Nastaveni","Nastaveni22","Zpet"};
Určení lélky seznamu
size = sizeof(sub_menu_1)/2;
Nastavit které položky budou rozbalitelné
int exabl_1[5]={0,0,1,0,0};
Volání vlastní funkce
create_menu(2 ,0 ,sub_menu_1,size,exabl_1);

Potom pro jeho použití neboli zobrazení stačí:
Které menu chceme zobrazit
mm.current_menu = 1;
Jestli je to poprvé nebo ne
mm.first_time = 1;
Kterou položku chceme označit
do_focus_item(1);

Příklad pokud nastavíme:

mm.current_menu = 2;
mm.first_time = 1;
do_focus_item(2);

na displeji bude:
Volt
Amper     *
Nastaveni
Nastavení22
zpet


LCDmenu  2.81kB
Name
Email
Comment
Or visit this link or this one