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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-08-07T00:16:13+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=3780&amp;mode</id>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-08-07T00:16:13+01:00</updated>
<published>2013-08-07T00:16:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44709#p44709</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44709#p44709"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44709#p44709"><![CDATA[
Wiesz to może faktycznie sporo zależeć od diody, ja nie używam &quot;normalnej&quot; diody tylko takiego potworka:<br /><a href="http://forum.atnel.pl/_obrazki/o/1589/a21d60bcd0949d37173c8b8a30e37d08.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1589/a21d60bcd0949d37173c8b8a30e37d08.jpg" alt="Obrazek" /></a><br /><br />Ma to to 10W. Zdjęcie jest obrazem rzuconym przez soczewkę na sufit <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />sterujesz stanem niskim?<br /></div><br />Nie, stanem wysokim. <br /><br />Ale sprobuję jutro zobaczyć jakie będzie subiektywne odczucie wzroku przy jakich wypełnieniach PWM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 7 sie 2013, o 00:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-08-06T23:37:15+01:00</updated>
<published>2013-08-06T23:37:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44707#p44707</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44707#p44707"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44707#p44707"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent">bowiem wystarczy już f(x) = ax^2.<br />Grunt w tym żeby początkowo szedł w górę powoli a potem b. szybko.<br /></div><br /><br />Funkcja kwadratowa raczej nie radzi bo ona na początku rośnie wolno a później strzela w górę.<br />Skok kolorów jest na początku około wartości 100. Trzeba by pomyśleć o czymś logarytmicznym, ale tylko w początkowym zakresie bo później niepotrzebnie spowolni.<br />Na filmie do którego link wkleiłem dioda zmienia kolory nie przedziale całej wartości H tylko w wylosowanym przedziale, następnie losowany jest następny przedział. Sama funkcja konwertująca działa bardzo płynnie, tak płynnie, że uznałem iż jest zbyt monotonna dlatego dodałem losowość <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /></div><br />No nie mogę się z tym zgodzić. Przecież PWMem ma właśnie na początku rosnąć powoli. Wiele zależy też od koloru, modelu diody ale dla zobrazowania powiem że np.  przy wypełnieniu 12% mamy wrażenie ze dioda jest ustawiona na połowę jasności. (tą korektę ja bym robił już po konwersji na RGB na zmiennych R,G,B).<br /><br />Apropo funkcji kwadratowej - nie jest to jakaś zaawansowana matma żeby przeciętny licealista (nawet przy dzisiejszym poziomie nauczania) tak dobrał współczynniki funkcji kwadratowej aby ta na początku rosła szybko a później powoli &lt;-- akurat kiedyś w tym charakterze ją dokładnie wykorzystywałem w jakimś programie - wtedy musiałem jeszcze punkty wierzchołka regulować z poziomu aplikacji więc to wszystko miało jakiś tam sens, ale tak jak mówię w tym wypadku nie jest to potrzebne. <br />Ale wiesz może my myślimy od odwrotnej strony  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  sterujesz stanem niskim? bo to w zasadzie wszystko jedno czy na początku powoli a potem szybko czy na odwrót bo przecież wystarczy bez zaawansowanej matmy odjąć<br /> 256- f(x) <br />tylko trzeba tak dobrać a żeby wyniki były w przedziale &lt;0,256&gt;. <br /><br />Logarytmy to rzeczywiście pierwsze co przychodzi na myśl ale w tym wypadku się chyba nie opłaca.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 6 sie 2013, o 23:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-08-06T21:06:47+01:00</updated>
<published>2013-08-06T21:06:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44679#p44679</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44679#p44679"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44679#p44679"><![CDATA[
<div class="quotetitle">xamrex napisał(a):</div><div class="quotecontent"><br />Da się coś zrobić, żeby go nie było?<br />I czy też ty go masz?<br /></div><br /><br />Witam<br />Ja mam dodatkowe zmienne red, green, blue typu uint8_t które dopiero wpisuję do rejestrów timerowych.<br />Możesz też zrobić jawne rzutowanie do typu uint16_t.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 15 minutach ]</span></strong><br /><br /><div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />bowiem wystarczy już f(x) = ax^2.<br />Grunt w tym żeby początkowo szedł w górę powoli a potem b. szybko.<br /></div><br /><br />Funkcja kwadratowa raczej nie radzi bo ona na początku rośnie wolno a później strzela w górę.<br />Skok kolorów jest na początku około wartości 100. Trzeba by pomyśleć o czymś logarytmicznym, ale tylko w początkowym zakresie bo później niepotrzebnie spowolni.<br />Na filmie do którego link wkleiłem dioda zmienia kolory nie przedziale całej wartości H tylko w wylosowanym przedziale, następnie losowany jest następny przedział. Sama funkcja konwertująca działa bardzo płynnie, tak płynnie, że uznałem iż jest zbyt monotonna dlatego dodałem losowość <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=1589">sq8dsr</a> — 6 sie 2013, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2013-08-06T16:03:57+01:00</updated>
<published>2013-08-06T16:03:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44651#p44651</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44651#p44651"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44651#p44651"><![CDATA[
Postanowiłem sobie to dzisiaj przetestować.<br />Wszystko OK, tylko przy wywołaniu funkcji <br />[syntax=c]hsv_to_rgb_8_n(10,100,222,&amp;OCR0B, &amp;OCR2B, &amp;OCR0A);[/syntax]<br />mam warning<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">Multiple markers at this line<br />   - passing argument 6 of 'hsv_to_rgb_8_n' from incompatible pointer type<br />   - passing argument 5 of 'hsv_to_rgb_8_n' from incompatible pointer type<br />   - passing argument 4 of 'hsv_to_rgb_8_n' from incompatible pointer type</div><br /><br />Da się coś zrobić, żeby go nie było?<br />I czy też ty go masz?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 6 sie 2013, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-08-06T14:48:55+01:00</updated>
<published>2013-08-06T14:48:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44639#p44639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44639#p44639"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44639#p44639"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />bo oko też nie ma liniowej czułości,<br /></div> No właśnie o tym mówię. Ciężko by tu było znaleźć odpowiedni wielomian jako funkcje. Zawsze można zrobić zmienną tablicową (1 wystarczy).<br /><br />Nawiasem fajnie by było jakby się udało znaleźć taki wielomian - może jest jakiś program który szuka wielomianów ( mających określone wartości (ewentualnie z pewnym zaokrągleniem ) dla określonych argumentów. - to się nazywa &quot;interpolacja wielomianowa&quot;  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Co więcej okazuje się że wielomian nie jest jakiś bardzo skomplikowany ,bowiem wystarczy już f(x) = ax^2.<br />Grunt w tym żeby początkowo szedł w górę powoli a potem b. szybko.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 6 sie 2013, o 14:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-08-06T13:16:40+01:00</updated>
<published>2013-08-06T13:16:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44624#p44624</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44624#p44624"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44624#p44624"><![CDATA[
<div class="quotetitle">MichalXY napisał(a):</div><div class="quotecontent"><br />Witaj sq8dsr na naszym forum  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  !<br /><br />Ja bym przy okazji jeśli by była taka możliwość oczywiście  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  poprosił o pokazania jak działa twój projekcik(jakieś zdjęcia albo filmik ) bo szczerze mówiąc ciekawy jestem jak to działa na żywo ta inna przestrzeń barw niż RGB jak to Mirek ujął. <br /><br />Pozdrawiam!<br /></div><br /><br />Witam<br />a proszę bardzo:<br />[youtube]<br /><!-- m --><a class="postlink" href="http://www.youtube.com/watch?v=X6nHCYbWuaI" >http://www.youtube.com/watch?v=X6nHCYbWuaI</a><!-- m --><br />[/youtube]<br /><br />Zakresy zmian kolorów są losowane a prędkość przesuwania się w obrębie wylosowanego koloru jest dość spora.<br />Samej diody nie filmowałem, bo jest tak jasna, że kamera widzi tylko białą plamę.<br />W rzeczywistości wygląda to lepiej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />Np. jesteś na zieleni i poruszasz się liniowo w kierunku cyjanu więc kod konwertujący HSV na RGB będzie liniowo zwiększał składową zielonej a PWM i bezwładność oka spowoduje że wrażenia liniowości nie będzie.<br /></div><br /><br />Tak owszem, choć muszę przyznać, że jest wrażenie liniowości przy przesuwaniu się po całym zakresie H. Jeden problem jest w chwili gdy kolor osiąga wartość pomarańczowo żółtą, wtedy przejście staje się bardziej gwałtowne. I tu ogólnie jest spory problem, bo oko też nie ma liniowej czułości, co więcej mózg nie każdą, matematycznie równą, różnicę między dwoma kolorami tak samo postrzega. I z tego co się zorientowałem nie jest to prosta funkcja. Dlatego tyle jest różnych metod konwersji kolorów w poligrafii.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 6 sie 2013, o 13:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-08-06T12:16:02+01:00</updated>
<published>2013-08-06T12:16:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44620#p44620</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44620#p44620"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44620#p44620"><![CDATA[
Oczywiście dużą zaletą jest to że można samym parametrem &quot;barwa&quot; uzyskiwać skrajnie różne kolory (przy sterowaniu RGB trzeba by było jednocześnie operować 3 zmiennymi) ale i tak żeby płynnie, ze stałą prędkością poruszać się po krawędzi koła barw trzeba uwzględnić to że sterujemy PWMem. Więc albo zmienna &quot;barwa&quot; nie powinna zmieniać się liniowo albo zmienne R,G.B.  <br /><br />Np. jesteś na zieleni i poruszasz się liniowo w kierunku cyjanu więc kod konwertujący HSV na RGB będzie liniowo zwiększał składową zielonej a PWM i bezwładność oka spowoduje że wrażenia liniowości nie będzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 6 sie 2013, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2013-08-06T09:20:22+01:00</updated>
<published>2013-08-06T09:20:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44606#p44606</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44606#p44606"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44606#p44606"><![CDATA[
Witaj sq8dsr na naszym forum  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  !<br /><br />Ja bym przy okazji jeśli by była taka możliwość oczywiście  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />  poprosił o pokazania jak działa twój projekcik(jakieś zdjęcia albo filmik ) bo szczerze mówiąc ciekawy jestem jak to działa na żywo ta inna przestrzeń barw niż RGB jak to Mirek ujął. <br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 6 sie 2013, o 09:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-06T05:38:57+01:00</updated>
<published>2013-08-06T05:38:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44589#p44589</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44589#p44589"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44589#p44589"><![CDATA[
<div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />HSB daje za to łatwą możliwość ściemniania i regulacji nasycenia koloru.<br /></div><br /><br />No jeśli o to chodzi to tak - zdecydowanie ... przyznaję rację.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 6 sie 2013, o 05:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-08-06T00:01:46+01:00</updated>
<published>2013-08-06T00:01:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44580#p44580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44580#p44580"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44580#p44580"><![CDATA[
]Żeby kolor płynął od czerwieni do czerwieni (maksymalna jasność i nasycenie) wystarczy zmieniać wartość H od 0 - 1530. Wartość ta jest okręgiem. Argumenty S i B dajemy na 255. Jeśli damy stałe H a zmieniać będziemy S (od 255 do 0) to jeden kolor będzie nam się rozjaśniał do białego (wartość S = 0) przy zmianie B będziemy ściemniać diody. <br /><br />Tablica przy RGB była potrzebna dlatego by ustawić 150 gotowych &quot;mieszanek&quot; kolorów<br /><br />konstrukcja:<br />[syntax=c]for (r=0; r&lt;255; r++) {<br />    for(g=0; g&lt;255; g++) {<br />        for(b=0; b&lt;255; b++) {<br />} } }[/syntax]<br />Nic nie da bo jest hierarchiczna. RGB jest sześcianem. Najpierw będziemy jechać po kolumnie podstawy, później następny wiersz, po 256 wierszach zaczniemy robić następną warstwę więc wykonanie tych pętli to 2^24 kroków. A nie o to chodzi.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />W efekcie uzyskamy chcąc nie chcąc H z palety HSB  ale to jakby nie patrzeć jedno i to samo ...<br /></div><br /><br />Tak, no fakt. W sumie to to samo bo będziemy jechać po okręgu maksymalnej jasności i nasycenia.<br />HSB daje za to łatwą możliwość ściemniania i regulacji nasycenia koloru. Oczywiście trzeba dokładnie dobrać prądy diod (szczególnie czerwonej, która ma znacząco mniejszy spadek napięcia), żeby biały był biały <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=1589">sq8dsr</a> — 6 sie 2013, o 00:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-05T23:57:19+01:00</updated>
<published>2013-08-05T23:57:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44579#p44579</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44579#p44579"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44579#p44579"><![CDATA[
tzn płynną regulację kolorów RGB też da radę zrobić. Nie potrzeba nawet zagnieżdżonych pętli for(). Wystarczy sobie zmieniać indeks koloru od 0 do 2 (rgb) i za każdym obiegiem pętli zwiększać indeks i+1. Gdy się zwiększy do MAX, to zmniejszać indeks i. W kolejnym obiegu zwiększyć indeks o 1 i znowu powtórzyć kroki i tak w kółko. Oczywiście traktując indeks cyklicznie. Czyli jeśli i+1 jest = 3 to ma być 0<br /><br />W efekcie uzyskamy chcąc nie chcąc H z palety HSB <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale to jakby nie patrzeć jedno i to samo ...<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br /><div class="quotetitle">sq8dsr napisał(a):</div><div class="quotecontent"><br />A także zamierzam zrobić na ADC (super poradnik) zmianę kolorów potencjometrem<br /></div><br /><br />To też fajny pomysł <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=54">mirekk36</a> — 5 sie 2013, o 23:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-08-05T23:48:56+01:00</updated>
<published>2013-08-05T23:48:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44576#p44576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44576#p44576"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44576#p44576"><![CDATA[
fajne podejście do problemu.<br />Czy zmienne odpowiedzialne za nasycenie, jasność, barwę - zmieniasz liniowo uzyskując wtedy ważenie liniowej zmiany kolorów?<br />W tradycyjnym PWMie z bezpośrednim modelem RGB trzeba było jak już mówiłeś robić tablicę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 5 sie 2013, o 23:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-08-05T23:26:09+01:00</updated>
<published>2013-08-05T23:26:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44572#p44572</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44572#p44572"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44572#p44572"><![CDATA[
Tak oczywiście masz rację. Volatile wsadziłem chyba z rozpędu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Zmian kolorów w RGB nie mogłem opanować i nie wiem nawet czy się da to zrobić. Jeśli zrobimy trzy zagnieżdżone pętle FOR to zewnętrzna będzie wykonywać się 655536 razy wolniej niż najbardziej wewnętrzna a kolor będzie się zmieniał bardzo powoli. Tablica też nie jest dobra, bo zabiera pamieć. Myślę, że podejście z HSB może się przydać komuś <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Dzięki Twojej książce rozbudowałem &quot;projekt&quot; o uarta więc mam kontrolę nad losowanymi zakresami kolorów. A także zamierzam zrobić na ADC (super poradnik) zmianę kolorów potencjometrem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Michał<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1589">sq8dsr</a> — 5 sie 2013, o 23:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-05T23:15:37+01:00</updated>
<published>2013-08-05T23:15:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44570#p44570</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44570#p44570"/>
<title type="html"><![CDATA[Re: sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44570#p44570"><![CDATA[
Bardzo ciekawy pomysł na wykorzystanie innej przestrzeni barw niż RGB - też muszę się kiedyś tym zająć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ale taka uwaga do kodów. KOMPLETNIE niepotrzebnie stosujesz tu specyfikator volatile <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />[syntax=c]volatile uint16_t y,x,h;<br />volatile uint8_t s,b,red,green,blue;[/syntax]<br /><br />szczególnie że są to zmienne lokalne a nie globalne - więc tak na prawdę NIGDY ten volatile nie będzie przydatny - OK ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 sie 2013, o 23:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq8dsr]]></name></author>
<updated>2013-08-05T23:10:37+01:00</updated>
<published>2013-08-05T23:10:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44568#p44568</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44568#p44568"/>
<title type="html"><![CDATA[sterowanie diodą (diodami rgb) a przy okazji WITAM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3780&amp;p=44568#p44568"><![CDATA[
Witam wszystkich<br />Jeśli walnę jakąś bzdurę czy coś to proszę o wybaczenie bo to mój pierwszy post na forum. <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Na tzw. dobry początek chciałem podzielić się czymś, co zapewne było wałkowane czyli sterowaniem diodą RGB.<br />Otóż zapragnąłem zrobić użytek z bardzo fajnej diody RGB (3 x 3W). Oczywiście nie chodzi tu o sam PWM. Szybko odkryłem, że sterowanie jej za pomocą wartości RGB (płynne przewijanie kolorów) nie jest wygodne. Pierwsza &quot;implementacja&quot; zawierała tablicę ponad 100 wartości wczytywanych w FOR. <br />Jednak po dyskusji z kolegą okazało się, że nie warto na siłę trzymać się przestrzeni kolorów RGB i raczej podejść do tematu używając modelu HSV (HSB). Ma on trzy wartości barwę, nasycenie i jasność. Parametr barwy jest okręgiem, więc można go łatwo wpuścić w pętlę.<br />Przystosowałem nieco znalezioną w sieci funkcję konwertującą HSV na RGB<br /><br />[syntax=c]/*<br /> * colors.c<br /> *<br /> *  Created on: 05-07-2013<br /> *      Author: mike<br /> */<br /><br />#include &quot;pwm.h&quot;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br /><br /><br /><br /><br /><br />/* Funkcja obliczania wektorów RGB z przestrzeni HSV<br />Bez normalizacji jasnoci, PWM 8 bit<br /><br />hue: 0 do 1529<br />sat: 0 do 255<br />bri: 0 do 255<br />zmienne tylu unit16_t<br />*/<br /><br />void hsv_to_rgb_8(uint16_t hue, uint16_t sat, uint16_t bri, uint8_t *red, uint8_t *green, uint8_t *blue) {<br /><br /><br />uint16_t red_val, green_val, blue_val;<br /><br />while (hue &gt; 1529) hue -= 1530;<br />while (hue &lt; 0) hue += 1530;<br /><br />if (hue &lt; 255) {<br />   red_val = 255;<br />   green_val = (65280 - sat * (255 - hue)) &gt;&gt; 8;<br />   blue_val = 255 - sat;<br />}<br />else if (hue &lt; 510) {<br />   red_val = (65280 - sat * (hue - 255)) &gt;&gt; 8;<br />   green_val = 255;<br />   blue_val = 255 - sat;<br />}<br />else if (hue &lt; 765) {<br />   red_val = 255 - sat;<br />   green_val = 255;<br />   blue_val = (65280 - sat * (765 - hue)) &gt;&gt; 8;<br />}<br />else if (hue &lt; 1020) {<br />   red_val = 255 - sat;<br />   green_val = (65280 - sat * (hue - 765)) &gt;&gt; 8;<br />   blue_val = 255;<br />}<br />else if (hue &lt; 1275) {<br />   red_val = (65280 - sat * (1275 - hue)) &gt;&gt; 8;<br />   green_val = 255 - sat;<br />   blue_val = 255;<br />}<br />else {<br />   red_val = 255;<br />   green_val = 255 - sat;<br />   blue_val = (65280 - sat * (hue - 1275)) &gt;&gt; 8;<br />}<br /><br />*red = ((bri + 1) * red_val) &gt;&gt; 8;<br />*green = ((bri + 1) * green_val) &gt;&gt; 8;<br />*blue = ((bri + 1) * blue_val) &gt;&gt; 8;<br /><br /><br />}<br /><br /><br /><br /><br /><br /><br />/* Funkcja obliczania wektorów RGB z przestrzeni HSV<br />   Z normalizacja jasnoci, PWM 8 bit<br /><br />hue: 0 do 764<br />sat: 0 do 127<br />bri: 0 do 255<br />zmienne tylu unit16_t<br />*/<br /><br /><br />void hsv_to_rgb_8_n(uint16_t hue, uint16_t sat, uint16_t bri, uint16_t *red, uint16_t *green, uint16_t *blue) {<br /><br />uint16_t red_val, green_val, blue_val;<br /><br />while (hue &gt; 764) hue -= 765;<br />while (hue &lt; 0) hue += 765;<br /><br />if (hue &lt; 255) {<br />   red_val = (10880 - sat * (hue - 170)) &gt;&gt; 7;<br />   green_val = (10880 - sat * (85 - hue)) &gt;&gt; 7;<br />   blue_val = (10880 - sat * 85) &gt;&gt; 7;<br />}<br />else if (hue &lt; 510) {<br />   red_val = (10880 - sat * 85) &gt;&gt; 7;<br />   green_val = (10880 - sat * (hue - 425)) &gt;&gt; 7;<br />   blue_val = (10880 - sat * (340 - hue)) &gt;&gt; 7;<br />}<br />else {<br />   red_val = (10880 - sat * (595 - hue)) &gt;&gt; 7;<br />   green_val = (10880 - sat * 85) &gt;&gt; 7;<br />   blue_val = (10880 - sat * (hue - 680)) &gt;&gt; 7;<br />}<br /><br />*red = (uint16_t)((bri + 1) * red_val) &gt;&gt; 8;<br />*green = (uint16_t)((bri + 1) * green_val) &gt;&gt; 8;<br />*blue = (uint16_t)((bri + 1) * blue_val) &gt;&gt; 8;<br /><br />}[/syntax]<br /><br />Bardzo ładnie działa, ale po pewnym czasie mi sie znudziło <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Napisałem więc proste funkcje losowych zmian kolorów, skokowych i płynnych.<br />Kolor skacze albo płynie w zadanych granicach HSB.<br />[syntax=c]/*<br /> * func.c<br /> *<br /> *  Created on: 24-07-2013<br /> *      Author: mike<br /> *<br />*/<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;pwm.h&quot;<br />#include &quot;colors.h&quot;<br />#include &quot;func.h&quot;<br /><br /><br /><br /><br /><br />void ran_col_sweep(uint16_t h_start, uint16_t h_end, // wartosci graniczne H<br />uint8_t s_start, uint8_t s_end, // wartosci graniczne S<br />uint8_t b_start, uint8_t b_end, // wartosci graniczne B<br />uint16_t time) {// czas trwania koloru ms<br /><br />volatile uint16_t y,x,h;<br />volatile uint8_t s,b,red,green,blue;<br /><br /><br />if (h_end==h_start) {<br />y= h_start;<br />}<br />else {<br />y= (rand() / (RAND_MAX / (h_end - h_start)))+h_start;<br />}<br /><br />if (y&lt;x) {<br />for (h=y; h&lt;x; h++) {    // zmiana HUE, jedziemy po okręgu<br /><br />// hsv_to_rgb_8_n(h, s, b, &amp;red, &amp;green, &amp;blue);<br />// przypisanie wyjsciom PWM wartosci składowych RGB<br />hsv_to_rgb_8(h, s, b, &amp;red, &amp;green, &amp;blue);<br />OCR2 = red;<br />OCR1A = green;<br />OCR1B = blue;<br /><br /><br /><br />_delay_ms(time); // czekamy trochę, żeby nie migało :) Docelowo będzie zamiast tego TIMER<br /><br />}  // koniec FOR<br />}// koniec IF<br />else {<br /><br />for (h=y; h&gt;x; h--) {    // zmiana HUE, jedziemy po okręgu<br /><br />// hsv_to_rgb_8_n(h, s, b, &amp;red, &amp;green, &amp;blue);<br />// przypisanie wyjsciom PWM wartosci składowych RGB<br /><br />//wywołanie funkcji przeliczającej HSB na RGB i przypisanie licznikom PWM wartosci dla kolorów<br />hsv_to_rgb_8(h, s, b, &amp;red, &amp;green, &amp;blue);<br />OCR2 = red;<br />OCR1A = green;<br />OCR1B = blue;<br /><br /><br /><br />_delay_ms(time); // czekamy trochę, żeby nie migało :) Docelowo będzie zamiast tego TIMER<br />}// koniec FOR<br /><br />}// koniec ELSE<br /><br /><br /><br />// Losujemy wartosc HUE z podanego zakresu<br />if (h_end==h_start) {<br />x= h_start;<br />}<br />else {<br />x= (rand() / (RAND_MAX / (h_end - h_start)))+h_start;<br />}<br /><br />// Losujemy wartosc BRI z podanego zakresu<br />if (b_end==b_start) {<br />b= b_start;<br />}<br />else {<br />b= (rand() / (RAND_MAX / (b_end - b_start)))+b_start;<br />}<br /><br />// Losujemy wartosc SAT z podanego zakresu<br />if (s_end==s_start) {<br />s= s_start;<br />}<br />else {<br />s= (rand() / (RAND_MAX / (s_end - s_start)))+s_start;<br />}<br />}<br /><br /><br /><br />void ran_col_blink (uint16_t h_start, uint16_t h_end, // wartosci graniczne H<br />uint8_t s_start, uint8_t s_end, // wartosci graniczne S<br />uint8_t b_start, uint8_t b_end, // wartosci graniczne B<br />uint16_t time) {// czas trwania koloru ms<br /><br />uint16_t h;<br />uint8_t s,b,red,green,blue;<br />char znak&#91;10&#93;;<br /><br /><br />if (h_end==h_start) {<br />h= h_start;<br />}<br />else {<br />h= (rand() / (RAND_MAX / (h_end - h_start)))+h_start;<br />}<br /><br /><br />if (b_end==b_start) {<br />b= b_start;<br />}<br />else {<br />b= (rand() / (RAND_MAX / (b_end - b_start)))+b_start;<br />}<br /><br /><br />if (s_end==s_start) {<br />s= s_start;<br />}<br />else {<br />s= (rand() / (RAND_MAX / (s_end - s_start)))+s_start;<br />}<br /><br />hsv_to_rgb_8(h, s, b, &amp;red, &amp;green, &amp;blue);<br />OCR2 = red;<br />OCR1A = green;<br />OCR1B = blue;<br /><br /><br />_delay_ms(time);<br /><br /><br /><br />}[/syntax]<br /><br />Oczywiście zamierzam docelowo usunąć _delay'e i dodać jeszcze kilka rzeczy <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=1589">sq8dsr</a> — 5 sie 2013, o 23:10</p><hr />
]]></content>
</entry>
</feed>