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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-02T08:17:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7580&amp;mode</id>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-07-02T08:17:06+01:00</updated>
<published>2014-07-02T08:17:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=86451#p86451</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=86451#p86451"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=86451#p86451"><![CDATA[
<div class="quotetitle">arturf209 napisał(a):</div><div class="quotecontent"><br />Bo dostajesz kody ASCII  <br />65 - A <br /><br />Teraz tylko pomyśleć co zrobić, żeby nie wyświetlać kodu znaku a znak :&gt;<br /></div><br /><br />tak jak wspomniałem należy wysyłać char'y i nie traktować ich fnkcją itoa() jeszcze raz;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 2 lip 2014, o 08:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arturf209]]></name></author>
<updated>2014-07-02T01:19:30+01:00</updated>
<published>2014-07-02T01:19:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=86443#p86443</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=86443#p86443"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=86443#p86443"><![CDATA[
Bo dostajesz kody <a href="http://pl.wikipedia.org/wiki/ASCII"  class="postlink">ASCII</a> <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />65 - A <br /><br />Teraz tylko pomyśleć co zrobić, żeby nie wyświetlać kodu znaku a znak :&gt;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=801">arturf209</a> — 2 lip 2014, o 01:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T20:10:30+01:00</updated>
<published>2014-06-27T20:10:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85946#p85946</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85946#p85946"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85946#p85946"><![CDATA[
Zrobiłem tak, że nadajnik nadaje jakąś liczbę. Odbiornik sprawdza jaka to liczba i na tej podstawie nadaje jej odpowiednią do wyświetlenia wartość. Zobacz ten program czy Ci zadziała:<br /><br />kod nadajnika:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /> <br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br />#define KEY_PIN2 (1&lt;&lt;PD6)<br />#define KEY_DOWN2 (PIND &amp; KEY_PIN2)<br /> <br /> <br /> <br />        #define KB_PORT_OUT                 PORTB<br />        #define KB_PORT_IN                  PINB<br /> <br /> <br />        void USART_Init( unsigned int baud )<br />        {<br />        /* Set baud rate */<br />        UBRRH = (unsigned char)(baud&gt;&gt;8);<br />        UBRRL = (unsigned char)baud;<br />        /* Enable receiver and transmitter */<br />        UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />        /* Set frame format: 8data, 2stop bit */<br />        UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />        }<br /> <br /> <br />        void USART_Transmit( unsigned char data )<br />        {<br />        /* Wait for empty transmit buffer */<br />        while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />        ;<br />        /* Put data into buffer, sends the data */<br />        UDR = data;<br />        }<br /> <br /> <br /> <br />        //*********************************************************<br /> <br />        void port_init(void)<br />        {<br />         DDRB  = 0x00;<br />         PORTB = 0x00;<br />         DDRB  = 0x0f;          //Port klawiatury - stan niski wyjście , wysoki wejście<br />         PORTB = 0xff;          //właczenie pul-up<br /> <br />        }<br /> <br /> <br />        //Procedura inicjalizacji peryferi<br />        void init_devices(void)<br />        {<br />         port_init();<br /> <br /> <br />         MCUCR = 0x00;<br />         TIMSK = 0x00; //Timer - generowanie przerwania<br />         }<br /> <br /> <br />         int main(void)<br />        {<br />           unsigned char upperNibble, keyCode, i;<br />           uint8_t keyPressed = 0;<br />           init_devices();<br />        USART_Init(MYUBRR);<br />           while(1)<br />           {<br />                upperNibble = 0xff;<br /> <br />                        for(i=0; i&lt;4; i++)<br />                    {<br />                         _delay_ms(1);<br />                         KB_PORT_OUT = ~(0x01 &lt;&lt; i);<br />                         _delay_ms(1);                                            //Opóźnienie<br />                         upperNibble = KB_PORT_IN | 0x0f;<br /> <br />                         if (upperNibble != 0xff)<br />                         {<br />                           _delay_ms(20);                                //Opóźnienie  dla niwelacji drgań<br />                       upperNibble = KB_PORT_IN | 0x0f;<br />                           if(upperNibble == 0xff) goto OUT;<br /> <br />                           keyCode = (upperNibble &amp; 0xf0) | (0x0f &amp; ~(0x01 &lt;&lt; i));<br /> <br />                           while (upperNibble != 0xff)<br />                             upperNibble = KB_PORT_IN | 0x0f;<br /> <br />                           _delay_ms(20);                          //opóźnienie dla niwelacji drgań<br /> <br />                           switch (keyCode)                        //Znaki wyświetlane na LCD<br />                           {<br />                                case (0xee): keyPressed = 1;<br />                                                         break;<br />                                case (0xed): keyPressed = 2;<br />                                                         break;<br />                                case (0xeb): keyPressed = 3;<br />                                                         break;<br />                                case (0xe7): keyPressed = 4;<br />                                                         break;<br />                                case (0xde): keyPressed = 5;<br />                                                         break;<br />                                case (0xdd): keyPressed = 6;<br />                                                         break;<br />                                case (0xdb): keyPressed = 7;<br />                                                         break;<br />                                case (0xd7): keyPressed = 8;<br />                                                         break;<br />                                case (0xbe): keyPressed = 9;<br />                                                         break;<br />                                case (0xbd): keyPressed = 10;<br />                                                         break;<br />                                case (0xbb): keyPressed = 11;<br />                                                         break;<br />                                case (0xb7): keyPressed = 12;<br />                                                         break;<br />                                case (0x7e): keyPressed = 13;<br />                                                         break;<br />                                case (0x7d): keyPressed = 14;<br />                                                         break;<br />                                case (0x7b): keyPressed = 15;<br />                                                         break;<br />                                case (0x77): keyPressed = 16;<br />                                                         break;<br />                                default    : keyPressed = 0;<br />                                                         break;<br />                            }//Koniec klawiszy --<br /> <br />                           USART_Transmit(keyPressed);<br /> <br />                           OUT:;<br />                          }//koniec if-a -jakby ktoś szukał<br />                        }//koniec for-ki  - tak to tutaj<br />                }//koniec while1 -- no wreszcie<br /> <br />                return 0;<br />        }[/syntax]<br /><br /><br />kod odbiornika<br />[syntax=c]/*<br /> * sas.c<br /> *<br /> *  Created on: 16-06-2014<br /> *      Author: Maciej<br /> */<br /> <br /> <br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br />#define LCD_INIT  LCD_Initalize();<br /> <br /> <br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br /> <br />void USART_Init( unsigned int ubrr)<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />UBRRL = (unsigned char)ubrr;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /> <br />unsigned char USART_Receive( void )<br />{<br />/* Wait for data to be received */<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) )<br />;<br />/* Get and return received data from buffer */<br />return UDR;<br />}<br /> <br />int main(void){<br />unsigned char x= '0';<br /> <br />LCD_INIT;<br />USART_Init(MYUBRR);<br />USART_Receive();<br />unsigned char gg&#91;1&#93;;<br /> <br />        while(1){<br />                x = USART_Receive();<br />                if ( x == 0 ) x = ' ';<br />                if ( x == 1) x = '1';<br />                if ( x == 2) x = '2';<br />                if ( x == 3) x = '3';<br />                if ( x == 4) x = 'A';<br />                if ( x == 5) x = '4';<br />                if ( x == 6) x = '5';<br />                if ( x == 7) x = '6';<br />                if ( x == 8) x = 'B';<br />                if ( x == 9) x = '7';<br />                if ( x == 10) x = '8';<br />                if ( x == 11) x = '9';<br />                if ( x == 12) x = 'C';<br />                if ( x == 13) x = '*';<br />                if ( x == 14) x = '0';<br />                if ( x == 15) x = '#';<br />                if ( x == 16) x = 'D';<br />                unsigned char USART_Receive( void );<br />                void LCD_Clear(void);<br />                <br />                LCD_GoTo(8, 0);<br />                LCD_WriteText(x);<br /> <br />        }<br />}[/syntax]<br /><br />i proszę Cie Kolego, weź się porządnie za naukę tego programowania, jak chcesz się czegoś nauczyć. Napisany przeze mnie program powinien spełnić to co chcesz uzyskać czyli wyświetlić znaki na LCD. Nie mniej jednak na Twoim miejscu zacząłbym pisanie od początku i zastanowił dlaczego takie a nie inne rzeczy pojawiały się na wyświetlaczu. Np wysyłałeś jedynke w ascii a później traktowałeś ją funkcją itoa. Taką drogą daleko nie zajedziesz. Książka w dłoń, poradniki Mirka i do dzieła.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 20:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maciej2014]]></name></author>
<updated>2014-06-27T19:42:08+01:00</updated>
<published>2014-06-27T19:42:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85943#p85943</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85943#p85943"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85943#p85943"><![CDATA[
Teraz jest dość dobrze, ale nie wiem jak przesłać znaki graficzne typu A B * # ?<br />Po wciśnięciu A na lcd wyskakuje 65<br />Oto kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br />#define KEY_PIN2 (1&lt;&lt;PD6)<br />#define KEY_DOWN2 (PIND &amp; KEY_PIN2)<br /><br /><br /><br />        #define KB_PORT_OUT                 PORTB<br />        #define KB_PORT_IN                  PINB<br /><br /><br />        void USART_Init( unsigned int baud )<br />        {<br />        /* Set baud rate */<br />        UBRRH = (unsigned char)(baud&gt;&gt;8);<br />        UBRRL = (unsigned char)baud;<br />        /* Enable receiver and transmitter */<br />        UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />        /* Set frame format: 8data, 2stop bit */<br />        UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />        }<br /><br /><br />        void USART_Transmit( unsigned char data )<br />        {<br />        /* Wait for empty transmit buffer */<br />        while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />        ;<br />        /* Put data into buffer, sends the data */<br />        UDR = data;<br />        }<br /><br /><br /><br />        //*********************************************************<br /><br />        void port_init(void)<br />        {<br />         DDRB  = 0x00;<br />         PORTB = 0x00;<br />         DDRB  = 0x0f;          //Port klawiatury - stan niski wyjście , wysoki wejście<br />         PORTB = 0xff;          //właczenie pul-up<br /><br />        }<br /><br /><br />        //Procedura inicjalizacji peryferi<br />        void init_devices(void)<br />        {<br />         port_init();<br /><br /><br />         MCUCR = 0x00;<br />         TIMSK = 0x00; //Timer - generowanie przerwania<br />         }<br /><br /><br />         int main(void)<br />        {<br />           unsigned char upperNibble, keyCode, i;<br />           uint8_t keyPressed = 0;<br />           init_devices();<br />        USART_Init(MYUBRR);<br />           while(1)<br />           {<br />                upperNibble = 0xff;<br /><br />                        for(i=0; i&lt;4; i++)<br />                    {<br />                         _delay_ms(1);<br />                         KB_PORT_OUT = ~(0x01 &lt;&lt; i);<br />                         _delay_ms(1);                                            //Opóźnienie<br />                         upperNibble = KB_PORT_IN | 0x0f;<br /><br />                         if (upperNibble != 0xff)<br />                         {<br />                           _delay_ms(20);                                //Opóźnienie  dla niwelacji drgań<br />                       upperNibble = KB_PORT_IN | 0x0f;<br />                           if(upperNibble == 0xff) goto OUT;<br /><br />                           keyCode = (upperNibble &amp; 0xf0) | (0x0f &amp; ~(0x01 &lt;&lt; i));<br /><br />                           while (upperNibble != 0xff)<br />                             upperNibble = KB_PORT_IN | 0x0f;<br /><br />                           _delay_ms(20);                          //opóźnienie dla niwelacji drgań<br /><br />                           switch (keyCode)                        //Znaki wyświetlane na LCD<br />                           {<br />                                case (0xee): keyPressed = 1;<br />                                                         break;<br />                                case (0xed): keyPressed = 2;<br />                                                         break;<br />                                case (0xeb): keyPressed = 3;<br />                                                         break;<br />                                case (0xe7): keyPressed = 'A';<br />                                                         break;<br />                                case (0xde): keyPressed = 4;<br />                                                         break;<br />                                case (0xdd): keyPressed = 5;<br />                                                         break;<br />                                case (0xdb): keyPressed = 6;<br />                                                         break;<br />                                case (0xd7): keyPressed = 'B';<br />                                                         break;<br />                                case (0xbe): keyPressed = 7;<br />                                                         break;<br />                                case (0xbd): keyPressed = 8;<br />                                                         break;<br />                                case (0xbb): keyPressed = 9;<br />                                                         break;<br />                                case (0xb7): keyPressed = &quot;C&quot;;<br />                                                         break;<br />                                case (0x7e): keyPressed = '*';<br />                                                         break;<br />                                case (0x7d): keyPressed = 0;<br />                                                         break;<br />                                case (0x7b): keyPressed = '#';<br />                                                         break;<br />                                case (0x77): keyPressed = 'D';<br />                                                         break;<br />                                default    : keyPressed = 16;<br />                                                         break;<br />                            }//Koniec klawiszy --<br /><br />                           USART_Transmit(keyPressed);<br /><br />                           OUT:;<br />                          }//koniec if-a -jakby ktoś szukał<br />                        }//koniec for-ki  - tak to tutaj<br />                }//koniec while1 -- no wreszcie<br /><br />                return 0;<br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2855">maciej2014</a> — 27 cze 2014, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T18:52:13+01:00</updated>
<published>2014-06-27T18:52:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85937#p85937</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85937#p85937"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85937#p85937"><![CDATA[
A spróbuj tak: <br /><br />kod dla nadajnika:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /> <br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br />#define KEY_PIN2 (1&lt;&lt;PD6)<br />#define KEY_DOWN2 (PIND &amp; KEY_PIN2)<br /> <br /> <br /> <br />        #define KB_PORT_OUT                 PORTB<br />        #define KB_PORT_IN                  PINB<br /> <br /> <br />        void USART_Init( unsigned int baud )<br />        {<br />        /* Set baud rate */<br />        UBRRH = (unsigned char)(baud&gt;&gt;8);<br />        UBRRL = (unsigned char)baud;<br />        /* Enable receiver and transmitter */<br />        UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />        /* Set frame format: 8data, 2stop bit */<br />        UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />        }<br /> <br /> <br />        void USART_Transmit( unsigned char data )<br />        {<br />        /* Wait for empty transmit buffer */<br />        while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />        ;<br />        /* Put data into buffer, sends the data */<br />        UDR = data;<br />        }<br /> <br /> <br /> <br />        //*********************************************************<br /> <br />        void port_init(void)<br />        {<br />         DDRB  = 0x00;<br />         PORTB = 0x00;<br />         DDRB  = 0x0f;          //Port klawiatury - stan niski wyjście , wysoki wejście<br />         PORTB = 0xff;          //właczenie pul-up<br /> <br />        }<br /> <br /> <br />        //Procedura inicjalizacji peryferi<br />        void init_devices(void)<br />        {<br />         port_init();<br /> <br /> <br />         MCUCR = 0x00;<br />         TIMSK = 0x00; //Timer - generowanie przerwania<br />         }<br /> <br /> <br />         int main(void)<br />        {<br />           unsigned char upperNibble, keyCode, i;<br />           uint8_t keyPressed = 0;<br />           init_devices();<br />        USART_Init(MYUBRR);<br />           while(1)<br />           {<br />                upperNibble = 0xff;<br /> <br />                        for(i=0; i&lt;4; i++)<br />                    {<br />                         _delay_ms(1);<br />                         KB_PORT_OUT = ~(0x01 &lt;&lt; i);<br />                         _delay_ms(1);                                            //Opóźnienie<br />                         upperNibble = KB_PORT_IN | 0x0f;<br /> <br />                         if (upperNibble != 0xff)<br />                         {<br />                           _delay_ms(20);                                //Opóźnienie  dla niwelacji drgań<br />                       upperNibble = KB_PORT_IN | 0x0f;<br />                           if(upperNibble == 0xff) goto OUT;<br /> <br />                           keyCode = (upperNibble &amp; 0xf0) | (0x0f &amp; ~(0x01 &lt;&lt; i));<br /> <br />                           while (upperNibble != 0xff)<br />                             upperNibble = KB_PORT_IN | 0x0f;<br /> <br />                           _delay_ms(20);                          //opóźnienie dla niwelacji drgań<br /> <br />                           switch (keyCode)                        //Znaki wyświetlane na LCD<br />                           {<br />                                case (0xee): keyPressed = 0;<br />                                                         break;<br />                                case (0xed): keyPressed = 1;<br />                                                         break;<br />                                case (0xeb): keyPressed = 2;<br />                                                         break;<br />                                case (0xe7): keyPressed = 3;<br />                                                         break;<br />                                case (0xde): keyPressed = 4;<br />                                                         break;<br />                                case (0xdd): keyPressed = 5;<br />                                                         break;<br />                                case (0xdb): keyPressed = 6;<br />                                                         break;<br />                                case (0xd7): keyPressed = 7;<br />                                                         break;<br />                                case (0xbe): keyPressed = 8;<br />                                                         break;<br />                                case (0xbd): keyPressed = 9;<br />                                                         break;<br />                                case (0xbb): keyPressed = 10;<br />                                                         break;<br />                                case (0xb7): keyPressed = 11;<br />                                                         break;<br />                                case (0x7e): keyPressed = 12;<br />                                                         break;<br />                                case (0x7d): keyPressed = 13;<br />                                                         break;<br />                                case (0x7b): keyPressed = 14;<br />                                                         break;<br />                                case (0x77): keyPressed = 15;<br />                                                         break;<br />                                default    : keyPressed = 16;<br />                                                         break;<br />                            }//Koniec klawiszy --<br /> <br />                           USART_Transmit(keyPressed);<br /> <br />                           OUT:;<br />                          }//koniec if-a -jakby ktoś szukał<br />                        }//koniec for-ki  - tak to tutaj<br />                }//koniec while1 -- no wreszcie<br /> <br />                return 0;<br />        }[/syntax]<br /><br />a to odbiornika:<br />[syntax=c]/*<br /> * sas.c<br /> *<br /> *  Created on: 16-06-2014<br /> *      Author: Maciej<br /> */<br /> <br /> <br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br />#define LCD_INIT  LCD_Initalize();<br /> <br /> <br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br /> <br />void USART_Init( unsigned int ubrr)<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />UBRRL = (unsigned char)ubrr;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /> <br />unsigned char USART_Receive( void )<br />{<br />/* Wait for data to be received */<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) )<br />;<br />/* Get and return received data from buffer */<br />return UDR;<br />}<br /> <br />int main(void){<br />unsigned char x= '0';<br /> <br />LCD_INIT;<br />USART_Init(MYUBRR);<br />USART_Receive();<br />unsigned char gg&#91;1&#93;;<br /> <br />        while(1){<br />                x = USART_Receive();<br />                unsigned char USART_Receive( void );<br />                void LCD_Clear(void);<br /> <br />                itoa(x,gg,10);<br />                LCD_GoTo(8, 0);<br />                LCD_WriteText(gg);<br /> <br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maciej2014]]></name></author>
<updated>2014-06-27T18:36:26+01:00</updated>
<published>2014-06-27T18:36:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85936#p85936</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85936#p85936"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85936#p85936"><![CDATA[
wcześniej (przed podpięciem klawiatury) wysyłałem zmienne w zakresie 0-255 i było ok<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2855">maciej2014</a> — 27 cze 2014, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T17:35:30+01:00</updated>
<published>2014-06-27T17:35:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85916#p85916</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85916#p85916"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85916#p85916"><![CDATA[
a spróbuj wysłać jakaś literke w nadajniku. np. a, wtedy wszystko gra?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 17:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2014-06-27T17:35:01+01:00</updated>
<published>2014-06-27T17:35:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85915#p85915</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85915#p85915"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85915#p85915"><![CDATA[
A skąd masz bibliotekę do lcd? Z książki czy jakąś z neta?<br />Jeśli z neta to podaj ciało funkcji LCD_WriteText(x);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 27 cze 2014, o 17:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maciej2014]]></name></author>
<updated>2014-06-27T17:25:58+01:00</updated>
<published>2014-06-27T17:25:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85913#p85913</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85913#p85913"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85913#p85913"><![CDATA[
Niestety nie pomogło... po wciśnięciu klawiszy wyskakują dziwne znaki....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2855">maciej2014</a> — 27 cze 2014, o 17:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T17:21:07+01:00</updated>
<published>2014-06-27T17:21:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85912#p85912</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85912#p85912"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85912#p85912"><![CDATA[
A spróbuj tak:<br /><br />[syntax=c]/*<br /> * sas.c<br /> *<br /> *  Created on: 16-06-2014<br /> *      Author: Maciej<br /> */<br /> <br /> <br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br />#define LCD_INIT  LCD_Initalize();<br /> <br /> <br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br /> <br />void USART_Init( unsigned int ubrr)<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />UBRRL = (unsigned char)ubrr;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /> <br />unsigned char USART_Receive( void )<br />{<br />/* Wait for data to be received */<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) )<br />;<br />/* Get and return received data from buffer */<br />return UDR;<br />}<br /> <br />int main(void){<br />unsigned char x= '0';<br /> <br />LCD_INIT;<br />USART_Init(MYUBRR);<br />USART_Receive();<br /><br /> <br />        while(1){<br />                x = USART_Receive();<br />                unsigned char USART_Receive( void );<br />                void LCD_Clear(void);<br /> <br />         <br />                LCD_GoTo(8, 0);<br />                LCD_WriteText(x);<br /> <br />        }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 17:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maciej2014]]></name></author>
<updated>2014-06-27T17:13:00+01:00</updated>
<published>2014-06-27T17:13:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85911#p85911</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85911#p85911"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85911#p85911"><![CDATA[
Oto kod &quot;odbiornika&quot;<br /><br />[syntax=c]/*<br /> * sas.c<br /> *<br /> *  Created on: 16-06-2014<br /> *      Author: Maciej<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &quot;HD44780.h&quot;<br />#define LCD_INIT  LCD_Initalize();<br /><br /><br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br /><br />void USART_Init( unsigned int ubrr)<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(ubrr&gt;&gt;8);<br />UBRRL = (unsigned char)ubrr;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /><br />unsigned char USART_Receive( void )<br />{<br />/* Wait for data to be received */<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) )<br />;<br />/* Get and return received data from buffer */<br />return UDR;<br />}<br /><br />int main(void){<br />unsigned char x= '0';<br /><br />LCD_INIT;<br />USART_Init(MYUBRR);<br />USART_Receive();<br />unsigned char gg&#91;1&#93;;<br /><br />while(1){<br />x = USART_Receive();<br />unsigned char USART_Receive( void );<br />void LCD_Clear(void);<br /><br />itoa(x,gg,10);<br />LCD_GoTo(8, 0);<br />LCD_WriteText(gg);<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2855">maciej2014</a> — 27 cze 2014, o 17:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T16:59:50+01:00</updated>
<published>2014-06-27T16:59:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85909#p85909</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85909#p85909"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85909#p85909"><![CDATA[
Rozumiem, że wysyłasz to po UART do innego procka, a z niego do LCD? jeżeli tak to pokaż procedurę wyświetlania znaku na LCD z drugiego procka. Podejrzewam co jest nie tak ale muszę zobaczyć kod by się upewnić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 16:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maciej2014]]></name></author>
<updated>2014-06-27T16:28:51+01:00</updated>
<published>2014-06-27T16:28:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85907#p85907</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85907#p85907"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85907#p85907"><![CDATA[
Zrobiłem tak jak kolega w podanym linku. Klawiatura działa, z tym że po wciśnięciu klawisza 1 na lcd widnieje 48, po wciśnięciu 2 wyskakuje 49 itd, aż do klawisza 9, kiedy to pojawia się 65. Co znów zrobiłem źle ?<br />Wrzucam kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define FOSC 1843200// Clock Speed<br />#define BAUD 9600<br />#define MYUBRR FOSC/16/BAUD-1<br />#define KEY_PIN2 (1&lt;&lt;PD6)<br />#define KEY_DOWN2 (PIND &amp; KEY_PIN2)<br /><br /><br /><br />#define KB_PORT_OUT                 PORTB<br />#define KB_PORT_IN                  PINB<br /><br /><br />void USART_Init( unsigned int baud )<br />{<br />/* Set baud rate */<br />UBRRH = (unsigned char)(baud&gt;&gt;8);<br />UBRRL = (unsigned char)baud;<br />/* Enable receiver and transmitter */<br />UCSRB = (1&lt;&lt;RXEN)|(1&lt;&lt;TXEN);<br />/* Set frame format: 8data, 2stop bit */<br />UCSRC = (1&lt;&lt;URSEL)|(1&lt;&lt;USBS)|(3&lt;&lt;UCSZ0);<br />}<br /><br /><br />void USART_Transmit( unsigned char data )<br />{<br />/* Wait for empty transmit buffer */<br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) )<br />;<br />/* Put data into buffer, sends the data */<br />UDR = data;<br />}<br /><br /><br /><br />//*********************************************************<br /><br />void port_init(void)<br />{<br /> DDRB  = 0x00;<br /> PORTB = 0x00;<br /> DDRB  = 0x0f;          //Port klawiatury - stan niski wyjście , wysoki wejście<br /> PORTB = 0xff;          //właczenie pul-up<br /><br />}<br /><br /><br />//Procedura inicjalizacji peryferi<br />void init_devices(void)<br />{<br /> port_init();<br /><br /><br /> MCUCR = 0x00;<br /> TIMSK = 0x00; //Timer - generowanie przerwania<br /> }<br /><br /><br /> int main(void)<br />{<br />   unsigned char upperNibble, keyCode, keyPressed, i;<br />   init_devices();<br />USART_Init(MYUBRR);<br />   while(1)<br />   {<br />        upperNibble = 0xff;<br /><br />                for(i=0; i&lt;4; i++)<br />            {<br />                 _delay_ms(1);<br />                 KB_PORT_OUT = ~(0x01 &lt;&lt; i);<br />                 _delay_ms(1);                                            //Opóźnienie<br />                 upperNibble = KB_PORT_IN | 0x0f;<br /><br />                 if (upperNibble != 0xff)<br />                 {<br />                   _delay_ms(20);                                //Opóźnienie  dla niwelacji drgań<br />               upperNibble = KB_PORT_IN | 0x0f;<br />                   if(upperNibble == 0xff) goto OUT;<br /><br />                   keyCode = (upperNibble &amp; 0xf0) | (0x0f &amp; ~(0x01 &lt;&lt; i));<br /><br />                   while (upperNibble != 0xff)<br />                     upperNibble = KB_PORT_IN | 0x0f;<br /><br />                   _delay_ms(20);                          //opóźnienie dla niwelacji drgań<br /><br />                   switch (keyCode)                        //Znaki wyświetlane na LCD<br />                   {<br />                        case (0xee): keyPressed = '0';<br />                                                 break;<br />                        case (0xed): keyPressed = '1';<br />                                                 break;<br />                        case (0xeb): keyPressed = '2';<br />                                                 break;<br />                        case (0xe7): keyPressed = '3';<br />                                                 break;<br />                        case (0xde): keyPressed = '4';<br />                                                 break;<br />                        case (0xdd): keyPressed = '5';<br />                                                 break;<br />                        case (0xdb): keyPressed = '6';<br />                                                 break;<br />                        case (0xd7): keyPressed = '7';<br />                                                 break;<br />                        case (0xbe): keyPressed = '8';<br />                                                 break;<br />                        case (0xbd): keyPressed = '9';<br />                                                 break;<br />                        case (0xbb): keyPressed = 'A';<br />                                                 break;<br />                        case (0xb7): keyPressed = 'B';<br />                                                 break;<br />                        case (0x7e): keyPressed = 'C';<br />                                                 break;<br />                        case (0x7d): keyPressed = 'D';<br />                                                 break;<br />                        case (0x7b): keyPressed = 'E';<br />                                                 break;<br />                        case (0x77): keyPressed = 'F';<br />                                                 break;<br />                        default    : keyPressed = 'X';<br />                                                 break;<br />                    }//Koniec klawiszy --<br /><br />                   USART_Transmit(keyPressed);<br /><br />                   OUT:;<br />                  }//koniec if-a -jakby ktoś szukał<br />                }//koniec for-ki  - tak to tutaj<br />        }//koniec while1 -- no wreszcie<br /><br />        return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2855">maciej2014</a> — 27 cze 2014, o 16:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T15:36:34+01:00</updated>
<published>2014-06-27T15:36:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85903#p85903</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85903#p85903"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85903#p85903"><![CDATA[
<div class="quotetitle">perlon napisał(a):</div><div class="quotecontent"><br />Poszukaj w sieci hasło &quot;klawiatura matrycowa&quot;. Obsługa jej z grubsza polega na cyklicznym podawaniu stanu niskiego na kolejne wiersze i sprawdzaniu na której kolumnie stan niski się pojawi. Oczywiście sterowanie stanem niskim czy wysokim zależy od konkretnej implementacji. Jedną komendą tego się nie opędzi.<br /></div><br /><br />Przecież podałem Koledze link do gotowego opisu i biblioteki do obsługi takiej klawiatury więc nie widze celu błedzenia po sieci skoro na forum dużo razy temat ten był poruszany i dobrze opisany.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 15:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[perlon]]></name></author>
<updated>2014-06-27T15:24:56+01:00</updated>
<published>2014-06-27T15:24:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85901#p85901</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85901#p85901"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85901#p85901"><![CDATA[
Poszukaj w sieci hasło &quot;klawiatura matrycowa&quot;. Obsługa jej z grubsza polega na cyklicznym podawaniu stanu niskiego na kolejne wiersze i sprawdzaniu na której kolumnie stan niski się pojawi. Oczywiście sterowanie stanem niskim czy wysokim zależy od konkretnej implementacji. Jedną komendą tego się nie opędzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=382">perlon</a> — 27 cze 2014, o 15:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nefarious19]]></name></author>
<updated>2014-06-27T15:17:23+01:00</updated>
<published>2014-06-27T15:17:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85900#p85900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85900#p85900"/>
<title type="html"><![CDATA[Re: Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85900#p85900"><![CDATA[
Cóż, w tym wątku <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic814.html" >topic814.html</a><!-- l --> Kolega <strong> <span style="color: #00BF00">SunRiver</span></strong> opisał obsługę takiej klawiatury. Ale proponowałbym Ci zacząć naukę języka C od tej książki:<br /><br /><a href="http://www.atnel.pl/mikrokontrolery-avr-jezyk-c.html"  class="postlink">BlueBook</a><br /><br /><br /> Nie ma czegoś takiego jak jedna komenda która robi jedną jakąś czynność. Trzeba sobie napisać program, zbiór pewnych wyrażeń i &quot;komend&quot; które po kompilacji i wgraniu do procesora dadzą efekt w postaci np. migania diodą.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2500">Nefarious19</a> — 27 cze 2014, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maciej2014]]></name></author>
<updated>2014-06-27T15:01:56+01:00</updated>
<published>2014-06-27T15:01:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85898#p85898</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85898#p85898"/>
<title type="html"><![CDATA[Komenda rozpoznająca zwarcie jednej nóżki z drugą]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7580&amp;p=85898#p85898"><![CDATA[
Witam,<br />czy jest jakaś komenda która rozpoznaje która nóżka zwarta jest z którą ? Potrzebne mi jest to do klawiatury membranowej, która działa na zasadzie krzyżowania linii (posiada 4 linie pionowe i 4 poziome i np. skrzyżowanie pierwszej linii pionowej z pierwszą poziomą to przycisk 1). W klawiaturze tej nie ma gdzie doprowadzić stanów wysokich. Jak można ją obsłużyć ? Czy są jakieś specjalne komendy ?<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2855">maciej2014</a> — 27 cze 2014, o 15:01</p><hr />
]]></content>
</entry>
</feed>