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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-23T09:50:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8561&amp;mode</id>
<entry>
<author><name><![CDATA[krzysztoffx]]></name></author>
<updated>2014-09-23T09:50:52+01:00</updated>
<published>2014-09-23T09:50:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=96441#p96441</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=96441#p96441"/>
<title type="html"><![CDATA[Re: WS2812B - sumowanie kolorów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=96441#p96441"><![CDATA[
Kombinuję i kombinuję ale na chwilę obecną przerobiłem tylko oryginalną funkcję w ten sposób że sumuję wartości poszczególnych komórek składowych. Działa dobrze ale dla kolorów podstawowych. Gradienty wyglądają nienaturalnie <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" />. Jakieś sugestie jak to ugryźć?<br /><br /><br />[syntax=c]void ws_gradient_mixer (void * line, int x, int len, uint32_t A, uint32_t B){       // wskaźnik na obszar pamięci danych paska<br />        int i,poz;                                                                  // lokalna zmienna do iteracji<br />        uint8_t r_temp,g_temp,b_temp;<br />        int alen = (int)(x+len);                                                // obliczanie konca paska z domyslna promocja do typu int (ilosc iteracji)<br /><br />        TCLU col;                                                               // definicja unii<br />        TWSRGB * aline = line;                                                  // przekazanie wskaznika na typ void do wskaznika na typ strukturalny TWSRGB<br /><br />        for(i=x;i&lt;alen;i++){                                                    // petla wypelniajaca bufor paska w okreslonym zakresie<br /><br />                if (i&lt;0) continue;                                              // nie wypelniaj komorek &quot;przed&quot; paskiem<br />                if (i&gt;WS_LED_CNT+1) continue;                                   // nie wypelniaj komorek &quot;za&quot; paskiem<br /><br />                poz=i*3;<br />                r_temp = *((uint8_t *) line + poz);<br />                g_temp = *((uint8_t *) line + poz + 1);<br />                b_temp = *((uint8_t *) line + poz + 2);<br /><br />                col.color = Interpolate2Colors(A, B, i-x, len);                 // obliczanie wartosci koloru dla danej pozycji w pasku<br /><br />                aline&#91;i&#93;.r = GAMMAR(col.cl&#91;cr&#93; + r_temp);                                // wyciaganie skladowej R z obliczonego koloru z uwzglednieniem korekcji GAMMA<br />                aline&#91;i&#93;.g = GAMMAG(col.cl&#91;cg&#93; + g_temp);                                // wyciaganie skladowej G z obliczonego koloru z uwzglednieniem korekcji GAMMA<br />                aline&#91;i&#93;.b = GAMMAB(col.cl&#91;cb&#93; + b_temp);                                // wyciaganie skladowej B z obliczonego koloru z uwzglednieniem korekcji GAMMA<br />        }<br />}//koniec funkcji gradient mixer[/syntax]<br /><br /><br />---------------- EDIT ---------------------<br /><br />Rozumiem swój błąd ... w przypadku gradientów w przypadkowy sposób przeładowywałem zmienną 8 bitową tworząc dziwne składanki kolorów, dla ciekawych przedstawiam poprawioną funkcję . <br /><br />[syntax=c]void ws_gradient_mixer (void * line, int x, int len, uint32_t A, uint32_t B){       // wskaźnik na obszar pamięci danych paska<br />        int i,poz;                                                                  // lokalna zmienna do iteracji<br />        uint8_t r_temp,g_temp,b_temp;<br />        uint16_t red,green,blue;<br />        int alen = (int)(x+len);                                                // obliczanie konca paska z domyslna promocja do typu int (ilosc iteracji)<br /><br />        TCLU col;                                                               // definicja unii<br />        TWSRGB * aline = line;                                                  // przekazanie wskaznika na typ void do wskaznika na typ strukturalny TWSRGB<br /><br />        for(i=x;i&lt;alen;i++){                                                    // petla wypelniajaca bufor paska w okreslonym zakresie<br /><br />                if (i&lt;0) continue;                                              // nie wypelniaj komorek &quot;przed&quot; paskiem<br />                if (i&gt;WS_LED_CNT+1) continue;                                   // nie wypelniaj komorek &quot;za&quot; paskiem<br /><br />                poz=i*3;<br />                r_temp = *((uint8_t *) line + poz);<br />                g_temp = *((uint8_t *) line + poz + 1);<br />                b_temp = *((uint8_t *) line + poz + 2);<br /><br />                col.color = Interpolate2Colors(A, B, i-x, len);                 // obliczanie wartosci koloru dla danej pozycji w pasku<br /><br />                red = col.cl&#91;cr&#93; + r_temp;<br />                if (red &gt; 255) red=255;<br /><br />                green = col.cl&#91;cg&#93; + g_temp;<br />                if (green &gt; 255) green=255;<br /><br />                blue = col.cl&#91;cb&#93; + b_temp;<br />                if (blue &gt; 255) blue=255;<br /><br />                aline&#91;i&#93;.r = GAMMAR((uint8_t)red);                                // wyciaganie skladowej R z obliczonego koloru z uwzglednieniem korekcji GAMMA<br />                aline&#91;i&#93;.g = GAMMAG((uint8_t)green);                                // wyciaganie skladowej G z obliczonego koloru z uwzglednieniem korekcji GAMMA<br />                aline&#91;i&#93;.b = GAMMAB((uint8_t)blue);                                // wyciaganie skladowej B z obliczonego koloru z uwzglednieniem korekcji GAMMA<br />        }<br />}//koniec funkcji gradient mixer[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1459">krzysztoffx</a> — 23 wrz 2014, o 09:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marcin_G]]></name></author>
<updated>2014-09-20T08:22:23+01:00</updated>
<published>2014-09-20T08:22:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=96116#p96116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=96116#p96116"/>
<title type="html"><![CDATA[Re: WS2812B - sumowanie kolorów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=96116#p96116"><![CDATA[
Też z tym walczę, i jak na razie jedyny pomysł na jaki wpadłem to stworzenie kolejnego bufora do drugiej komety. Nie wiem tylko czy to jest właściwe podejście, czy istnieje właśnie jakiś bardziej wyszukany sposób <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=758">Marcin_G</a> — 20 wrz 2014, o 08:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krzysztoffx]]></name></author>
<updated>2014-09-18T16:54:48+01:00</updated>
<published>2014-09-18T16:54:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=95947#p95947</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=95947#p95947"/>
<title type="html"><![CDATA[WS2812B - sumowanie kolorów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8561&amp;p=95947#p95947"><![CDATA[
Witam po dłuższej przerwie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />W związku z tym że pochłonąłem wszystkie 8 części poradników o tych genialnych stworzeniach ogarnęła mnie oczywiście żądza stworzenia komet <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Przesuwanie gradientów funkcją ws_gradient2c jest oczywiście sympatyczne i efektowne, natomiast mocno irytujące jest nakładanie się jednej komety na drugą. <br />Jaką metodą trzeba się posłużyć żeby dobrze mixować kolory? Wystarczy dodać składowe czy jest jakiś bardziej wyszukany sposób ? Widziałem ,że koledzy na forum osiągnęli już rewelacyjne efekty w tej materii dlatego chciałbym prosić o jakąś podpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Nie chodzi mi nawet o gotowy kod tylko o sposób <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=1459">krzysztoffx</a> — 18 wrz 2014, o 16:54</p><hr />
]]></content>
</entry>
</feed>