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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-06-25T14:02:35+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=18686&amp;mode</id>
<entry>
<author><name><![CDATA[tomek10861]]></name></author>
<updated>2017-06-25T14:02:35+01:00</updated>
<published>2017-06-25T14:02:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18686&amp;p=191214#p191214</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18686&amp;p=191214#p191214"/>
<title type="html"><![CDATA[Re: Klawiatura 4x4 sprawdzanie czy wciśnięte jest więcej niż]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18686&amp;p=191214#p191214"><![CDATA[
Pokażcie schemat jak ta klawiatura jest podłączona. Trochę też ten kod jakiś takie zakręcony - przydałby się jakieś komentarze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17442">tomek10861</a> — 25 cze 2017, o 14:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KamilW]]></name></author>
<updated>2017-06-24T19:43:19+01:00</updated>
<published>2017-06-24T19:43:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18686&amp;p=191188#p191188</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18686&amp;p=191188#p191188"/>
<title type="html"><![CDATA[Klawiatura 4x4 sprawdzanie czy wciśnięte jest więcej niżJede]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18686&amp;p=191188#p191188"><![CDATA[
Witam. <br />Jestem początkujący w tej dziedzinie. <br />Niestety mam na zaliczenie z funkcji swich. Zrobić klawiaturę matrycową 4x4.<br />Problem polega na tym, że utknąłem na samym końcu przy ifie. <br />funkcja cały czas zwraca mi 3 ze względu na tym, że &quot;a&quot; jest różne od 3 bo przechodzi pętla i nie zapamiętuje ostatnie ustawianie portu.<br /><br />Wszystko ma działać tak:<br />Jak przycisnę którykolwiek przycisk to wyświetla binarnie nr po kolei. natomiast jak nacisnę np 2 naraz to mają się zaświecić wszystkie.<br />Niestety wszystkie święcą do puki nie nacisnę któryś przycisk, zaświeci się dobrze ale jak puszcze to nie zapamiętuje.<br />[syntax=c]/*<br /> * Matryca binarna.c<br /> *<br /> * Created: 2017-06-11 15:23:50<br /> * Author : Kamil<br /> */<br />#define F_CPU 16000000<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#define LED1 (1&lt;&lt;PA7)<br />#define LED2 (1&lt;&lt;PA6)<br />#define LED3 (1&lt;&lt;PA5)<br />#define LED4 (1&lt;&lt;PA4)<br />#define LED5 (1&lt;&lt;PA3)<br />#define LED6 (1&lt;&lt;PA2)<br />#define LED7 (1&lt;&lt;PA1)<br />#define LED8 (1&lt;&lt;PA0)<br />#define LED1_ON PORTA &amp;= ~LED1<br />#define LED2_ON PORTA &amp;= ~LED2<br />#define LED3_ON PORTA &amp;= ~LED3<br />#define LED4_ON PORTA &amp;= ~LED4<br />#define LED5_ON PORTA &amp;= ~LED5<br />#define LED6_ON PORTA &amp;= ~LED6<br />#define LED7_ON PORTA &amp;= ~LED7<br />#define LED8_ON PORTA &amp;= ~LED8<br />#define LED_OFF PORTA = 0b11111111<br />#define LED_ON PORTA = 0b00000000<br />int a;<br />int main(void)<br />{<br />DDRA = 0b11111111;<br />PORTA = 0b11111111;<br />DDRB = 0b11110000;<br />PORTB = 0b11111111;<br />while(1)<br />{<br />/*_delay_ms(2);<br />PORTB=0b00001111;<br />_delay_ms(2);<br />if(PINB == 0b00001111)<br />{<br />LED_OFF;<br />}<br />else<br />{*/<br /><br />PORTB = 0b11111111;<br />a=0;<br />for (int i = 1; i &lt; 5;i++)<br />{<br /><br />_delay_ms(10);<br />switch(i)<br />{<br />case 1 :PORTB = 0b01111111; _delay_ms(5);<br /><br />switch(PINB)<br />{<br />case 0b01110111 : LED_OFF; LED8_ON; break;<br />case 0b01111011 : LED_OFF; LED7_ON; break;<br />case 0b01111101 : LED_OFF; LED8_ON;LED7_ON; break;<br />case 0b01111110 : LED_OFF; LED6_ON; break;<br />default:a++; break;<br />};<br />case 2 : PORTB = 0b10111111; _delay_ms(5);<br />switch(PINB)<br />{<br />case 0b10110111 : LED_OFF; LED6_ON;LED8_ON; break;<br />case 0b10111011 : LED_OFF; LED6_ON;LED7_ON; break;<br />case 0b10111101 : LED_OFF; LED6_ON;LED7_ON;LED8_ON; break;<br />case 0b10111110 : LED_OFF; LED5_ON; break;<br />default:a++; break;<br />};<br /><br />case 3 : PORTB = 0b11011111; _delay_ms(5);<br /><br />switch(PINB)<br />{<br />case 0b11010111 : LED_OFF; LED5_ON;LED8_ON; break;<br />case 0b11011011 : LED_OFF; LED5_ON;LED7_ON; break;<br />case 0b11011101 : LED_OFF; LED5_ON;LED7_ON;LED8_ON; break;<br />case 0b11011110 : LED_OFF; LED5_ON;LED6_ON; break;<br />default:a++; break;<br />};<br />case 4 : PORTB = 0b11101111; _delay_ms(5);<br />switch(PINB)<br />{<br />case 0b11100111 : LED_OFF; LED5_ON;LED6_ON;LED7_ON; break;<br />case 0b11101011 : LED_OFF; LED5_ON;LED6_ON; break;<br />case 0b11101101 : LED_OFF; LED4_ON; break;<br />case 0b11101110 : LED_OFF; LED4_ON;LED8_ON;break;<br />default:a++; break;<br />};<br /><br />};<br /><br />if (a==3)<br />{<br />break;<br />}<br />else<br />{<br />LED_ON;break;<br />}<br /><br /><br />//}<br />}<br />}<br />}[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 8 minutach ]</span></strong><br /><br />Jak zmieniłem na:<br />[syntax=c]if (a&lt;3)<br />{<br />LED_ON;<br />}<br />else<br />{<br />break;<br />}[/syntax]<br /><br />zaczęło mniej więcej działać poprawnie, ale jak wcisnę przyciski na tej samej kolumnie lub wierszu to nie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17439">KamilW</a> — 24 cze 2017, o 19:43</p><hr />
]]></content>
</entry>
</feed>