<?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=58&amp;t=18798&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-07-26T08:23:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=18798&amp;mode</id>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-26T08:23:15+01:00</updated>
<published>2017-07-26T08:23:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192613#p192613</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192613#p192613"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192613#p192613"><![CDATA[
Jak czytam BB to czaję wskaźniki, Mirek to wyłożył łopatologicznie ale dzięki temu bardzo zrozumiale, jeżeli chodzi o to aby je zastosować  to już gorzej jeszcze nie czuję do końca. Dzięki za pomoc poeksperymentuje z tym kodem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 26 lip 2017, o 08:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-26T08:14:26+01:00</updated>
<published>2017-07-26T08:14:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192612#p192612</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192612#p192612"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192612#p192612"><![CDATA[
Szczerze mówiąc to już nie pamiętam, bo dość dawno to pisałem, a bez tego znaczka coś nie działało po mojej myśli <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=1922">SylwekK</a> — 26 lip 2017, o 08:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-26T07:46:13+01:00</updated>
<published>2017-07-26T07:46:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192610#p192610</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192610#p192610"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192610#p192610"><![CDATA[
Oczywiście mam BB, tylko dlaczego do funkcji przekazujemy zmienną poprzez jej adres a nie bezpośredni przez jej nazwę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 26 lip 2017, o 07:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-26T07:22:54+01:00</updated>
<published>2017-07-26T07:22:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192609#p192609</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192609#p192609"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192609#p192609"><![CDATA[
Co do pierwszego pytania to chodzi o przekazanie adresu zmiennej (w tym miejscu namawiam do zaopatrzenia się w BB gdzie wszystko jest ładnie opisane) natomiast edit oczywiście może być samodzielny o ile nie wykorzystujesz go jeszcze w innych celach... Ja wykorzystuje, bo mam różne typy edycji w różnych miejscach <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=1922">SylwekK</a> — 26 lip 2017, o 07:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-26T06:56:11+01:00</updated>
<published>2017-07-26T06:56:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192607#p192607</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192607#p192607"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192607#p192607"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Zrób sobie dodatkową funkcję, która będzie podczas edycji permanentnie wywoływana, w której będziesz czytał przyrost enkodera i w zależności od niej modyfikował zmienną. Funkcja powinna uwzględniać minimalną i maksymalną wartość modyfikowanej zmiennej aby nie wylecieć z zakresu jaki sobie wymyśliłeś.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 42 minutach ]</span></strong><br /><br />Przykład jak to robię u siebie:<br /><br />[syntax=c]case opcja_jakas:<br />      locate(0,0); lcdf(&quot;Modyfikuję :&quot;); lcd_int(zmienna);<br />      if(edit &amp; 1)  //flaga oznaczająca wejście do edycji<br />{<br />  xiw=zmienna<br />  modyfikuj(&amp;xiw, 0, 100, 5); //0-minimalna wartość, 100-maksymalna wartość, 5-jednostkowy przyrost (mnożnik)<br />  zmienna=xiw;<br />}<br />      break;[/syntax]<br /><br />bit pierwszy flagi &quot;edit&quot; togluję przyciskiem enkodera na początku obsługi menu. Pomyśl jak zbudować u siebie funkcję &quot;modyfikuj&quot;. Nie zagłębiałem się w Mirka obsługę enkodera to też nie wiem jak tam &quot;wyjście&quot; danych jest zrealizowane.<br />xiw to z kolei zmienna pomocnicza INT 16-bitowa. Dzięki temu mam załatwioną konwersję typów (różne zmienne modyfikuję) i łatwiejszą obsługę samej funkcji. Funkcja już sama zadba aby nie przekroczyć krytycznych parametrów i modyfikuje zmienną z zadanym mnożnikiem co w moim przypadku jest bardzo istotne.<br /></div><br /><br />Pomysł z napisaniem funkcji &quot;modyfikuj&quot; bardzo fajny bardzo poprawia czytelność kodu, mam 2 pytanka:<br /><br />[syntax=c]modyfikuj(&amp;xiw, 0, 100, 5)[/syntax]<br />- dlaczego przed xiw jest &amp;    ?<br />[syntax=c](edit &amp; 1)[/syntax]<br />- nie wystarczy w warunku sam edit ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 26 lip 2017, o 06:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-24T21:56:21+01:00</updated>
<published>2017-07-24T21:56:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192549#p192549</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192549#p192549"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192549#p192549"><![CDATA[
<div class="quotetitle">Marhef napisał(a):</div><div class="quotecontent"><br />A może w funkcji enkoderek zmieniaj wartość jakiejś zmiennej dodatkowej. A w funkcji main(), w zależności od wartości poz_menu, zwiększasz lub zmniejszasz odpowiednią zmienną.<br /></div><br />Dzięki tak właśnie zrobiłem i zadziałało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 24 lip 2017, o 21:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-24T11:12:24+01:00</updated>
<published>2017-07-24T11:12:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192507#p192507</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192507#p192507"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192507#p192507"><![CDATA[
Zrób sobie dodatkową funkcję, która będzie podczas edycji permanentnie wywoływana, w której będziesz czytał przyrost enkodera i w zależności od niej modyfikował zmienną. Funkcja powinna uwzględniać minimalną i maksymalną wartość modyfikowanej zmiennej aby nie wylecieć z zakresu jaki sobie wymyśliłeś.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 42 minutach ]</span></strong><br /><br />Przykład jak to robię u siebie:<br /><br />[syntax=c]case opcja_jakas:<br />      locate(0,0); lcdf(&quot;Modyfikuję :&quot;); lcd_int(zmienna);<br />      if(edit &amp; 1)  //flaga oznaczająca wejście do edycji<br />{<br />  xiw=zmienna<br />  modyfikuj(&amp;xiw, 0, 100, 5); //0-minimalna wartość, 100-maksymalna wartość, 5-jednostkowy przyrost (mnożnik)<br />  zmienna=xiw;<br />}<br />      break;[/syntax]<br /><br />bit pierwszy flagi &quot;edit&quot; togluję przyciskiem enkodera na początku obsługi menu. Pomyśl jak zbudować u siebie funkcję &quot;modyfikuj&quot;. Nie zagłębiałem się w Mirka obsługę enkodera to też nie wiem jak tam &quot;wyjście&quot; danych jest zrealizowane.<br />xiw to z kolei zmienna pomocnicza INT 16-bitowa. Dzięki temu mam załatwioną konwersję typów (różne zmienne modyfikuję) i łatwiejszą obsługę samej funkcji. Funkcja już sama zadba aby nie przekroczyć krytycznych parametrów i modyfikuje zmienną z zadanym mnożnikiem co w moim przypadku jest bardzo istotne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 24 lip 2017, o 11:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2017-07-24T10:49:33+01:00</updated>
<published>2017-07-24T10:49:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192504#p192504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192504#p192504"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192504#p192504"><![CDATA[
A może w funkcji enkoderek zmieniaj wartość jakiejś zmiennej dodatkowej. A w funkcji main(), w zależności od wartości poz_menu, zwiększasz lub zmniejszasz odpowiednią zmienną.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 24 lip 2017, o 10:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-23T21:11:35+01:00</updated>
<published>2017-07-23T21:11:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192495#p192495</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192495#p192495"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192495#p192495"><![CDATA[
W pętli głównej mam warunki<br />[syntax=c]if (poz_menu==0)// wyswietla czas<br />if (poz_menu==1)// wyswietla sama godzine<br />if (poz)menu==2)// wyswietla sama minute[/syntax]<br />za pomocą przycisku enkodera zwiększam sobie zmienną poz_menu, teraz chcę napisać funkcje do obsługi enkodera - obrót enkodera,<br />[syntax=c]void enkoderek(void) {<br />buzer();<br />if (poz_menu == 1) {<br />if (enco_dir == ENC_RIGHT)<br />godziny++;<br />if (enco_dir == ENC_LEFT)<br />godziny--;<br /><br />}<br />if (poz_menu == 2) {<br />if (enco_dir == ENC_RIGHT)<br />minuty++;<br />if (enco_dir == ENC_LEFT)<br />minuty--;<br /><br />}<br /><br /><br />}[/syntax]<br />chcę aby w zależności od zmiennej poz_menu obracając enkoderem zmieniać zmienna godziny lub minuty, jednak coś mi to nie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 23 lip 2017, o 21:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-23T20:09:12+01:00</updated>
<published>2017-07-23T20:09:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192494#p192494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192494#p192494"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192494#p192494"><![CDATA[
Jeżeli obsługuję to przyciskami to nie ma problemu, ale jakoś nie mogę tego obsłużyć enkoderem, chodzi mi o to aby w różnych pozycjach menu za pomocą enkodera zmieniać różne parametry programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 23 lip 2017, o 20:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-23T12:35:43+01:00</updated>
<published>2017-07-23T12:35:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192477#p192477</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192477#p192477"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192477#p192477"><![CDATA[
Przykładowa struktura programu może wyglądać np. tak:<br /><br />[syntax=c]while(1)<br />  {<br />    //tu się coś wykonuje cały czas co musi się wykonywać w pętli niezależnie od reszty programu<br /><br /><br />    if (tryb==0)<br />      {<br />//tu jest np. ekran główny<br /><br /><br />      }<br />    else if(tryb==1)<br />      {<br />//tu jest przykładowe menu<br /><br />switch(pozycja_menu)<br />case opcja1:<br />//instrukcje<br />break;<br /><br />case opcja2:<br />//instrukcje<br />break;<br /><br />//itd.<br /><br /><br />      }<br />    else if(tryb==2)<br />      {<br />//jakieś inne menu/ specyficzny tryb pracy albo co kto sobie ubzdura<br />      }<br />    else if(itd...)<br /><br /><br /><br /><br /><br /><br /><br />  } //END while[/syntax]<br /><br />Przypominam, że najlepiej będzie to działać jeśli program będzie tak napisany aby w żadnym miejscu nie blokował i nie opóźniał. U mnie nawet obsługa wyświetlacza wywoływana jest cyklicznie i wykonuje się przy jednym obiegu zaledwie kilkanaście niezbędnych mikrosekund, a nie milisekund choć w tym wypadku nie jest to wymóg, a po prostu lubię jak się pętla szybko wykonuje <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br />Wszelkie opcje w menu obsługiwane są również w locie, a wspomagam się tylko znacznikami (flagami) i timerami programowymi do omijania niepotrzebnych w danym momencie fragmentów programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 23 lip 2017, o 12:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-23T12:00:15+01:00</updated>
<published>2017-07-23T12:00:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192476#p192476</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192476#p192476"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192476#p192476"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Teoretycznie można, ale ja akurat switch wykorzystuje w samym menu. Dla dwóch, trzech warunków trybu to raczej nie ma sensu.<br /></div><br /><br />Masz jakiś prosty przykładowy kod, jak Ty to robisz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 23 lip 2017, o 12:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-23T09:44:49+01:00</updated>
<published>2017-07-23T09:44:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192468#p192468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192468#p192468"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192468#p192468"><![CDATA[
Teoretycznie można, ale ja akurat switch wykorzystuje w samym menu. Dla dwóch, trzech warunków trybu to raczej nie ma sensu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 23 lip 2017, o 09:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-23T09:32:04+01:00</updated>
<published>2017-07-23T09:32:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192465#p192465</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192465#p192465"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192465#p192465"><![CDATA[
Właśnie się zastanawiam czy nie wykorzystać funkcji SWICH. A jeszcze chciałbym to obsłużyć enkoderem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 23 lip 2017, o 09:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-23T09:16:54+01:00</updated>
<published>2017-07-23T09:16:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192463#p192463</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192463#p192463"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192463#p192463"><![CDATA[
Ja to u siebie nazywam zmienną &quot;tryb&quot; i gdy jest równa zero to jestem na ekranie głównym, wartość jeden to menu, kolejne wartości - wszystko zależy jak rozbudowany jest program i może to być np. kolejne menu (np. serwisowe) lub specjalną faza wykonywanego programu. Wybór trybu i wejście do nieco jest za pomocą zwykłego warunku if. To co ma się stale wykonywać jest poza warunkiem i wykonuje się niezależnie od jakiegokolwiek trybu. Istotnym jest, że cały program ma się wykonywać nieblokująco z maksymalną prędkością, bo w przeciwnym wypadku może to nie działać dobrze.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 23 lip 2017, o 09:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-23T08:43:58+01:00</updated>
<published>2017-07-23T08:43:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192460#p192460</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192460#p192460"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192460#p192460"><![CDATA[
Utworzyłem menu, wchodząc do menu wchodzę do pętli, wychodząc z menu wracam do pętli głównej programu, a jak utworzyć menu aby nie wychodzić z głównej pętli programu? Jeżeli w pętli  głównej znajdują się jakieś ważne procesy sterujące to wchodząc do menu, sterowanie z pętli głównej powinno się odbywać jakby w &quot;tle&quot; i nie powinno być zaburzane przez obsługę menu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 23 lip 2017, o 08:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-13T17:56:31+01:00</updated>
<published>2017-07-13T17:56:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192063#p192063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192063#p192063"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192063#p192063"><![CDATA[
Chętnie poznam Twój sposób, najlepiej jakiś prosty abym rozkminił.<br /><br />Zrobiłem coś takiego:<br /><br />[syntax=c]void menu0(void) {<br />register_enc_event_callback( enkoderek1);<br />register_enc_event_sw_callback(przycisk1);<br />    lcd_cls();<br /><br />licznik = y;<br /><br />do {<br />ENCODER_EVENT();<br />lcd_locate(0,0);<br />y = licznik;<br />lcd_int(y);<br /><br /><br />} while (x &gt; 0);<br />}<br /><br /><br /><br />void przycisk1 ( void ){<br />x=0;<br />lcd_cls();<br />licznik=0;<br />register_enc_event_callback( enkoderek);<br />register_enc_event_sw_callback(przycisk);<br />//x=1;[/syntax]<br /><br />W funkcji menu0 zarejestrowałem nowe funkcje do obsługi enkodera, a jak z niej wychodzę to rejestruję pierwotne. To pewnie zazłożony sposób, ale nic lepszego nie wymyśliłem, dlatego chętnie zapoznam się z innymi rozwiązaniami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 13 lip 2017, o 17:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SP2LUB]]></name></author>
<updated>2017-07-13T17:32:56+01:00</updated>
<published>2017-07-13T17:32:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192059#p192059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192059#p192059"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192059#p192059"><![CDATA[
Jeżeli używasz biblioteki Mirka, to ja robię w swoich urządzeniach tak:<br /><br />1. Rejestruje swoją funkcję dla switcha <br />2. Rejestruję swoją funkcję dla encodera <br /><br />rejestruję zmienną menuflag = ta zmienna incrementuje  za każdym przyciśnięciem switcha i w ten sposób zmieniam poziom menu.<br />na przykład <br />0 = menu główne<br />1 = menu poziom 1<br />2 = menu poziom 2<br />itd....<br /><br />Własna funkcja encodera jest zawsze wspólna dla całego drzewa menu (menu 0, menu 1, menu2...), i zmienia wartości w zależności od flagi Menuflag.<br /><br />w ten sposób w pętli głównej programu wywołuję tylko te dwie funkcje które uprzednio zarejestrowałem. Encodir zmienia mi wartości menu w komórce która jest właśnie oflagowana menuflag.<br /><br />Nie mam pod ręką teraz moich rozwiązań, wrócę do domu to mogę wkleić jakiś przykład..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12998">SP2LUB</a> — 13 lip 2017, o 17:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-13T17:03:40+01:00</updated>
<published>2017-07-13T17:03:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192056#p192056</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192056#p192056"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192056#p192056"><![CDATA[
Zrobiłem tak jak podpowiedziałeś, dałem zmiennej y na początku jakąś wartość<br />[syntax=c]void menu0(void) {<br /><br /><br />licznik = y;<br /><br />do {<br />lcd_cls();<br />y = licznik;<br />lcd_int(y);<br />_delay_ms(100);<br /><br />} while (x &gt; 0);<br />}[/syntax]<br /><br />ale jak wykonuje się ta pętla to nie działa mi zarejestrowana funkcja zwiększająca zmienną licznik.<br /><br /><br />W pętli trzeba odpalić zdarzenie <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=7324">Hannibal9</a> — 13 lip 2017, o 17:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-07-13T16:45:55+01:00</updated>
<published>2017-07-13T16:45:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192053#p192053</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192053#p192053"/>
<title type="html"><![CDATA[Re: Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192053#p192053"><![CDATA[
Po wejściu do wybranej pozycji menu w zasadzie powinna być już aktywna edycja czyli w momencie wejścia przechwytujesz sobie modyfikowana zmienną do dodatkowej zmiennej połączonej z enkoderem, a przy wyjściu z opcji przypisujesz z powrotem do zmiennej właściwej. Nie zagłębiem się w program obsługi enkodera, który tu użyłeś, ale w moich programach upraszcza to wiele rzeczy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 13 lip 2017, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Hannibal9]]></name></author>
<updated>2017-07-13T15:59:46+01:00</updated>
<published>2017-07-13T15:59:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192051#p192051</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192051#p192051"/>
<title type="html"><![CDATA[Enkoder - menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18798&amp;p=192051#p192051"><![CDATA[
Witam<br />Zabrałem się z tworzenie menu, które chciałbym obsługiwać za pomocą enkodera, proszę o podpowiedź, w pętli głównej wyświetlam 4 pozycje menu, za pomocą enkodera zaznaczam sobie jedną z nich.<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">void enkoderek(void) {<br />   buzer();<br />   if (enco_dir == ENC_RIGHT) licznik++;<br />   if (enco_dir == ENC_LEFT)  licznik--;<br /><br />   //licznik = get_encoder();<br />   if (licznik&gt;3) licznik = 3;<br />   if (licznik&lt;0) licznik = 0;<br /><br />}<br /></div><br />Przyciskiem enkodera wchodzę do wybranej pozycji menu (pętli) i tu za pomocą enkodera chciałbym zmienić wartość jakiejś zmiennej X która ma już jakąś wartość początkową dajmy na to 10, jak to zrobić za pomocą funkcji void enkoderek(void)?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 32 minutach ]</span></strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7324">Hannibal9</a> — 13 lip 2017, o 15:59</p><hr />
]]></content>
</entry>
</feed>