www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Algoritem RGB

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 11, 2009 12:57 pm    Naslov sporočila:  Algoritem RGB Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Čet Jun 11, 2009 5:24 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 11, 2009 5:50 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.41

PrispevekObjavljeno: Čet Jun 11, 2009 6:26 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Čet Jun 11, 2009 6:41 pm    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
LEDuser
Član
Član



Pridružen-a: Pon 31 Mar 2008 12:06
Prispevkov: 1104
Aktiv.: 5.27
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jun 11, 2009 6:59 pm    Naslov sporočila:   Odgovori s citatom

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 Very Happy 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 Mr. Green .

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Čet Jun 11, 2009 7:07 pm    Naslov sporočila:   Odgovori s citatom

Torej si potreboval nek košček programa, ki ti preliva barve iz ene v drugo? Drugič tako povej... Very Happy
_________________
Lp,
Matevž
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Laney
Član
Član



Pridružen-a: Čet 09 Sep 2010 22:11
Prispevkov: 26
Aktiv.: 0.14
Kraj: Nova Gorica

PrispevekObjavljeno: Sre Jul 11, 2012 11:48 pm    Naslov sporočila:   Odgovori s citatom

NeoTO a lahko napišeš kaj o linearizaciji ? Kako se jo sploh izvede ? Programsko, hardware-sko...?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
mobwap
Član
Član



Pridružen-a: Sre 14 Mar 2012 9:42
Prispevkov: 326
Aktiv.: 2.02
Kraj: Doma

PrispevekObjavljeno: Čet Jul 12, 2012 7:58 am    Naslov sporočila:   Odgovori s citatom

Arduino primer točno tega preko pwm. Mogoče dobiš idejo v kodi.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Čet Jul 12, 2012 9:14 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Pet Jul 13, 2012 8:03 am    Naslov sporočila:   Odgovori s citatom

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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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