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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-10-06T09:49:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=21374&amp;mode</id>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2018-10-06T09:49:18+01:00</updated>
<published>2018-10-06T09:49:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212332#p212332</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212332#p212332"/>
<title type="html"><![CDATA[Re: Rozbicie duzej liczby na cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212332#p212332"><![CDATA[
Absolutna racja, że podejście nie jest zbyt dobre i jest wiele lepszych możliwości, zastanawiało mnie skąd było to 71. Ostatecznie użyłem funkcji ltoa   <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=499">k_mirek</a> — 6 paź 2018, o 09:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-10-06T09:12:45+01:00</updated>
<published>2018-10-06T09:12:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212327#p212327</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212327#p212327"/>
<title type="html"><![CDATA[Re: Rozbicie duzej liczby na cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212327#p212327"><![CDATA[
[syntax=c]uint8_t cyfry&#91;6&#93;;<br />int liczba = 123456;<br />uint8_t i = 0;<br /><br />while( liczba &gt; 0 ){<br />   cyfry&#91; i &#93; = liczba % 10;<br />   liczba = liczba / 10;<br />   i++;<br />}[/syntax]<br /><br />i masz w tablicy wszystkie cyfry - wyświetlasz je jak chcesz<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Panowie w Bluebooku pokazałem taki sposób z tym dzieleniem w KAŻDEJ linii no TYLKO po to, żeby zrozumieć jak to działa, jak do tego podchodzić na procku, ale teraz czas na programowanie, pisanie kodu ... tak jak np ten który pokazałem, choć to też tylko przykład - można napisać w ogóle uniwersalną funkcję dla dowolnie długiej liczby.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 paź 2018, o 09:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jony15]]></name></author>
<updated>2018-10-06T08:34:09+01:00</updated>
<published>2018-10-06T08:34:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212323#p212323</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212323#p212323"/>
<title type="html"><![CDATA[Re: Rozbicie duzej liczby na cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212323#p212323"><![CDATA[
Jedyne co mi przychodzi na myśl o wyświetlaniu liczby to rozbicie na pojedyncze znaki poprzez dzielenie i reszta z dzielenia. Np:dla liczby do 934<br />1 - sprawdzasz czy liczba jest większa lub równa 100 i mniejsza od 1000<br />2 - dzielisz przez 100 w wyniku otrzymujesz 9 (cyfra/100)<br />3 - resztę z dzielenia przez 100 dzielisz przez 10 w wyniku cyfra 3 ((cyfra%100)/10)<br />4 - reszta dzielenia przez 100 znowu reszta dzielenia przez 10  i otrzymujesz ostatnia cyfre 4 ((cyfra%100)%10)<br />poniżej trochę kodu, rozbicia liczby uint16_t. W twoim przypadku trochę będziesz miał zabawy z dużymi liczbami ( kiedyś próbowałem w ten sposób wyświetlić uint32_t ), ale temat do przeskoczenia.<br /><br />[syntax=c]//wyswietlenie zmiennej 16 bitowej dec<br />void see_uint16_dec(volatile uint16_t *data){<br />if (*data &gt; 10000) {<br />lcd_char((*data / 10000) + '0');<br />lcd_char(((*data % 10000) / 1000) + '0');<br />lcd_char((((*data % 10000) % 1000) / 100) + '0');<br />lcd_char(((((*data % 10000) % 1000) % 100) / 10) + '0');<br />lcd_char(((((*data % 10000) % 1000) % 100) % 10) + '0');<br />} else if ((*data &gt;= 1000) &amp; (*data &lt; 10000)) {<br />lcd_char(((*data) / 1000) + '0');<br />lcd_char((((*data) % 1000) / 100) + '0');<br />lcd_char(((((*data) % 1000) % 100) / 10) + '0');<br />lcd_char(((((*data) % 1000) % 100) % 10) + '0');<br />} else if ((*data &gt;= 100) &amp; (*data &lt; 1000)) {<br />lcd_char(((*data) / 100) + '0');<br />lcd_char((((*data) % 100) / 10) + '0');<br />lcd_char((((*data) % 100) % 10) + '0');<br />} else if ((*data &gt;= 10) &amp; (*data &lt; 100)) {<br />lcd_char(((*data) / 10) + '0');<br />lcd_char(((*data) % 10) + '0');<br />} else if (*data &lt; 10) {<br />lcd_char((*data) + '0');<br />}<br />}//see_uint16[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2183">jony15</a> — 6 paź 2018, o 08:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tprzemko]]></name></author>
<updated>2018-10-06T06:43:58+01:00</updated>
<published>2018-10-06T06:43:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212319#p212319</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212319#p212319"/>
<title type="html"><![CDATA[Re: Rozbicie duzej liczby na cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212319#p212319"><![CDATA[
Witam<br />Nie chcę się mądrować, ale takich żeczy się tak nie robi, chyba że dla sportu. Próbowałeś dzielić przez 10 i resztę z dzielenia badać?<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4743">tprzemko</a> — 6 paź 2018, o 06:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[k_mirek]]></name></author>
<updated>2018-10-05T21:27:04+01:00</updated>
<published>2018-10-05T21:27:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212309#p212309</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212309#p212309"/>
<title type="html"><![CDATA[Rozbicie duzej liczby na cyfry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21374&amp;p=212309#p212309"><![CDATA[
Witam wszystkich.<br /><br />Postanowiłem sobie napisać własną, na moje potrzeby bibliotekę dla 8x7seg z MAX7219. Wszystko szło zgodnie z założeniami, do czasu kiedy zabrałem się za rozbijanie liczby na pojedyncze cyfry. Maksymalna wartość to 99999999. <br />[syntax=c]void max7219_send_int32(uint64_t number ){<br /><br /><br />uint8_t dig0, dig1, dig2, dig3, dig4, dig5, dig6, dig7;<br /><br />max7219_cls();<br /><br />//if(number&gt;99999999){<br />//max7219_send(DIGIT_0, CHAR_E);<br />//return;<br />//}<br /><br />dig7 = number / 10000000;<br />if( dig7 ) max7219_send(DIGIT_7, dig7);<br />else if(number&gt;9999999) max7219_send(DIGIT_7, 0); else max7219_send(DIGIT_7, BLANK);<br />lcd_locate(0,0); lcd_int(dig7);<br /><br />dig6 = ( number - (dig7 * 10000000) ) / 1000000;<br />if( dig6 ) max7219_send(DIGIT_6, dig6);<br />else if(number&gt;999999 ) max7219_send(DIGIT_6, 0); else max7219_send(DIGIT_6, BLANK);<br />lcd_locate(0,3); lcd_int(dig6);<br /><br />dig5 = ( number - (dig7 * 10000000)- (dig6 * 1000000) ) / 100000;<br />if( dig5 ) max7219_send(DIGIT_5, dig5);<br />else if(number&gt;99999  ) max7219_send(DIGIT_5, 0); else max7219_send(DIGIT_5, BLANK);<br />lcd_locate(0,6); lcd_int(dig5);<br /><br />dig4 = ( number - (dig7 * 10000000)- (dig6 * 1000000) - (dig5 * 100000) ) / 10000;<br />if( dig4 ) max7219_send(DIGIT_4, dig4);<br />else if(number&gt;9999   ) max7219_send(DIGIT_4, 0); else max7219_send(DIGIT_4, BLANK);<br />lcd_locate(0,9); lcd_int(dig4);<br /><br />dig3 = ( number - (dig7 * 10000000)- (dig6 * 1000000) - (dig5 * 100000) - (dig4 * 10000) ) / 1000;<br />if( dig3 ) max7219_send(DIGIT_3, dig3);<br />else if(number&gt;999    ) max7219_send(DIGIT_3, 0); else max7219_send(DIGIT_3, BLANK);<br />lcd_locate(1,0); lcd_int(dig3);<br /><br />dig2 = ( number - (dig7 * 10000000)- (dig6 * 1000000) - (dig5 * 100000) - (dig4 * 10000)-(dig3*1000) ) / 100;<br />if( dig2 ) max7219_send(DIGIT_2, dig2);<br />else if(number&gt;99     ) max7219_send(DIGIT_2, 0); else max7219_send(DIGIT_2, BLANK);<br />lcd_locate(1,3); lcd_int(dig2);<br /><br />dig1 = ( number - (dig7 * 10000000)- (dig6 * 1000000) - (dig5 * 100000) - (dig4 * 10000) - (dig3 * 1000) - (dig2 *100 ) ) / 10;<br />if( dig1 ) max7219_send(DIGIT_1, dig1);<br />else if(number&gt;9      ) max7219_send(DIGIT_1, 0); else max7219_send(DIGIT_1, BLANK);<br />lcd_locate(1,6); lcd_int(dig1);<br /><br />dig0 = ( number - (dig7 * 10000000)- (dig6 * 1000000) - (dig5 * 100000) - (dig4 * 10000) - (dig3 * 1000) - (dig2 *100 ) - (dig1 * 10) );<br />if( dig0 ) max7219_send(DIGIT_0, dig0);<br />else if(number&gt;9) max7219_send(DIGIT_0, 0); else max7219_send(DIGIT_0, BLANK);<br />lcd_locate(1,9); lcd_int(dig0);<br />}[/syntax]<br /><br />Dla liczby 12345678 cyfry dig7-dig4, czyli 1234 sa obliczane prawidłowo, problem jest przy dig3 ktora wynos 71...  nie wiem już co robię nie tak, i gdzie popełniam błąd. <br /><br />Pomocy!!!<br />Pozdrawiam <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=499">k_mirek</a> — 5 paź 2018, o 21:27</p><hr />
]]></content>
</entry>
</feed>