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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-26T16:36:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11491&amp;mode</id>
<entry>
<author><name><![CDATA[Ormmwar]]></name></author>
<updated>2015-04-26T16:36:06+01:00</updated>
<published>2015-04-26T16:36:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11491&amp;p=127522#p127522</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11491&amp;p=127522#p127522"/>
<title type="html"><![CDATA[Re: Zamiana ciągu cyfr z klawiatury na liczbę w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11491&amp;p=127522#p127522"><![CDATA[
Rozumiem, obejrzałem artykuł ale tam nie widzę nigdzie tej zamiany, LCD dam sobie radę obsłużyć, klawiaturę mi normalnie sczytuje tylko właśnie strumienia znaków nie mogę zamienić na jedną liczbę. Zaraz spróbuję przetestować funkcję &quot;atoi&quot; i zobaczę co z tego będzie.<br /><br />Z kolei po takim wywołaniu funkcji LCD_WriteText() jak nic nie robię jest A a jak cokolwiek wcisnę to milion krzaków, nie wiem czy o to chodziło.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8673">Ormmwar</a> — 26 kwi 2015, o 16:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ormmwar]]></name></author>
<updated>2015-04-25T22:01:22+01:00</updated>
<published>2015-04-25T22:01:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11491&amp;p=127475#p127475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11491&amp;p=127475#p127475"/>
<title type="html"><![CDATA[Zamiana ciągu cyfr z klawiatury na liczbę w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11491&amp;p=127475#p127475"><![CDATA[
Witam!<br /> Mam problem z zamianą znaków odczytanych z klawiatury 4x4 na ciąg. Robię to w celu stworzenia kalkulatora, wszystko ma być wyświetlane na LCD. Utknąłem właśnie na tej nieszczęsnej zamianie, nie do końca wiem nawet jak to się nazywa a tym bardziej jak to ustawić. Pod frazą &quot;zamiana ciągu cyfr na liczbę&quot; nic ciekawego nie znalazłem. Dopóki tego nie zrealizuję nie ma mowy o pisaniu dalszej części programu, dlatego zgłaszam się tutaj licząc na pomoc i wyjaśnienie co i jak.<br /><br />I pytanie dodatkowe: Dlaczego jak próbuję wyświetlić znak na LCD komendą LCD_WriteText to pojawiają się same krzaki zamiast oczekiwanej 3 czy na przykład 4?<br /><br />Aktualny kod:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &quot;Biblioteki/LCD44780/HD44780.h&quot;<br /><br />#define KB_PORT PORTB<br />#define KB_DIR  DDRB<br />#define KB_PIN  PINB<br /><br />char KbScan(void);<br />char zamiana(void);<br /><br />int main(void)     //FUNKCJA GŁÓWNA<br />{<br />DDRA = 0xff;<br />LCD_Initalize();<br />LCD_Clear();<br />while(1)<br />{<br />LCD_Clear();<br />LCD_WriteData(zamiana());<br />_delay_ms(20);<br />}<br />}<br /><br />char KbScan(void)         //SKANOWANIE KLAWIATURY<br />{<br />char result = 0;<br />KB_DIR =  0b00010000; //tylko kolumna C0 na wyjście<br />KB_PORT = 0b11101111; //wymuszenie zera<br />_delay_us(2);<br />if((KB_PIN &amp; 0x01)==0) result = 12;<br />if((KB_PIN &amp; 0x02)==0) result = 11;<br />if((KB_PIN &amp; 0x04)==0) result = 4;<br />if((KB_PIN &amp; 0x08)==0) result = 3;<br />KB_DIR =  0b00100000; //tylko kolumna C1 na wyjście<br />KB_PORT = 0b11011111; //wymuszenie zera<br />_delay_us(2);<br />if((KB_PIN &amp; 0x01)==0) result = 14;<br />if((KB_PIN &amp; 0x02)==0) result = 13;<br />if((KB_PIN &amp; 0x04)==0) result = 6;<br />if((KB_PIN &amp; 0x08)==0) result = 5;<br />KB_DIR =  0b01000000; //tylko kolumna C2 na wyjście<br />KB_PORT = 0b10111111; //wymuszenie zera<br />_delay_us(2);<br />if((KB_PIN &amp; 0x01)==0) result = 16;<br />if((KB_PIN &amp; 0x02)==0) result = 15;<br />if((KB_PIN &amp; 0x04)==0) result = 8;<br />if((KB_PIN &amp; 0x08)==0) result = 7;<br />KB_DIR =  0b10000000; //tylko kolumna C3 na wyjście<br />KB_PORT = 0b01111111; //wymuszenie zera<br />_delay_us(2);<br />if((KB_PIN &amp; 0x01)==0) result = 18;<br />if((KB_PIN &amp; 0x02)==0) result = 17;<br />if((KB_PIN &amp; 0x04)==0) result = 10;<br />if((KB_PIN &amp; 0x08)==0) result = 9;<br />KB_PORT = 0xff;<br />return result;<br />}<br /><br />char zamiana(void)       //ZAMIANA KLAWISZY NA ZNAKI HEX<br />{<br />char klawisz = 0;<br />if(KbScan() == 3) klawisz = 0x30;<br />if(KbScan() == 4) klawisz = 0x31;<br />if(KbScan() == 5) klawisz = 0x32;<br />if(KbScan() == 6) klawisz = 0x33;<br />if(KbScan() == 7) klawisz = 0x34;<br />if(KbScan() == 8) klawisz = 0x35;<br />if(KbScan() == 9) klawisz = 0x36;<br />if(KbScan() == 10) klawisz = 0x37;<br />if(KbScan() == 11) klawisz = 0x38;<br />if(KbScan() == 12) klawisz = 0x39;<br />if(KbScan() == 13) klawisz = 0x41;<br />if(KbScan() == 14) klawisz = 0x42;<br />if(KbScan() == 15) klawisz = 0x43;<br />if(KbScan() == 16) klawisz = 0x44;<br />if(KbScan() == 17) klawisz = 0x45;<br />if(KbScan() == 18) klawisz = 0x46;<br />return klawisz;<br />}[/syntax]<br />W trakcie próby wyświetlenia znaku w taki sposób:<br />[syntax=c]LCD_WriteText(KbScan());[/syntax]<br />Otrzymuję krzaki, natomiast w taki sposób:<br />[syntax=c]LCD_WriteData(zamiana());[/syntax]<br />Krzak jest cały czas dopóki czegoś nie wcisnę,a po puszczeniu znowu wraca.<br /><br />A co do tego, że program napisany jest beznadziejnie to nie mam żadnych wątpliwości  <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8673">Ormmwar</a> — 25 kwi 2015, o 22:01</p><hr />
]]></content>
</entry>
</feed>