Kazalo:

Raziskovanje barvnega prostora: 6 korakov
Raziskovanje barvnega prostora: 6 korakov

Video: Raziskovanje barvnega prostora: 6 korakov

Video: Raziskovanje barvnega prostora: 6 korakov
Video: ⚡️ Я НЕ СДАМСЯ! AMAZON 2.0 | Интернет магазин с нуля - Часть 3 2024, Julij
Anonim
Raziskovanje barvnega prostora
Raziskovanje barvnega prostora

Naše oči zaznavajo svetlobo skozi receptorje, ki so v vidnem spektru občutljivi na rdeče, zelene in modre barve. Ljudje so to dejstvo v zadnjih sto letih uporabili za zagotavljanje barvnih slik prek filma, televizije, računalnikov in drugih naprav.

Na zaslonu računalnika ali telefona so slike prikazane v številnih barvah s spreminjanjem jakosti drobnih rdečih, zelenih in modrih LED, ki so ena poleg druge na zaslonu. Z spreminjanjem jakosti svetlobe z rdeče, zelene ali modre LED diode je mogoče prikazati milijone različnih barv.

Ta projekt vam bo pomagal raziskati rdeči, zeleni in modri (RGB) barvni prostor z uporabo Arduina, LED RGB in malo matematike.

Intenzivnost treh barv, rdeče, zelene in modre, si lahko ogledate kot koordinate v kocki, kjer je vsaka barva vzdolž ene osi in so vse tri osi pravokotne ena na drugo. Bolj ko ste bližje ničelni točki ali izvoru osi, manj je te barve prikazano. Ko so vrednosti za vse tri barve na ničelni točki ali izvoru, je barva črna in LED RGB popolnoma ugasne. Ko so vrednosti vseh treh barv čim višje (v našem primeru 255 za vsako od treh barv), LED RGB popolnoma vklopi in oko to kombinacijo barv zazna kot belo.

Korak: RGB barvni prostor

RGB barvni prostor
RGB barvni prostor

Hvala Kennethu Morelandu za dovoljenje za uporabo njegove lepe podobe.

Radi bi raziskali vogale kocke 3D barvnega prostora z uporabo RGB LED, povezane z Arduinom, vendar želimo to narediti tudi na zanimiv način. To lahko naredimo tako, da ugnezdimo tri zanke (po eno za rdečo, za zeleno in za modro) in preletimo skozi vsako možno barvno kombinacijo, vendar bi bilo to res dolgočasno. Ste že kdaj videli 2D Lissajous vzorec na osciloskopu ali laserska svetlobna oddaja? Odvisno od nastavitev je lahko vzorec Lissajous podoben diagonalni črti, krogu, številki 8 ali počasi vrtečemu se koničastemu vzorcu, podobnemu metulju. Lissajous vzorci nastanejo s sledenjem sinusnim signalom dveh (ali več) oscilatorjev, narisanih na osi x-y (ali v našem primeru x-y-z ali R-G-B).

2. korak: Dobra ladja Lissajous

Dobra ladja Lissajous
Dobra ladja Lissajous

Najbolj zanimivi Lissajous vzorci se pojavijo, ko se frekvence sinusnih signalov razlikujejo za majhno količino. Na fotografiji z osciloskopom se frekvence razlikujejo v razmerju 5 do 2 (oba sta prosta števila). Ta vzorec precej dobro pokriva svoj kvadrat in se lepo poda v vogale. Višja osnovna števila bi še bolje pokrila kvadrat in pobrskala še dlje v vogale.

3. korak: Počakajte - Kako lahko poganjamo LED s sinusoidnim valom?

Ujel si me! Želimo raziskati barvni prostor 3D, ki sega od off (0) do full on (255) za vsako od treh barv, vendar se sinusni valovi razlikujejo od -1 do +1. Tu bomo naredili malo matematike in programiranja, da bi dobili tisto, kar želimo.

  • Vsako vrednost pomnožite s 127, da dobite vrednosti v razponu od -127 do +127
  • Dodajte 127 in zaokrožite vsako vrednost, da dobite vrednosti v razponu od 0 do 255 (za nas dovolj blizu 255)

Vrednosti, ki segajo od 0 do 255, je mogoče predstaviti z enobajtnimi številkami (podatkovni tip "char" v C-podobnem programskem jeziku Arduino), zato bomo prihranili pomnilnik z uporabo enobajtne predstavitve.

Kaj pa koti? Če uporabljate stopinje, so koti v sinusoidi od 0 do 360. Če uporabljate radiane, so koti od 0 do 2 -krat π ("pi"). Naredili bomo nekaj, kar bo spet ohranilo spomin v našem Arduinu, in pomislili na krog, razdeljen na 256 delov, in imeli "binarne kote", ki se gibljejo od 0 do 255, zato so "koti" za vsako od barv lahko predstavljene z enobajtnimi številkami ali znaki tudi tukaj.

Arduino je prav takšen, kot je, in čeprav lahko izračuna sinusne vrednosti, potrebujemo nekaj hitrejšega. Vrednosti bomo vnaprej izračunali in jih vnesli v 256-vnosni niz enobajtnih ali char vrednosti v našem programu (glej deklaracijo SineTable […] v programu Arduino).

4. korak: Zgradimo 3D LIssajous vzorec

Zgradimo 3D LIssajous vzorec
Zgradimo 3D LIssajous vzorec

Če želite krožiti po tabeli z različno frekvenco za vsako od treh barv, bomo obdržali en indeks za barvo in vsakemu indeksu dodali sorazmerno premike, ko bomo korakali skozi barve. Izbrali bomo 2, 5 in 11 kot relativno primarni odmik za vrednosti rdečega, zelenega in modrega indeksa. Lastne notranje matematične zmogljivosti Arduina nam bodo pomagale tako, da se samodejno ovijejo, ko vsakemu indeksu dodamo vrednost odmika.

5. korak: Vse skupaj združite na Arduino

Vse to skupaj postavite na Arduino
Vse to skupaj postavite na Arduino

Večina Arduinov ima številne kanale PWM (ali impulzno širinsko modulacijo). Tu potrebujemo tri. Arduino UNO je za to odličen. Tudi majhen 8-bitni mikrokrmilnik Atmel (ATTiny85) deluje čudovito.

Vsak od kanalov PWM bo poganjal eno barvo LED RGB z uporabo Arduinove funkcije "AnalogWrite", kjer je intenzivnost barve na vsaki točki okoli sinusnega cikla predstavljena s širino impulza ali obratovalnim ciklom od 0 (vse izklopljeno)) do 255 (vse vklopljeno). Naše oči zaznavajo te različne širine impulzov, ki se ponavljajo dovolj hitro, kot različne jakosti ali svetlosti LED. Kombiniramo vse tri kanale PWM, ki poganjajo vsako od treh barv v RGB LED, dobimo možnost prikaza 256*256*256 ali več kot šestnajst milijonov barv!

Morali boste nastaviti Arduino IDE (interaktivno razvojno okolje) in ga s kablom USB povezati s ploščo Arduino. Preklopite mostičke iz izhodov PWM 3, 5 in 6 (procesorski zatiči 5, 11 in 12) na tri upore 1 KΩ (tisoč ohmov) na vaši proto plošči ali proto ščitu in od uporov na LED R, G, in zatiči B.

  • Če je LED RGB skupna katoda (negativni priključek), potegnite žico od katode nazaj do zatiča GND na Arduinu.
  • Če je LED RGB skupna anoda (pozitivni priključek), potegnite žico od anode nazaj do +5V pin na Arduinu.

Skica Arduino bo delovala tako ali drugače. Slučajno sem uporabil LED z običajno katodo SparkFun Electronics / COM-11120 RGB (na sliki zgoraj, s spletnega mesta SparkFun). Najdaljši zatič je skupna katoda.

Prenesite skico RGB-Instructable.ino, jo odprite z Arduino IDE in jo preizkusite. Ne pozabite določiti pravilne ciljne plošče ali čipa Arduino, nato pa naložite program v Arduino. Takoj bi se moral zagnati.

Boste videli cikel RGB LED skozi toliko barv, kot jih lahko poimenujete, in milijone ne morete!

6. korak: Kaj sledi?

Pravkar smo začeli raziskovati RGB barvni prostor z našim Arduinom. Nekatere druge stvari, ki sem jih naredil s tem konceptom, so:

Neposredno pisanje v registre na čipu, namesto uporabe AnalogWrite, da bi stvari resnično pospešili

  • Spreminjanje vezja tako, da senzor bližine IR pospeši ali upočasni cikel, odvisno od tega, kako blizu ste
  • Programiranje 8-polnega mikrokrmilnika Atmel ATTiny85 z zagonskim nalagalnikom Arduino in to skico

Priporočena: