<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=9774&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-20T16:09:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9774&amp;mode</id>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-12-20T16:09:15+01:00</updated>
<published>2014-12-20T16:09:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109680#p109680</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109680#p109680"/>
<title type="html"><![CDATA[Re: Menu na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109680#p109680"><![CDATA[
Dziękuję chłopaki ! <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Teraz działa jak powinno ! <br /><br />Zdrowych i Wesołych świąt życzę !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 20 gru 2014, o 16:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[majster]]></name></author>
<updated>2014-12-20T14:18:42+01:00</updated>
<published>2014-12-20T14:18:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109655#p109655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109655#p109655"/>
<title type="html"><![CDATA[Re: Menu na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109655#p109655"><![CDATA[
Kolego przy kazdej przewijce menu jak i wejsciu czy tez wyjsciu z menu powinienes czyscic lcd co prawda funkcja lcd cls zajmuje wiecejbczasu wiec polecam zastapic te funkcje wpisaniem czystych znakow tj spacji.<br /><br />Namazane ze smarta.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1628">majster</a> — 20 gru 2014, o 14:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-12-20T11:35:07+01:00</updated>
<published>2014-12-20T11:35:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109622#p109622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109622#p109622"/>
<title type="html"><![CDATA[Re: Menu na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109622#p109622"><![CDATA[
Moze to nie bedzie zbyt pomocne ale tak na szybko to nakladasz na siebie warstwy ktore wyswietlasz i wg mnie to dlatego... No ale ze to na szybko pisane moge sie mylic <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 20 gru 2014, o 11:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2014-12-20T11:11:52+01:00</updated>
<published>2014-12-20T11:11:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109620#p109620</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109620#p109620"/>
<title type="html"><![CDATA[Menu na LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9774&amp;p=109620#p109620"><![CDATA[
Witam, <br /><br />Jako iż nie chcę rozgrzebywać starego tematu : <br /><a href="http://forum.atnel.pl/topic2226.html"  class="postlink">http://forum.atnel.pl/topic2226.html</a><br /><br />Postanowiłem założyć nowy temat z nowym pytaniem ;D <br />Chciałem przetestować menu wykonane przez kolegi Lukasz89 z wykluczeniem enkodera i wstawieniu dwóch przycisków, oraz dodaniu kilku linijek menu. <br />Wszystko jest okej, poza ... no właśnie zobaczcie sami : <br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />Jak zrobić aby menu było czytelniejsze??<br /> <br />menu.c<br />[syntax=c]/*<br />     * menu.c<br />     *<br />     *  Created on: 2012-07-24<br />     *      Author: Łukasz<br />     */<br /><br />    #include &quot;menu.h&quot;<br />    #include &quot;../lcd/lcd44780.h&quot;  //lib Mirka do LCD<br />    #include &quot;../klaw_enco/klaw.h&quot;<br /><br />   // napisy na LCD elemntów menu<br />tmenu tmenu1&#91;&#93; = &quot;menu1&quot;;<br />tmenu tmenu2&#91;&#93; = &quot;menu2&quot;;<br />tmenu tmenu3&#91;&#93; = &quot;menu3&quot;;<br />tmenu tmenu4&#91;&#93; = &quot;menu4&quot;;<br />tmenu tmenu5&#91;&#93; = &quot;menu5&quot;;<br />tmenu tsub11&#91;&#93; = &quot;podmenu1&quot;;<br />tmenu tsub12&#91;&#93; = &quot;podmenu2&quot;;<br />tmenu tsub41&#91;&#93; = &quot;podmenu41&quot;;<br />tmenu tsub51&#91;&#93; = &quot;podmenu51&quot;;<br />tmenu tmenu21&#91;&#93; =&quot;pojedyncze sub&quot;;<br /><br /><br />//deficja elemntów menu<br />menu stop;<br /><br />menu menu1;<br />menu submenu11;<br />menu submenu12;<br /><br />menu menu2;<br />menu submenu2;<br />menu menu3;<br />menu menu4;<br />menu submenu41;<br />menu menu5;<br />menu submenu51;<br />menu stop = {0,&amp;menu1,&amp;menu1,&amp;stop};<br /><br />menu menu1 = {tmenu1, &amp;submenu11, &amp;menu2, &amp;stop};<br />menu submenu11 = {tsub11, &amp;submenu11, &amp;submenu12, &amp;menu1};<br />menu submenu12= {tsub12, &amp;submenu12 ,&amp;submenu11, &amp;menu1};<br /><br />menu menu2={tmenu2, &amp;submenu2, &amp;menu3, &amp;stop};<br />menu submenu2={tmenu21, &amp;submenu2, &amp;submenu2, &amp;menu2};<br /><br />menu menu3 = {tmenu3, &amp;menu3, &amp;menu4, &amp;stop};<br /><br />menu menu4 = {tmenu4, &amp;submenu41, &amp;menu5, &amp;stop};<br />menu submenu41= {tsub41, &amp;submenu41, &amp;submenu41, &amp;menu4};<br /><br />menu menu5 = {tmenu5, &amp;submenu51, &amp;menu1, &amp;stop};<br />menu submenu51= {tsub51, &amp;submenu51, &amp;submenu51, &amp;menu5};<br /><br /><br />uint8_t tab1&#91;&#93;={ 0x08, 0x0C, 0x0E, 0x0F, 0x0E, 0x0C, 0x08, 0x00,};<br /><br />menu *menu_flag=0;<br />menu *pozycja = &amp;stop;<br /><br />    static void (*ekran_glowny)();<br />    void register_ekran_glowny (void (*callback)()){<br />            ekran_glowny=callback;<br />    }<br /><br /><br />            void next(void)<br />            {pozycja = pozycja-&gt;next;<br />            }<br /><br />            void prev(void)<br />            {<br />            menu*i;<br />            i=(pozycja-&gt;parent)-&gt;sub;<br />            if(pozycja != &amp;stop){<br />            while(i-&gt;next != pozycja)i=i-&gt;next;}<br />            pozycja=i;<br /><br />            }<br /><br />            void enter(void)<br />            {<br />                    if(pozycja==pozycja-&gt;sub) menu_flag=pozycja;<br />                    else pozycja = pozycja-&gt;sub;<br />            }<br /><br />            void back(void)<br />            {pozycja=pozycja-&gt;parent;<br />            }<br /><br />            void lcd_clear(void)<br />            {uint8_t i,j;<br />            for(j=0;j&lt;=LCD_COLS;j++){<br />            for(i=0;i&lt;=LCD_ROWS;i++){<br />                    lcd_locate(j,i);lcd_str(&quot; &quot;);<br />            }<br />            }}<br /><br /><br /><br />    void menu_lcd(void)<br />    { static uint16_t z=0;<br />    if(pozycja!=&amp;stop &amp;&amp; menu_flag!=pozycja)<br />    { //wyświetlaj gdy jest w menu i nie w funkcji wyołwanej przez menu<br />            lcd_defchar( 0x80, tab1);<br />            static uint16_t a=0;<br />            menu *i, *j; //lokalne pozycje<br />            int8_t b=0,c=1;<br />            if(a!=(uint16_t)pozycja)lcd_clear();<br />            i=(pozycja-&gt;parent)-&gt;sub;<br />            j=(pozycja-&gt;parent)-&gt;sub;<br /><br />            while(i!=pozycja) // wyznaczanie liczby pozycji mna obecnym poziomie menu<br />            {i=i-&gt;next;<br />            c++;<br />            }<br />            i=(pozycja-&gt;parent)-&gt;sub;<br />            if((c-LCD_COLS)&gt;0){ //wyświetlanie menu gdy pozycji jest więcej niż wierszy LCD<br />                    for(b=-(c-LCD_COLS);b&lt;=(LCD_COLS-1);b++){<br />                            lcd_locate(b,1);if(b&gt;=0)lcd_str_P(i-&gt;name);<br />                            if(i==pozycja){lcd_locate(b,0);<br />                            lcd_str(&quot;\x80&quot;); }<br />                            i=i-&gt;next;<br />                            }<br />            }<br />            else{ // wyświetlanie gdy pozycji menu jest mniej lub tyle samo co wierszy LCD<br />            for(b=0;b&lt;=(LCD_COLS-1);b++){<br />                    lcd_locate(b,1);lcd_str_P(i-&gt;name);<br />                    if(i==pozycja){lcd_locate(b,0);<br />                    lcd_str(&quot;\x80&quot;);}<br />                    if(i-&gt;next==j)break;<br />                    i=i-&gt;next;<br />                    }<br />            }<br /><br />    //      b=0;c=1;<br /><br />            a=(uint16_t)pozycja;z=0;<br />    }<br />    else if(pozycja==&amp;stop) {//wyświetlanie ekranu głównego - to co jest natywnie na lcd gdy nie jesturuchomione menu<br />                    if(z==0)lcd_clear();<br />                    if (ekran_glowny)ekran_glowny();<br />                    z++;<br />    }<br />    //koniec funkcji menu_lcd<br />    }[/syntax]<br />menu.h<br />[syntax=c]/* menu.h<br />     *<br />     *  Created on: 2012-07-24<br />     *      Author: Łukasz<br />     */<br /><br />    #ifndef MENU_H_<br />    #define MENU_H_<br />    #include &lt;avr/pgmspace.h&gt;<br /><br />    typedef char PROGMEM tmenu;<br />    typedef struct menu menu;<br />    struct menu<br />    {// struktura reazlaiujaca menu<br />    tmenu *name;//napis wyświetlany na lcd<br />     menu *sub;//wskaźnik do submenu<br />     menu *next;//wskaźnik do następnego manu na tym samym poziomie<br />     menu *parent;//wskaźnik do manu nadrzędnego<br />    };<br />    //deklaracja elemntów menu<br />    extern menu stop;<br /><br />    extern menu menu1;<br />    extern menu submenu11;<br />    extern menu submenu12;<br /><br />    extern menu menu2;<br />    extern menu submenu2;<br />    extern menu menu3;<br />    extern menu menu4;<br />    extern menu submenu41;<br />    extern menu menu5;<br />    extern menu submenu51;<br /><br />    extern menu *menu_flag;<br />    extern menu *pozycja;<br /><br /><br />    void next(void);  //funkcje do pouszania się po menu<br />    void prev(void);<br />    void enter(void);<br />    void back(void);<br /><br />    void lcd_clear(void); //czyszczeni całego ekranu<br />    void menu_lcd(void);  // wyswietlanie menu<br /><br /><br />    void register_ekran_glowny (void (*callback)()); //rejestracja ekranu głównego<br /><br /><br /><br />    #endif /* MENU_H_ */[/syntax]<br />main.c<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2013-01-27<br /> *      Author: Łukasz<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;klaw_enco/klaw.h&quot;<br />#include &quot;menu/menu.h&quot;<br />#include &quot;lcd/lcd44780.h&quot;<br /><br />void display_menu_off(void);<br />int main(void)<br />{//rejestracja ekranu głównego<br />register_ekran_glowny(display_menu_off);<br /><br />lcd_init(); //*<br /><br />DDRD |= 0x00;<br />PORTD |= 0x0F;<br /><br />start_klaw();<br /><br />pozycja = &amp;stop; //* pozycja początkowa<br />menu_flag=0;//*<br />lcd_cls();<br />sei();<br />while(1)<br />{<br /><br />if(menu_flag!=pozycja){ // * &quot;chodzenie&quot; po menu<br /><br />if(stan_klawiszy &amp; 0b00000100)// Dół<br />{<br />next();<br />stan_klawiszy= 0;<br />}<br /><br />if(stan_klawiszy &amp; 0b00000001)// Góra<br />{<br />prev();<br />stan_klawiszy= 0;<br />}<br /><br />if(stan_klawiszy &amp; 0b00000010)//Enter<br />{<br />enter();<br />stan_klawiszy= 0;<br />}<br /><br />if(stan_klawiszy &amp; 0b00001000)// Back<br />{<br />back();<br />stan_klawiszy= 0;<br />}<br />}<br /><br /><br />//przykaładowe wywołanie funkcji przez menu<br />if(menu_flag==&amp;submenu2){menu_flag=0;/*wywołanie funkcji */}  //*<br />if(menu_flag==&amp;submenu11)menu_flag=0;//*<br />if(menu_flag==&amp;submenu12)menu_flag=0;//*<br />if(menu_flag==&amp;menu3)menu_flag=0;//*<br /><br />menu_lcd(); //wyświetlanie menu<br />}//koniec while //*<br />}<br />void display_menu_off(){<br />lcd_locate(0,0); lcd_str(&quot;ekran glowny&quot;);<br />lcd_locate(1,0); lcd_str(&quot; ###MENU OFF### &quot;);<br /><br /><br />}[/syntax]<br />klaw.c<br />[syntax=c]/*<br /> * klaw.c<br /> *<br /> *  Created on: 2012-07-22<br /> *      Author: Łukasz<br /> *      obsługa encodera - SunRiver<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;klaw.h&quot;<br /><br /><br />volatile uint8_t stan_klawiszy =0;<br /><br />ISR(TIMER0_COMP_vect)<br />{//obsługa przerwania<br />static uint8_t stan_stary=0, stan_nowy, licz=0;<br /><br />stan_nowy = odczyt;<br />if(!(stan_nowy))licz=0;<br />if (stan_nowy==stan_stary) {<br />if(licz==4){stan_klawiszy = stan_nowy; licz-=255;}<br />licz++;<br />  }<br />stan_stary=stan_nowy;<br />  }<br /><br />void start_klaw(void){<br />TCCR0 |= 1&lt;&lt;WGM01;<br />TCCR0 |= (1&lt;&lt;CS00) | (1&lt;&lt;CS02);<br />OCR0=15;<br />TIMSK |= 1&lt;&lt;OCIE0;<br />}[/syntax]<br />klaw.h<br />[syntax=c]/*<br /> * klaw.h<br /> *obsługa kalwiatury oparta o przerwainia Timera0<br /> *dzięki której otrzymujemu zmienną globalną volatile typu unit8 stan_klawiszy<br /> *<br /> *<br /> *  Created on: 2012-07-22<br /> *      Author: Łukasz<br /> */<br /><br />#ifndef KLAW_H_<br />#define KLAW_H_<br /><br />//tutaj deinujemy odczytywane piny klawiatury przyporządkowująć poszególne<br />// piny procesora do bitów zmiennej 8bitowej<br /><br />#define odczyt (~PIND &amp; 1&lt;&lt;PD0)|(~PIND &amp; 1&lt;&lt;PD1)|(~PIND &amp; 1&lt;&lt;PD2)|(~PIND &amp; 1&lt;&lt;PD3)<br /><br />extern volatile uint8_t stan_klawiszy;<br /><br />void start_klaw(void);<br /><br />#endif /* KLAW_H_ */[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 20 gru 2014, o 11:11</p><hr />
]]></content>
</entry>
</feed>