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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-05-26T19:50:03+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11809&amp;mode</id>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-05-26T19:50:03+01:00</updated>
<published>2015-05-26T19:50:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130158#p130158</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130158#p130158"/>
<title type="html"><![CDATA[Re: Klawiatura analogowa, jakiś błąd??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130158#p130158"><![CDATA[
A daj dla testu jakiegoś delaya po menu++<br /><br />@edit<br />głupoty gadam. Masz dwie opcje. Albo zamieniasz miejscami te dwa ify: if (menu ==4) {... i if (menu ==3) {...<br /><br />albo musisz wyzerować flagę klawisza keys[2]==0 po wejściu w if (menu ==4) {...<br /><br />Teraz masz coś takiego:<br /><br />[syntax=c]if (menu ==3) {  //wchodzisz w menu 3<br /> <br />                if (keys&#91;2&#93;==9){  // klawisz wciśniety więc ustawiasz flage menu na 4<br /> <br />                        menu=4;<br />                }<br /> <br />                        lcd_locate(5,0);<br />                        lcd_str(&quot;menu3&quot;);<br />                }<br /> <br />        if (menu ==4) { // w funkcji powyższej przestawiłeś flagę na menu == 4 więc ta funkcja się wykonuje<br /> <br />                if (keys&#91;2&#93;==9){  // flaga klawisza nie została wyzerowana dlatego ten if ponownie się wykonuje<br /> <br />                        menu=1;   // zmiana flagi menu na 1<br />                }<br />                       <br />                        // menu 4 pojawia się na ułamek sekundy po czym wyświetla się menu 1<br /> <br />                        lcd_locate(5,0);<br />                        lcd_str(&quot;menu4&quot;);<br />                }[/syntax]<br /><br />A powinno być<br /><br />[syntax=c]if (menu ==3) {  //wchodzisz w menu 3<br /> <br />                if (keys&#91;2&#93;==9){  // klawisz wciśniety więc ustawiasz flage menu na 4<br />                        keys&#91;2&#93;==0; // @#@#@#@# WYZEROWANIE FLAGI PRZYCISKU key&#91;2&#93; @#@#@#@#@#<br />                        menu=4;<br />                }<br /> <br />                        lcd_locate(5,0);<br />                        lcd_str(&quot;menu3&quot;);<br />                }<br /> <br />        if (menu ==4) { // w funkcji powyższej przestawiłeś flagę na menu == 4 więc ta funkcja się wykonuje<br /> <br />                <br /><br />                if (keys&#91;2&#93;==9){  // FLAGA ZOSTAŁA WYZEROWANA W POWYŻSZEJ FUNKCJI WIĘC IF NIE JEST SPEŁNIONY<br />                        menu=1; <br />                }<br /> <br /> <br />                        lcd_locate(5,0);<br />                        lcd_str(&quot;menu4&quot;);<br />                }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 26 maja 2015, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2015-05-25T21:23:01+01:00</updated>
<published>2015-05-25T21:23:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130102#p130102</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130102#p130102"/>
<title type="html"><![CDATA[Re: Klawiatura analogowa, jakiś błąd??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130102#p130102"><![CDATA[
Nie jasno przedstawiłem zasadę działania czy o co chodzi ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 25 maja 2015, o 21:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wirnick]]></name></author>
<updated>2015-05-25T21:13:21+01:00</updated>
<published>2015-05-25T21:13:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130100#p130100</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130100#p130100"/>
<title type="html"><![CDATA[Re: Klawiatura analogowa, jakiś błąd??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130100#p130100"><![CDATA[
<div class="quotetitle">Rafal9018 napisał(a):</div><div class="quotecontent"><br />Klawiszem key0 przechodzimy od menu1 do menu4 przy pozycji menu3 przy kliknięciu key2 przechodzimy do menu4 i tu jest problem. Bo przechodzi do menu1 a jest to następny krok dopiero. Nie rozumiem dlaczego tak się dzieje<br /></div>  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" />  <img src="https://forum.atnel.pl/images/smilies/icon_exclaim.gif" alt=":!:" title="Wykrzyknik" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9272">Wirnick</a> — 25 maja 2015, o 21:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2015-05-25T20:42:06+01:00</updated>
<published>2015-05-25T20:42:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130096#p130096</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130096#p130096"/>
<title type="html"><![CDATA[Klawiatura analogowa, jakiś błąd??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11809&amp;p=130096#p130096"><![CDATA[
Witam. Od jakiegoś czasu bawię się i testuję klawiaturę analogową. Napotkałem na mały problem z którym nie wiem jak sobie poradzić. O to mój kod:<br /><br />[syntax=c]#include &lt;stdio.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;lcd44780.h&quot;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br /><br /><br />#define LED1 (1&lt;&lt;PB0)<br />#define LED2 (1&lt;&lt;PD7)<br />#define LED3 (1&lt;&lt;PC1)<br /><br />#define BUZZER (1&lt;&lt;PB1)<br /><br />#define ADC_RANGE 50<br /><br />#define ADC_K1 285<br />#define ADC_K2 376<br />#define ADC_K3 452<br />#define ADC_K4 572<br />#define ADC_K5 784<br /><br /><br /><br /><br />volatile uint8_t Timer1;<br />volatile uint8_t Timer2;<br />volatile uint8_t Timer3;<br /><br /><br />uint16_t pomiar (uint8_t kanal);<br />uint8_t keys&#91;5&#93;;<br /><br />int main (void){<br /><br />//uint32_t wynik = 0;<br />uint16_t pm = 0;<br />//uint8_t cz_d = 0;<br />//uint8_t cz_u = 0;<br />uint8_t menu = 0;<br /><br /><br /><br /><br /><br />lcd_init();<br />lcd_cls();<br /><br />// inicjalizacja ADC<br /><br /><br />ADCSRA |= (1&lt;&lt;ADEN);   // włączenie adc<br />ADCSRA |= (1&lt;&lt;ADPS2) | (1&lt;&lt;ADPS1) ; // preskaler 64<br />ADMUX |= (1&lt;&lt;REFS0) | (1&lt;&lt;REFS1); // wewnętrzne napięcie odniesienia 2,56 V<br /><br /><br /><br />DDRC |= LED3;<br /><br />DDRB |= LED1;<br />DDRD |= LED2;<br />DDRB |= BUZZER;<br /><br /><br /><br /><br />sei();<br />while(1){<br /><br />lcd_locate(1,14);<br />lcd_int(menu);<br /><br />lcd_locate(1,10);<br />lcd_int(keys&#91;2&#93;);<br /><br /><br />pm = pomiar(5);<br /><br />if (keys&#91;0&#93;==9 || keys&#91;1&#93;==9 || keys&#91;2&#93;==9 || keys&#91;3&#93;==9 || keys&#91;4&#93;==9) PORTB |= BUZZER;<br />else PORTD &amp;= ~BUZZER;<br /><br /><br />if( pm &gt; ADC_K1-ADC_RANGE &amp;&amp; pm &lt; ADC_K1+ADC_RANGE ) {<br />if( keys&#91;0&#93;&lt;10 ) keys&#91;0&#93;++;<br />} else keys&#91;0&#93;=0;<br /><br />if( pm &gt; ADC_K2-ADC_RANGE &amp;&amp; pm &lt; ADC_K2+ADC_RANGE  ) {<br />if( keys&#91;1&#93;&lt;10 ) keys&#91;1&#93;++;<br />} else keys&#91;1&#93;=0;<br /><br />if( pm &gt; ADC_K3-ADC_RANGE &amp;&amp; pm &lt; ADC_K3+ADC_RANGE  ) {<br />if( keys&#91;2&#93;&lt;10 ) keys&#91;2&#93;++;<br />} else keys&#91;2&#93;=0;<br /><br />if( pm &gt; ADC_K4-ADC_RANGE &amp;&amp; pm &lt; ADC_K4+ADC_RANGE  ) {<br />if( keys&#91;3&#93;&lt;10 ) keys&#91;3&#93;++;<br />} else keys&#91;3&#93;=0;<br /><br />if( pm &gt; ADC_K5-ADC_RANGE &amp;&amp; pm &lt; ADC_K5+ADC_RANGE  ) {<br />if( keys&#91;4&#93;&lt;10 ) keys&#91;4&#93;++;<br />} else keys&#91;4&#93;=0;<br /><br /><br /><br /><br />if (keys&#91;0&#93; == 9) {<br /><br /><br />menu++;<br /><br />if (menu==5) menu=0;<br />}<br /><br />if (menu ==1) {<br /><br /><br />lcd_locate(5,0);<br />lcd_str(&quot;menu1&quot;);<br /><br />}<br />if (menu ==2) {<br /><br /><br />lcd_locate(5,0);<br />lcd_str(&quot;menu2&quot;);<br />}<br />if (menu ==3) {<br /><br />if (keys&#91;2&#93;==9){<br /><br />menu=4;<br />}<br /><br />lcd_locate(5,0);<br />lcd_str(&quot;menu3&quot;);<br />}<br /><br />if (menu ==4) {<br /><br />if (keys&#91;2&#93;==9){<br /><br />menu=1;<br />}<br /><br /><br />lcd_locate(5,0);<br />lcd_str(&quot;menu4&quot;);<br />}<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />/*<br />if (keys&#91;0&#93;==9) {<br />PORTB ^= LED1;<br />lcd_cls();<br />}<br />if (keys&#91;1&#93;==9) {<br />PORTB ^= LED1;<br />lcd_cls();<br />}<br />if (keys&#91;2&#93;==9) {<br />PORTB ^= LED1;<br />lcd_cls();<br />}<br />if (keys&#91;3&#93;==9) {<br />PORTB ^= LED1;<br />lcd_cls();<br />}<br />if (keys&#91;4&#93;==9) {<br />PORTB ^= LED1;<br />lcd_cls();<br />}<br /><br />*/<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />/*<br /><br /><br />lcd_locate(1,1);<br />lcd_int(keys&#91;0&#93;);<br /><br />lcd_locate(1,4);<br />lcd_int(keys&#91;1&#93;);<br /><br />lcd_locate(1,7);<br />lcd_int(keys&#91;2&#93;);<br /><br />lcd_locate(1,10);<br />lcd_int(keys&#91;3&#93;);<br /><br />lcd_locate(1,13);<br />lcd_int(keys&#91;4&#93;);<br /><br /><br />wynik = pomiar (PC5);<br />wynik = pm * 25 *2;<br />cz_d = wynik/10000;<br />cz_u = (wynik/100) % 100;<br /><br />// wywietlanie<br /><br />lcd_locate(0,5);<br />lcd_int(cz_d);<br />lcd_locate(0,6);<br />lcd_str(&quot;.&quot;);<br />if (cz_u &lt;10) {<br />lcd_locate(0,7);<br />lcd_str(&quot;0&quot;);<br />lcd_locate(0,8);<br />lcd_int(cz_u);<br />}<br />if  (cz_u &gt;10) {<br />lcd_locate(0,7);<br />lcd_int(cz_u);<br />}<br />lcd_locate(0,10);<br />lcd_str(&quot;V&quot;);<br /><br /><br /><br /><br />lcd_locate(0,12);<br />lcd_int(pm);<br /><br /><br /><br />}<br /><br />*/<br />}<br />}<br /><br /><br /><br /><br /><br />uint16_t pomiar( uint8_t kanal ) {<br /><br /><br /><br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br /><br /><br />ADCSRA |= (1&lt;&lt;ADSC);  // start konwersji<br /><br /><br />while( ADCSRA &amp; (1&lt;&lt;ADSC) );<br /><br />return ADCW;<br />}[/syntax]<br /><br /><br />Działanie ma być następujące:<br /><br />Klawiszem key0 przechodzimy od menu1 do menu4 przy pozycji menu3 przy kliknięciu key2 przechodzimy do menu4 i tu jest problem. Bo przechodzi do menu1 a jest to następny krok dopiero. Nie rozumiem dlaczego tak się dzieje. Klawiatura bez tego jednego problemu bardzo ładnie działa. Nie wiem jak temu zaradzić, proszę Was bardzo o pomoc  <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 25 maja 2015, o 20:42</p><hr />
]]></content>
</entry>
</feed>