Sisällysluettelo:

Väriavaruuden tutkiminen: 6 vaihetta
Väriavaruuden tutkiminen: 6 vaihetta

Video: Väriavaruuden tutkiminen: 6 vaihetta

Video: Väriavaruuden tutkiminen: 6 vaihetta
Video: Asus MX279H-näyttö 27" (Tuote: 643503) 2024, Heinäkuu
Anonim
Väriavaruuden tutkiminen
Väriavaruuden tutkiminen

Silmämme havaitsevat valon reseptoreiden kautta, jotka ovat herkkiä punaisille, vihreille ja sinisille väreille visuaalisessa spektrissä. Ihmiset ovat käyttäneet tätä tosiasiaa tarjotakseen värikuvia elokuvan, television, tietokoneiden ja muiden laitteiden välityksellä noin sadan viime vuoden aikana.

Tietokoneen tai puhelimen näytössä kuvat näytetään monissa väreissä muuttamalla pieniä, punaisia, vihreitä ja sinisiä LED -valoja, jotka ovat vierekkäin näytöllä. Miljoonia eri värejä voidaan näyttää muuttamalla punaisen, vihreän tai sinisen LED -valon voimakkuutta.

Tämä projekti auttaa sinua tutkimaan punaista, vihreää ja sinistä (RGB) väriavaruutta Arduinon, RGB -LEDin ja pienen matematiikan avulla.

Voit ajatella kolmen värin, punaisen, vihreän ja sinisen, voimakkuutta koordinaateina kuutiossa, jossa jokainen väri on yhtä akselia pitkin ja kaikki kolme akselia kohtisuorassa toisiinsa nähden. Mitä lähempänä olet akselin nollapistettä tai alkuperää, sitä vähemmän väriä näkyy. Kun kaikkien kolmen värin arvot ovat nollapisteessä tai alkuperässä, väri on musta ja RGB -merkkivalo ei pala. Kun kaikkien kolmen värin arvot ovat niin korkeat kuin mahdollista (meidän tapauksessamme 255 kullekin kolmesta väristä), RGB -merkkivalo palaa kokonaan ja silmä havaitsee tämän väriyhdistelmän valkoisena.

Vaihe 1: RGB -väriavaruus

RGB -väriavaruus
RGB -väriavaruus

Kiitos Kenneth Morelandille luvasta käyttää hänen hienoa kuvaaan.

Haluamme tutkia 3D -väriavaruuden kulmia käyttämällä Arduinoon yhdistettyä RGB -LEDiä, mutta haluamme myös tehdä tämän mielenkiintoisella tavalla. Voisimme tehdä sen pesimällä kolme silmukkaa (yksi punaista, vihreää ja sinistä varten) ja käymällä läpi kaikki mahdolliset väriyhdistelmät, mutta se olisi todella tylsää. laservaloshow? Asetuksista riippuen Lissajous-kuvio voi näyttää viistolta, ympyrältä, kuviolta 8 tai hitaasti pyörivältä terävältä perhosemaiselta kuviolta. Lissajous-kuviot luodaan seuraamalla kahden (tai useamman) x-y (tai meidän tapauksemme x-y-z tai R-G-B) akselille piirretyn oskillaattorin sinimuotoisia signaaleja.

Vaihe 2: Hyvä laiva Lissajous

Hyvä laiva Lissajous
Hyvä laiva Lissajous

Mielenkiintoisimmat Lissajous -kuviot näkyvät, kun sinimuotoisten signaalien taajuudet eroavat pienestä määrästä. Tässä oskilloskooppikuvassa taajuudet eroavat toisistaan 5: llä (molemmat ovat alkulukuja). Tämä kuvio peittää neliönsä melko hyvin ja kulkee kauniisti kulmiin. Suuremmat alkuluvut tekisivät vielä paremman työn peittämällä neliön ja työntämällä vieläkin kulmiin.

Vaihe 3: Odota - kuinka voimme ohjata LEDiä sinimuotoisella aallolla?

Sait minut kiinni! Haluamme tutkia 3D -väritilaa, joka vaihtelee pois (0) -täysi (255) kullekin kolmesta väristä, mutta sinimuotoiset aallot vaihtelevat -1: stä +1: een. Teemme täällä pientä matematiikkaa ja ohjelmointia saadaksemme haluamamme.

  • Kerro jokainen arvo 127: llä saadaksesi arvot -127 -+127
  • Lisää 127 ja pyöristä jokainen arvo, jotta saat arvot, jotka vaihtelevat 0: sta 255: een (tarpeeksi lähellä 255: tä meille)

Arvot, jotka vaihtelevat 0: sta 255: een, voidaan esittää yksitavuisina numeroina ("char" -tyyppi C-kaltaisella Arduino-ohjelmointikielellä), joten tallennamme muistia käyttämällä yhden tavun esitystä.

Mutta entä kulmat? Jos käytät asteita, kulmat ovat sinimuotoisia välillä 0 - 360. Jos käytät radiaaneja, kulmat vaihtelevat 0 - 2 kertaa π ("pi"). Aiomme tehdä jotain, joka taas säilyttää muistimme Arduinollamme, ja ajatella ympyrää, joka on jaettu 256 osaan ja jossa on "binaarikulmat", jotka vaihtelevat 0: sta 255: een, joten kunkin kulman "kulmat" voivat olla yksitavuisia numeroita tai merkkejä.

Arduino on aivan uskomaton juuri sellaisenaan, ja vaikka se voi laskea sinimuotoisia arvoja, tarvitsemme jotain nopeampaa. Laskemme arvot etukäteen ja lisäämme ne ohjelmamme 256 merkin pituiseen yksitavuiseen tai char-arvoon (katso SineTable […] -ilmoitus Arduino-ohjelmassa).

Vaihe 4: Rakennetaan 3D -LIssajous -malli

Rakennetaan 3D LIssajous -kuvio
Rakennetaan 3D LIssajous -kuvio

Jos haluat selata taulukkoa eri taajuuksilla kullekin kolmesta väristä, säilytämme yhden indeksin väriä kohden ja lisäämme suhteellisen parhaita poikkeamia kullekin indeksille, kun kuljemme värejä läpi. Valitsemme 2, 5 ja 11 punaisen, vihreän ja sinisen indeksin arvojen suhteellisiksi poikkeamiksi. Arduinon omat sisäiset matemaattiset ominaisuudet auttavat meitä kiertämään automaattisesti, kun lisäämme offset -arvon jokaiseen indeksiin.

Vaihe 5: Laita tämä kaikki yhteen Arduinolle

Tämän kaiken yhdistäminen Arduinolle
Tämän kaiken yhdistäminen Arduinolle

Useimmilla Arduinolla on useita PWM (tai pulssileveysmodulaatio) -kanavia. Täällä tarvitsemme kolmea. Arduino UNO on loistava tähän. Jopa pieni 8-bittinen Atmel-mikrokontrolleri (ATTiny85) toimii upeasti.

Jokainen PWM -kanava ajaa yhtä RGB -LED -väriä käyttämällä Arduinon "AnalogWrite" -toimintoa, jossa värin voimakkuus kussakin sinimuotoisen syklin pisteessä ilmaistaan pulssileveydellä tai käyttöjaksolla nollasta (kaikki pois päältä)) 255 (kaikki päällä). Silmämme näkevät nämä vaihtelevat pulssileveydet, jotka toistuvat riittävän nopeasti, LEDin eri voimakkuuksina tai kirkkauksina. Yhdistämällä kaikki kolme PWM -kanavaa, jotka ohjaavat kaikkia kolmea väriä RGB -LED -valossa, saamme mahdollisuuden näyttää 256*256*256 tai yli kuusitoista miljoonaa väriä!

Sinun on määritettävä Arduino IDE (interaktiivinen kehitysympäristö) ja liitettävä se Arduino -korttiin USB -kaapelilla. Käytä hyppyjä PWM -lähdöistä 3, 5 ja 6 (suorittimen nastat 5, 11 ja 12) kolmeen 1 KΩ (tuhat ohmia) vastukseen proto -kortillasi tai protokilvessäsi ja vastuksista LED -R, G ja B -nastat.

  • Jos RGB -LED on yleinen katodi (negatiivinen napa), vedä katodista johto takaisin Arduinon GND -nastaan.
  • Jos RGB -LED on yleinen anodi (positiivinen napa), vedä johdin anodista takaisin Arduinon +5V -nastaan.

Arduinon luonnos toimii kummallakin tavalla. Satun käyttämään SparkFun Electronics / COM-11120 RGB-yhteistä katodi-LEDiä (kuvassa yllä, SparkFun-verkkosivustolta). Pisin tappi on yhteinen katodi.

Lataa RGB-Instructable.ino-luonnos, avaa se Arduino IDE: llä ja kokeile kääntää se. Muista määrittää oikea Arduino -kortti tai -piiri ja lataa ohjelma sitten Arduinoon. Sen pitäisi käynnistyä heti.

Näet RGB -LED -syklin niin monta väriä kuin voit nimetä ja miljoonia et!

Vaihe 6: Mitä seuraavaksi?

Olemme juuri alkaneet tutkia RGB -väriavaruutta Arduinon kanssa. Muita asioita, joita olen tehnyt tämän käsitteen kanssa, ovat:

Kirjoittaminen suoraan sirurekistereihin AnalogWriten käyttämisen sijaan nopeuttaaksesi asioita todella

  • Piirin muuttaminen siten, että infrapuna -läheisyysanturi nopeuttaa tai hidastaa sykliä sen mukaan, kuinka lähelle pääset
  • Atmel ATTiny85 8-nastaisen mikro-ohjaimen ohjelmointi Arduino-käynnistyslataimen ja tämän luonnoksen avulla

Suositeltava: