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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-07T20:16:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9576&amp;mode</id>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2014-12-07T20:16:53+01:00</updated>
<published>2014-12-07T20:16:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9576&amp;p=107748#p107748</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9576&amp;p=107748#p107748"/>
<title type="html"><![CDATA[Re: Zły przesuw wartości tablicy, a wyświetlanie wykresu tem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9576&amp;p=107748#p107748"><![CDATA[
Zgubiłeś &quot;obsługę&quot; zmiennej x gdy osiągnie już wartość x=64. Trzeba ją chyba gdzieś znowu wyzerować?<br /><br />ps.<br />Nie znam Arduino ale zmienne x, rev mogą być (powinny być) nie typu: int (16-bitowy) a raczej unsigned char  (uint8_t)  tj. 8-bitowe<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 7 gru 2014, o 20:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[senseios]]></name></author>
<updated>2014-12-07T13:24:29+01:00</updated>
<published>2014-12-07T13:24:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9576&amp;p=107683#p107683</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9576&amp;p=107683#p107683"/>
<title type="html"><![CDATA[Zły przesuw wartości tablicy, a wyświetlanie wykresu temp.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9576&amp;p=107683#p107683"><![CDATA[
Witam, posiadam czujnik DHT22 i ATmege32. Zczytuję temperaturę czujnika, a następnie wyświetlam ją na ekranie LCD. Wszystko działa poprawnie do momentu przestawienia zmiennej rev na 1. To jest moje oznaczenie dla wejścia w inną sekcję funkcji drawgraph() tak aby przesunąć dotychczasową zawartość tablicy array[64] o 1 w lewo, element po elemencie. Niestety wówczas na ekranie piksele przesuwają się nie o jeden, a o wiele pól, a całość po chwili upraszcza się do linii przebiegającej przez cały ekran co widać najlepiej na moim filmie na yt <a href="http://youtu.be/_20MYYa2-nA"  class="postlink">http://youtu.be/_20MYYa2-nA</a><br />Co robię źle? Mój algorytm przesuwania zawartości tablicy musi być zły ale nie mam pojęcia jak go poprawić. <br />Z góry dziękuję za wszelaką pomoc!<br /><br />PS. Wstawiam do języka C, gdyż oprócz dwóch charakterystycznych funkcji dla arduino - cała reszta to standardowe C.<br /><br />[syntax=c]int x=0;//indeks tablicy<br />int rev=0; //wskazuje na osiągnięcie prawej granicy ekranu, x=63 <br />int array&#91;64&#93;;<br />int tempsave;//zapisana temperatura<br /><br />U8GLIB_DOGM128 u8g(11, 10, U8G_PIN_NONE); //U8GLIB_DOGM128(cs, a0 &#91;, reset&#93;) <br /><br />void setup()<br />{<br />    memset(array,0,sizeof(array));<br />    <br />}<br />void loop()<br />{<br />    // odczyt DHT22<br />    int chk = DHT.read22(DHT22_PIN);<br />    <br />    unsigned long currentMillis = millis();<br />    static unsigned long lastMillis = 0;<br />    // Ten kod odpala się co minutę<br />    if ((currentMillis - lastMillis) &gt;= (60*1000UL)) <br />    {<br />       lastMillis += (60*1000UL);<br />       tempsave = DHT.temperature;<br />       if(x&lt;64)<br />        {<br />array&#91;x&#93; = tempsave;<br />x++;<br />    }<br /><br />       else<br />{<br />rev=1;<br />array&#91;63&#93; = tempsave;<br />}<br />    }<br />    <br />    // Reszta uruchamia się zawsze<br />    u8g.firstPage();  <br />    do {<br />      draw();<br />      <br />    } while( u8g.nextPage() );<br />    <br />    // przeładowanie obrazu po pewnym czasie<br />    delay(800);<br />}<br /><br />void draw(void) {<br />    drawgraph(rev);<br />}<br /><br />void drawgraph(int &amp;rev) { <br />  <br />    if(rev == 0)<br />    {<br />//to działa prawidłowo, wyświetla poszczególne piksele<br />        for(int i=0;i&lt;=x;i++)<br />        {<br />          u8g.drawPixel(i,array&#91;i&#93;);<br />        }<br />        <br />    } <br />    else <br />    {<br />for(int i=0;i&lt;63;i++)<br />{<br />  array&#91;i&#93;=array&#91;i+1&#93;;<br />    u8g.drawPixel(i,array&#91;i&#93;);<br />}<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6713">senseios</a> — 7 gru 2014, o 13:24</p><hr />
]]></content>
</entry>
</feed>