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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-11-26T13:44:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=47&amp;t=16909&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2016-11-26T11:10:15+01:00</updated>
<published>2016-11-26T11:10:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175690#p175690</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175690#p175690"/>
<title type="html"><![CDATA[Re: Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175690#p175690"><![CDATA[
Niech kolega rewelacyjnie poprawi  listing w 1  poście ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 26 lis 2016, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tommot]]></name></author>
<updated>2016-11-26T07:02:55+01:00</updated>
<published>2016-11-26T07:02:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175684#p175684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175684#p175684"/>
<title type="html"><![CDATA[Re: Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175684#p175684"><![CDATA[
Rewelacyjne opisanie problemu ... właśnie tego mi brakowało <br />Dziękuje Panowie za wyczerpujące rozwiązanie problemu<br />Pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15541">tommot</a> — 26 lis 2016, o 07:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Alef2]]></name></author>
<updated>2016-11-26T01:48:46+01:00</updated>
<published>2016-11-26T01:48:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175682#p175682</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175682#p175682"/>
<title type="html"><![CDATA[Re: Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175682#p175682"><![CDATA[
Problem jest w działaniu  (cyfra1 * 10000). Ponieważ cyfra1 jest typu int, to całe wyrażenie też jest typu int. Gdy cyfra1=3, nie ma problemu, bo wartość wyrażenia (cyfra1 * 10000) wynosi 30000 i miesci sie w zakresie int, tzn od -32,768 to 32,767. Ale gdy cyfra1=4, to wyrażenie (cyfra1 * 10000) ma wartość 40000 i jest poza zakresem.<br />A dokładnie, to wyrażenie jest obliczane i ma wartość 40000, ale jest konwertowane do typu int i ma wartość ujemną (-25536).<br />Zmiana typu z int cyfra1 = 0; na unsigned int cyfra1 = 0; rozwiązuje problem (przynajmniej dla 40000).<br />Poza tym ten algorytm jest mało efektywny, bo wielokrotnie powtarza te same operacje. Propozycja kolegi evill jest dużo lepsza. Mogłoby wyglądać to tak<br />[syntax=cpp]unsigned int licz;<br />  licz=liczba;<br />  cyfra5=licz%10;licz=licz/10; <br />  cyfra4=licz%10;licz=licz/10; <br />  cyfra3=licz%10;licz=licz/10; <br />  cyfra2=licz%10;licz=licz/10; <br />  cyfra1=licz%10;licz=licz/10; <br />  cyfra0=licz;[/syntax]<br /><br /><div class="quotetitle">sq5rix napisał(a):</div><div class="quotecontent"><br />Nie używamy float w mikrokontrolerach. Wyskakujesz działaniem poza zakresy liczb int chyba na moje oko...<br /></div><br />Słuszna uwaga i dobre oko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14998">Alef2</a> — 26 lis 2016, o 01:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2016-11-25T23:21:32+01:00</updated>
<published>2016-11-25T23:21:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175674#p175674</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175674#p175674"/>
<title type="html"><![CDATA[Re: Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175674#p175674"><![CDATA[
Nie używamy float w mikrokontrolerach. Dlatego nie ma jak pomóc <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br />Wyskakujesz działaniem poza zakresy liczb int chyba na moje oko...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 25 lis 2016, o 23:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tommot]]></name></author>
<updated>2016-11-25T23:05:15+01:00</updated>
<published>2016-11-25T23:05:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175668#p175668</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175668#p175668"/>
<title type="html"><![CDATA[Re: Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175668#p175668"><![CDATA[
<div class="quotetitle">evill napisał(a):</div><div class="quotecontent"><br />Popatrz 40000/100000 daje 0.4<br />Wydaje mi się że masz za dużo o jedno 0, analogicznie dalej w kodzie przewija się ten sam błą<br /></div><br /><br />Wydaje mi się że tak być powinno 0.4 ma wychodzić bo jest to 6 miejsce które 040000 ma być jeszcze zerem w zmiennej int cyfra0 zostanie umieszczone 0 a nie 0.4 czyli poprawnie<br />Gdy liczba będzie 100000 w tedy zmienna cyfra0 wypełni 1<br />Problem myślę jest bardziej złożony bo jak pisałem wcześniej każda liczba od 0 do 39999 wyświetla się poprawnie<br /><br />Przepraszam ale nie umiem zastosować twojego przykładu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15541">tommot</a> — 25 lis 2016, o 23:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[evill]]></name></author>
<updated>2016-11-25T22:20:14+01:00</updated>
<published>2016-11-25T22:20:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175658#p175658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175658#p175658"/>
<title type="html"><![CDATA[Re: Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175658#p175658"><![CDATA[
[syntax=cpp]cyfra0 = liczba / 100000;[/syntax]<br /><br />Popatrz 40000/100000 daje 0.4<br />Wydaje mi się że masz za dużo o jedno 0, analogicznie dalej w kodzie przewija się ten sam błą<br /><br /><br />Jeśli chodzi o dzieleni, spróbuj z modulo i dzieleniem przez 10 (myślę że tak jest prościej, a i o pętelkę można się pokusić), np tak :<br /><br />[syntax=cpp]cyfra0=liczba%10;<br />liczba=liczba/10;[/syntax]<br /><br />Pamiętaj, jednak że liczba musi być typem int.<br />Jakbyś nie wiedział za co odpowiedzialne jest modulo zapraszam do jednego z ostatnich poradników p. Mirka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7409">evill</a> — 25 lis 2016, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tommot]]></name></author>
<updated>2016-11-26T13:44:49+01:00</updated>
<published>2016-11-25T20:19:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175647#p175647</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175647#p175647"/>
<title type="html"><![CDATA[Arduino problem z zmiennymi poczatkujacy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16909&amp;p=175647#p175647"><![CDATA[
Witam wszystkich  <br />Jestem nowy i prosił bym o wyrozumiałość ponieważ dopiero zaczynam z arduino jak i z C++ .<br />Używam eclipse neon arduino ( 2 dni walki z instalkami) dla czego ?  orginalne ide Arduino  potrafiło wywalić błąd gdy za komentowałem linie delay(100); w ogóle zaczęło żyć własnym życiem i było nie do zniesienia <br />Za radą Pana Mirka postanowiłem przesiąść się na eclipsa ale do rzeczy...<br /><br />[syntax=cpp]#include &quot;Arduino.h&quot;<br />//We always have to include the library<br />#include &quot;LedControl.h&quot;<br />LedControl lc = LedControl(10, 12, 11, 1);<br />/* we always wait a bit between updates of the display */<br />unsigned long delaytime = 100;<br />float liczba = 39994;<br />int cyfra0 = 0;<br />int cyfra1 = 0;<br />int cyfra2 = 0;<br />int cyfra3 = 0;<br />int cyfra4 = 0;<br />int cyfra5 = 0;<br />int cyfra6 = 0;<br />int cyfra7 = 0;<br />int cyfra8 = 0;<br />void setup() {<br />  /*<br />    The MAX72XX is in power-saving mode on startup,<br />    we have to do a wakeup call<br />  */<br />  lc.shutdown(0, false);<br />  /* Set the brightness to a medium values */<br />  lc.setIntensity(0, 8);<br />  /* and clear the display */<br />  lc.clearDisplay(0);<br />  Serial.begin(9600);<br />}<br /><br />void wypiszCyfry() {<br /> // lc.setDigit(0, 5, cyfra0, false);<br />  //Serial.println(cyfra3);<br />  lc.setDigit(0, 4, cyfra1, false);<br />  //Serial.println(cyfra4);<br />  lc.setDigit(0, 3, cyfra2, false);<br />  //Serial.println(cyfra4);<br />  lc.setDigit(0, 2, cyfra3, false);<br />  //Serial.println(cyfra4);<br />  lc.setDigit(0, 1, cyfra4, true);<br />  //Serial.println(cyfra4);<br />  lc.setDigit(0, 0, cyfra5, false);<br />  // delay(1000);<br />}<br /><br />void liczbaToCyfry() {<br />  cyfra0 = liczba / 100000;<br />  cyfra1 = (liczba - (cyfra0 * 100000)) / 10000;<br />  cyfra2 = (liczba - (cyfra0 * 100000) - (cyfra1 * 10000)) / 1000;<br />  cyfra3 = (liczba - (cyfra0 * 100000) - (cyfra1 * 10000) - (cyfra2 * 1000)) / 100;<br />  cyfra4 = (liczba - (cyfra0 * 100000) - (cyfra1 * 10000) - (cyfra2 * 1000) - (cyfra3 * 100)) / 10;<br />  cyfra5 = (liczba - (cyfra0 * 100000) - (cyfra1 * 10000) - (cyfra2 * 1000) - (cyfra3 * 100) - (cyfra4 * 10));<br /> }<br /><br /><br /><br /><br />void loop() {<br /><br />  wypiszCyfry();<br />  liczbaToCyfry();<br /><br />  liczba = liczba + 1;<br /><br />Serial.println(liczba);<br />  Serial.println(cyfra0);<br />  Serial.println(cyfra1);<br />  Serial.println(cyfra2);<br />  Serial.println(cyfra3);<br />  Serial.println(cyfra4);<br />  Serial.println(cyfra5);<br />  Serial.println(cyfra6);<br />  Serial.println(cyfra7);<br />  delay(2000);<br />}[/syntax]<br /><br />Opis programu :<br />program po inicjacji pobiera liczbę z zmiennej float &quot;liczba&quot;  następnie wyświetla ja na wyświetlaczu i poddaje rozkładowi (void liczbaToCyfry) na int cyfra1-5<br />żeby na końcu wysłać te dane serialem<br /><br />problem :<br />problem jest w poprawności rozkładu liczby.Wszystko pięknie działa od 0 do liczby 40000 gdy licznik &quot;liczba&quot; przekręca się na 40000 w zmiennych int cyfra2,3,4 pojawiaja sie liczby dwu , 3 cyfrowe <br />i nie potrafię już drugi dzień dojść do źródła problemu <br />Był bym bardzo wdzęczny za oświecenie mej ułomności <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Dopisze jeszcze wynik  działania<br />40000.00                       <br />0                                      <br />3                                        <br />9                                       <br />9                                       <br />9                                       <br />9                                        <br />0                                          <br />0                                         <br />40001.00                                  <br />0                                          <br />4                                        <br />65                                    <br />660                                    <br />6560                                     <br />8                                        <br />0                                        <br />0<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15541">tommot</a> — 25 lis 2016, o 20:19</p><hr />
]]></content>
</entry>
</feed>