 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Čet Jun 11, 2009 12:57 pm Naslov sporočila: Algoritem RGB |
|
|
Rad bi sestavil program, ki s pomočjo 8-bit PWM generira barve (LED). Ko nastavim vrednost (R=255,G=0,B=0) sveti seveda rdeča in prav tako sveti modra in zelena. Lahko nastavljam tudi vmesne vrednosti vendar to je 3-bitni RGB modul. Jaz pa bi rad spisal formulo ki bi uporabila vseh 24-bitov vendar pa se mi zatakne pri algoritmu. Gledal sem že na google vendar nič uporabnega.
Poleg izbire barve bi rad uporabil tudi dimmer. Če izberem npr (25,0,0) bi pomenilo 10% svetilnosti rdeče barve. Ne vem kako bi napisal program da bi mešal barve na 100% svetilnosti ipd. _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jun 11, 2009 5:24 pm Naslov sporočila: |
|
|
Rabiš 3 8-bitne PWM-je pa je stvar rešena. Ne potrebuješ nobenih algoritmov.
Lahko se pa greš linearizacijo svetilnosti. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Čet Jun 11, 2009 5:50 pm Naslov sporočila: |
|
|
Jaz imam 3 8-bitne PWM (Atmega8)! Stvari pa se zapletejo ko hočem dobiti cel barvni spekter (za to pa potrebuješ enačbo mešanja). Za spremembo svetilnosti bom uporabil kar (R-x,G-x,B-x) x~svetilnost. _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.41
|
Objavljeno: Čet Jun 11, 2009 6:26 pm Naslov sporočila: |
|
|
LEDuser je napisal/a: |
Jaz imam 3 8-bitne PWM (Atmega8)! Stvari pa se zapletejo ko hočem dobiti cel barvni spekter (za to pa potrebuješ enačbo mešanja). Za spremembo svetilnosti bom uporabil kar (R-x,G-x,B-x) x~svetilnost. |
A ne bi raje uporabil R*x,G*x,B*x (x=0..1)?
Oz. recimo (R*x)/100 in območje 0..100, da se izogneš float spremenljivkam... _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jun 11, 2009 6:41 pm Naslov sporočila: |
|
|
Ne razumem niti enega, niti drugega...
Če programiraš za PC, najpogosteje barve določaš z RGB vrednostmi. (0,0,0) je črna, (255,255,255) je bela, (255,0,0) rdeča, (0,255,0) zelena, (0,0,255) modra, (255,0,255) vijolična, (0,255,255) rumena, (0,100,100) oker, ...
Ne vidim kje tukaj bi rabil algoritem... Imaš 3 8-bitne cifre, torej za 24-bitov možnih kombinacij. Nastaviš in je.
LEDuser, daj malo bolj opiši kakšen algoritem sploh hočeš... _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.27 Kraj: Ljubljana
|
Objavljeno: Čet Jun 11, 2009 6:59 pm Naslov sporočila: |
|
|
gumby je napisal/a: |
A ne bi raje uporabil R*x,G*x,B*x (x=0..1)?
Oz. recimo (R*x)/100 in območje 0..100, da se izogneš float spremenljivkam... |
Tudi to bi bilo uporabno hvala za nasvet.
NeoTO je napisal/a: |
Ne razumem niti enega, niti drugega...
|
Naj ti razložim jaz tega ne potrebujem za računalnik ampak za osvetlitev. Prav tako pa imam 8-bitne PWMje in potrebuješ algoritem za nastavljanje barv. Če želiš da bi s tipko npr. spreminjal barve in bi se barve menjale v krogu od rdeče do zelene in vse vmes pa od zelene do modre in vse vmes pa od modre do rdeče in vse vmes... potem potrebuješ algoritem.
Pravkar sem spisal program in zelo lepo deluje barve se vrtijo kot v mavrici .
Algoritem pa sem napisal kar z uporabo tega diagrama.
NeoTO je napisal/a: |
..., (0,100,100) oker, ...
|
Pri LED RGB bi bilo to isto kot če bi dal (0,255,255) samo malo manj svetleče in ne bi dobil oker.[/quote] _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Jun 11, 2009 7:07 pm Naslov sporočila: |
|
|
Torej si potreboval nek košček programa, ki ti preliva barve iz ene v drugo? Drugič tako povej...  _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Laney Član

Pridružen-a: Čet 09 Sep 2010 22:11 Prispevkov: 26 Aktiv.: 0.14 Kraj: Nova Gorica
|
Objavljeno: Sre Jul 11, 2012 11:48 pm Naslov sporočila: |
|
|
NeoTO a lahko napišeš kaj o linearizaciji ? Kako se jo sploh izvede ? Programsko, hardware-sko...? |
|
Nazaj na vrh |
|
 |
mobwap Član


Pridružen-a: Sre 14 Mar 2012 9:42 Prispevkov: 326 Aktiv.: 2.02 Kraj: Doma
|
Objavljeno: Čet Jul 12, 2012 7:58 am Naslov sporočila: |
|
|
Arduino primer točno tega preko pwm. Mogoče dobiš idejo v kodi. |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.66 Kraj: Zagorje ob Savi
|
Objavljeno: Čet Jul 12, 2012 9:14 am Naslov sporočila: |
|
|
laney : "na oko" je težko ocenit točnost barv, za dobro kalibracijo bi potreboval spektrometer, s katerim bi lahko izmeril točne vrednosti svetlobe, ki jo ledice oddajajo. Iz tega bi si lahko izdelal preslikovalno tabelo RGB -> PWM (3*256 8-bitnih vrednosti).
Jaz sem si izdelal en kontroler za RGB LED trak, kateremu lahko pošlješ RGB vrednost, ki jo uporabi za PWM, preslikovalne tabele sploh nisem uporabil, pa je rezultat kar zadovoljiv. Modra je večinoma pretirano močna, pa ni tak problem.
LP! |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Pet Jul 13, 2012 8:03 am Naslov sporočila: |
|
|
Laney je napisal/a: |
NeoTO a lahko napišeš kaj o linearizaciji ? Kako se jo sploh izvede ? Programsko, hardware-sko...? |
Pri večini LED lahko razmerje med PWM razmerjem (kar daje na izhodu nek mikrokontroler) in svetilnostjo opišeš z logaritemsko funkcijo. Zato moraš za PWM razmerje uporabiti eksponentno funkcijo (če želiš, da se svetilnost lepo linearno veča). Posledično potrebuješ za 255 nivojev svetlosti veliko višjo ločljivost PWM-ja, ali pa se zadovoljiš z manj nivoji.
Eksponentno funkcijo jaz ponavadi 'pofitam' na računalniku in zgeneriram look-up tabelco, lahko pa tudi delaš sproti. Ponavadi izberem tako, da imam pri 0, 0% PWM, pri min. vrednosti (večji od 0) 1% PWM, pri max. vrednosti 100% PWM, vmes pa eksponentno funkcijo. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|