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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-05-05T08:49:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15304&amp;mode</id>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2016-05-05T08:49:17+01:00</updated>
<published>2016-05-05T08:49:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160028#p160028</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160028#p160028"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa cz.3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160028#p160028"><![CDATA[
Efekt jaki chce uzyskać to:<br /><br />Mam klawiaturę o &quot;n&quot; klawiszach, aktualnie wciśnięcie klawisza powoduję zapisanie jakiejś wartości do tablicy. <br />I teraz tak, klikam klawisz pierwszy i na lcd w pozycji 0,0 wyświetla mi się wartość z tablicy, czyli np. klawisz 5, gdy trzymam ciągle ten sam klawisz klikam następny np. klawisz nr. 7. to chce aby w pozycji 1,0 wyświetlacza pokazała się informacja, że klawisz nr 7 został wciśnięty. Oczywiście klawisz pierwszy, dalej wciśnięty i nic nie powinno się zmieniać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6944">Ghann</a> — 5 maja 2016, o 08:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-05-05T07:27:32+01:00</updated>
<published>2016-05-05T07:27:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160025#p160025</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160025#p160025"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa cz.3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160025#p160025"><![CDATA[
Proponuję może najpierw zacząć co najmniej od jakiegoś kursu o mikrokontrolerach i samym języku C. Po drugie, napisz dokładnie jaki efekt chcesz uzyskać. Poniższa funkcja wyświetli w pierwszym wierszu wyświetlacza numery wciśniętych przycisków [1..5] na pozycjach [0, 2, 4, 6, 8]. Funkcja musi zostać wywołana po sprawdzeniu stanu klawiatury.<br /><br />[syntax=c]#define NUMBER_OF_KEYS 5<br /><br />void display_keys(uint8_t buttons&#91;&#93;) {<br />  for (uint i = 0; i &lt; NUMBER_OF_KEYS; ++i) {<br />    lcd_locale(0, i * 2);  <br />    if (buttons&#91;i&#93; == 1)<br />      lcd_int(i + 1);<br />    else<br />      lcd_char(' ');<br />  }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 5 maja 2016, o 07:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2016-05-04T19:52:16+01:00</updated>
<published>2016-05-04T19:52:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160004#p160004</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160004#p160004"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa cz.3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=160004#p160004"><![CDATA[
No ok stworzyłem taką tablicę, i zapisuje tam wartość danego klawisza. Wszystko ładnie, ale jak wyświetlić ten drugi wciśnięty klawisz ??<br /><br />Element z tablicy wyświetlam tak:<br /><br />[syntax=c]lcd_locate(1,10);<br />    lcd_int(klawisz&#91;i&#93;);[/syntax]<br /><br />A jak wyświetlić wartość z tablicy drugiego wciśniętego przycisku ??<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 9 minutach ]</span></strong><br /><br />Czyli tak mam tablicę:<br /><br /><br />[syntax=c]uint8_t klawisz&#91;5&#93;;[/syntax]<br /><br />klawiszem pierwszym wyświetlam np. element 1<br /><br />[syntax=c]lcd_locate(0,1);<br />    lcd_int(klawisz&#91;1&#93;);[/syntax]<br /><br />A jak przyciskiem drugim wyświetlić inny element tablicy ?? Podczas gdy pierwszy jest wciśnięty ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6944">Ghann</a> — 4 maja 2016, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-05-04T15:09:18+01:00</updated>
<published>2016-05-04T15:09:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=159960#p159960</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=159960#p159960"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa cz.3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=159960#p159960"><![CDATA[
Prędzej z pomocą kolegów, a nie za pomocą <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />Musisz utworzyć sobie tablicę 'n' wartości, gdzie n oznacza liczbę przycisków klawiatury. Następnie zastępujesz każdy zapis:<br />[syntax=c]if (!(PIND &amp; (1&lt;&lt;PD4)))    switch_flag = 1;[/syntax]<br />w taki sposób:<br />[syntax=c]if (!(PIND &amp; (1&lt;&lt;PD4)))<br />  buttons&#91;0&#93; = 1;<br />else<br />  buttons&#91;0&#93; = 0;[/syntax]<br />Oczywiście każdemu przyciskowi odpowiada określony indeks w tablicy buttons.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 4 maja 2016, o 15:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ghann]]></name></author>
<updated>2016-05-04T14:38:53+01:00</updated>
<published>2016-05-04T14:38:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=159957#p159957</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=159957#p159957"/>
<title type="html"><![CDATA[Klawiatura matrycowa cz.3]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15304&amp;p=159957#p159957"><![CDATA[
Witam. <br />Napisałem program do obsługi klawiatury matrycowej, oczywiście za pomocą kolegów z forum. Link do tematu: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic14599.html" >topic14599.html</a><!-- l --><br />Mam do Was pytanie, a raczej prośbę o pomysł. Klawiatura wykrywa każdy przycisk wciśnięty i wszystko działa. Ale jak zrobić wykrywanie dwóch klawiszy ?? Jak wcisnę dwa na raz ?? Jak narazie każde wciśnięcie powoduje zmianę wartości zmiennej switch_flag.<br /><br />[syntax=c]/ sekwencja dla pierwszej kolumny<br /> <br /> <br />    PORTC &amp;= ~(1&lt;&lt;PC3);             // zerujemy kolumnę pierwszą<br />    _delay_ms(10);<br /> <br />  //if (!(PIND &amp; (1&lt;&lt;PD3))) switch_flag = 4;<br />    if (!(PIND &amp; (1&lt;&lt;PD4)))    switch_flag = 1;   //sprawdzenie wiersza pierwszego<br />    if (!(PIND &amp; (1&lt;&lt;PD1)))  switch_flag = 2;       //sprawdzenie wiersza drugiego<br />    if (!(PIND &amp; (1&lt;&lt;PD2)))    switch_flag = 3;     //sprawdzenie wiersza trzeciego<br /> <br />    PORTC |= (1&lt;&lt;PC3);<br /> <br /> <br />    // sekwencja dla drugiej kolumny<br /> <br />    PORTC &amp;= ~(1&lt;&lt;PC4);                         // zerujemy kolumnę drugą<br />    _delay_ms(10);<br /> <br />  // if (!(PIND &amp; (1&lt;&lt;PD3))) switch_flag = 4;<br />    if (!(PIND &amp; (1&lt;&lt;PD4))) switch_flag = 4;  //sprawdzenie wiersza pierwszeg<br />    if (!(PIND &amp; (1&lt;&lt;PD1)))   switch_flag = 5;      //sprawdzenie wiersza drugiego<br />    if (!(PIND &amp; (1&lt;&lt;PD2)))   switch_flag = 6;      //sprawdzenie wiersza trzeciego<br /> <br />    PORTC |= (1&lt;&lt;PC4);<br /> <br />    // sekwencja dla trzeciej kolumny<br />    //<br /> <br />    PORTC &amp;= ~(1&lt;&lt;PC5);                         // zerujemy kolumnę trzecią<br />    _delay_ms(10);<br /> <br />  // if (!(PIND &amp; (1&lt;&lt;PD3))) switch_flag = 4;<br />    if (!(PIND &amp; (1&lt;&lt;PD4)))  switch_flag = 7; //sprawdzenie wiersza pierwszego<br />    if (!(PIND &amp; (1&lt;&lt;PD1)))  switch_flag = 8;       //sprawdzenie wiersza drugiego<br />    if (!(PIND &amp; (1&lt;&lt;PD2)))   switch_flag = 9;      //sprawdzenie wiersza trzeciego<br /> <br />    PORTC |= (1&lt;&lt;PC5);[/syntax]<br /><br />Proszę o propozycję i sugestie. Dzięki <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6944">Ghann</a> — 4 maja 2016, o 14:38</p><hr />
]]></content>
</entry>
</feed>