Turinys:

Spalvų erdvės tyrimas: 6 žingsniai
Spalvų erdvės tyrimas: 6 žingsniai

Video: Spalvų erdvės tyrimas: 6 žingsniai

Video: Spalvų erdvės tyrimas: 6 žingsniai
Video: Кто-нибудь из вас слышал о полуночной игре? Страшные истории. Мистика. Ужасы 2024, Lapkritis
Anonim
Spalvų erdvės tyrinėjimas
Spalvų erdvės tyrinėjimas

Mūsų akys suvokia šviesą per receptorius, kurie yra jautrūs raudonos, žalios ir mėlynos spalvos regos spektre. Žmonės naudojo šį faktą spalvotiems vaizdams teikti per filmą, televiziją, kompiuterius ir kitus įrenginius maždaug per pastaruosius šimtą metų.

Kompiuterio ar telefono ekrane vaizdai rodomi daugybe spalvų, keičiant mažų raudonų, žalių ir mėlynų šviesos diodų, esančių greta vienas kito ekrane, intensyvumą. Keičiant raudonos, žalios arba mėlynos šviesos diodų šviesos intensyvumą, galima parodyti milijonus skirtingų spalvų.

Šis projektas padės jums ištirti raudonos, žalios ir mėlynos (RGB) spalvų erdvę, naudojant „Arduino“, RGB šviesos diodą ir šiek tiek matematikos.

Galite įsivaizduoti trijų spalvų - raudonos, žalios ir mėlynos - intensyvumą kaip koordinates kube, kur kiekviena spalva yra išilgai vienos ašies, o visos trys ašys yra statmenos viena kitai. Kuo arčiau ašies nulio taško arba kilmės, tuo mažiau tos spalvos rodoma. Kai visų trijų spalvų vertės yra nuliniame taške arba kilmėje, tada spalva yra juoda, o RGB šviesos diodas yra visiškai išjungtas. Kai visų trijų spalvų vertės yra tokios didelės, kokios tik gali būti (mūsų atveju - 255 kiekvienai iš trijų spalvų), RGB šviesos diodas yra visiškai įjungtas, o akis šį spalvų derinį suvokia kaip baltą.

1 žingsnis: RGB spalvų erdvė

RGB spalvų erdvė
RGB spalvų erdvė

Ačiū Kennethui Morelandui už leidimą naudoti savo gražų įvaizdį.

Mes norėtume ištirti 3D spalvų erdvės kubo kampus, naudodami RGB šviesos diodą, prijungtą prie „Arduino“, bet taip pat norime tai padaryti įdomiai. Mes galėtume tai padaryti įdėdami tris kilpas (po vieną raudonai, žaliai ir mėlynai) ir eidami per visus galimus spalvų derinius, tačiau tai būtų tikrai nuobodu. Ar kada nors matėte 2D Lissajous modelį osciloskopu ar lazerio šviesos šou? Priklausomai nuo nustatymų, „Lissajous“modelis gali atrodyti kaip įstriža linija, apskritimas, 8 paveikslas arba lėtai besisukantis smailus į drugelį panašus raštas. Lissajous modeliai yra sukurti stebint dviejų (ar daugiau) osciliatorių, nubrėžtų ant x-y (arba, mūsų atveju, x-y-z arba R-G-B) ašių, sinusoidinius signalus.

2 žingsnis: geras laivas Lissajous

Geras laivas Lissajous
Geras laivas Lissajous

Įdomiausi Lissajous modeliai pasirodo, kai sinusoidinių signalų dažnis šiek tiek skiriasi. Čia esančioje osciloskopo nuotraukoje dažniai skiriasi santykiu nuo 5 iki 2 (abu yra pirminiai skaičiai). Šis modelis gana gerai padengia savo kvadratą ir gražiai patenka į kampus. Didesni pirminiai skaičiai dar geriau padengtų aikštę ir dar labiau įstumtų į kampus.

3 žingsnis: Palaukite - kaip mes galime valdyti šviesos diodą su sinusine banga?

Tu pagavai mane! Norime ištirti 3D spalvų erdvę, kuri yra nuo išjungtos (0) iki visiškai įjungtos (255) kiekvienai iš trijų spalvų, tačiau sinusinės bangos skiriasi nuo -1 iki +1. Mes čia darysime šiek tiek matematikos ir programavimo, kad gautume tai, ko norime.

  • Padauginkite kiekvieną reikšmę iš 127, kad gautumėte reikšmes nuo -127 iki +127
  • Pridėkite 127 ir suapvalinkite kiekvieną vertę, kad gautumėte reikšmes nuo 0 iki 255 (pakankamai arti 255 mums)

Vertes, kurios svyruoja nuo 0 iki 255, galima pavaizduoti vieno baito skaičiais („char“duomenų tipas C tipo „Arduino“programavimo kalba), todėl sutaupysime atminties naudodami vieno baito atvaizdavimą.

Bet kaip apie kampus? Jei naudojate laipsnius, sinusoidiniai kampai yra nuo 0 iki 360. Jei naudojate radianus, kampai yra nuo 0 iki 2 kartų π („pi“). Mes padarysime tai, kas vėl išsaugo mūsų „Arduino“atmintį, ir pagalvosime apie ratą, suskirstytą į 256 dalis, ir „dvejetainius kampus“nuo 0 iki 255, todėl kiekvienos spalvos „kampai“gali būti čia taip pat vaizduojami vieno baito skaičiai arba simboliai.

„Arduino“yra toks nuostabus, koks yra, ir nors jis gali apskaičiuoti sinusines vertes, mums reikia kažko greičiau. Mes iš anksto apskaičiuosime reikšmes ir įdėsime jas į 256 įrašų ilgio vieno baito arba char reikšmių masyvą savo programoje (žr. „SineTable […]“deklaraciją „Arduino“programoje).

4 žingsnis: Sukurkime 3D LIssajous modelį

Sukurkime 3D LIssajous modelį
Sukurkime 3D LIssajous modelį

Norėdami peržvelgti lentelę skirtingu dažnumu kiekvienai iš trijų spalvų, kiekvienai spalvai pasiliksime po vieną indeksą ir, kol pereisime spalvas, prie kiekvieno indekso pridėsime santykinai aukščiausius poslinkius. Mes pasirinksime 2, 5 ir 11 kaip santykinai svarbiausius raudonos, žalios ir mėlynos indeksų reikšmių poslinkius. „Arduino“vidinės matematinės galimybės padės mums automatiškai apsisukti, kai prie kiekvieno indekso pridedame kompensavimo vertę.

5 žingsnis: visa tai įdėkite į „Arduino“

Visa tai sudėjus į „Arduino“
Visa tai sudėjus į „Arduino“

Dauguma „Arduinos“turi daugybę PWM (arba impulsų pločio moduliacijos) kanalų. Čia mums reikės trijų. Tam puikiai tinka „Arduino UNO“. Net mažas 8 bitų „Atmel“mikrovaldiklis (ATTiny85) veikia nuostabiai.

Kiekvienas PWM kanalas valdys vieną RGB šviesos diodo spalvą, naudodamas „Arduino“funkciją „AnalogWrite“, kur spalvos intensyvumas kiekviename sinusinio ciklo taške parodomas impulsų pločiu arba darbo ciklu nuo 0 (viskas išjungta) iki 255 (viskas įjungta). Mūsų akys suvokia šiuos skirtingus impulsų pločius, pakartotus pakankamai greitai, kaip skirtingą šviesos diodo intensyvumą ar ryškumą. Sujungę visus tris PWM kanalus, valdančius kiekvieną iš trijų spalvų, RGB LED, mes galime parodyti 256*256*256 arba daugiau nei šešiolika milijonų spalvų!

Turėsite nustatyti „Arduino IDE“(interaktyvios plėtros aplinką) ir prijungti ją prie „Arduino“plokštės naudodami USB kabelį. Vykdykite trumpiklius iš PWM išėjimų 3, 5 ir 6 (procesoriaus kaiščiai 5, 11 ir 12) iki trijų 1 KΩ (vieno tūkstančio omų) rezistorių savo protinėje plokštėje arba protokole, o nuo rezistorių iki LED R, G ir B kaiščiai.

  • Jei RGB šviesos diodas yra įprastas katodas (neigiamas gnybtas), tada iš katodo praveskite laidą atgal į „Arduino“GND kaištį.
  • Jei RGB šviesos diodas yra įprastas anodas (teigiamas gnybtas), tada praveskite laidą iš anodo atgal į +5 V kaištį „Arduino“.

„Arduino“eskizas veiks bet kuriuo atveju. Aš atsitiko, kad naudojau „SparkFun Electronics“/ COM-11120 RGB bendrojo katodo šviesos diodą (pavaizduota aukščiau, iš „SparkFun“svetainės). Ilgiausias kaištis yra bendras katodas.

Atsisiųskite „RGB-Instructable.ino“eskizą, atidarykite jį naudodami „Arduino IDE“ir išbandykite. Būtinai nurodykite teisingą „Arduino“plokštę ar lustą, tada įkelkite programą į „Arduino“. Jis turėtų pradėti veikti nedelsiant.

Pamatysite RGB šviesos diodų ciklą tiek spalvų, kiek galite įvardinti, ir milijonų - ne!

6 žingsnis: kas toliau?

Mes ką tik pradėjome tyrinėti RGB spalvų erdvę su savo „Arduino“. Kai kurie kiti dalykai, kuriuos padariau su šia koncepcija, yra šie:

Tiesiogiai rašykite į mikroschemų registrus, o ne naudokite „AnalogWrite“, kad tikrai paspartintumėte reikalus

  • Grandinės modifikavimas taip, kad IR artumo jutiklis pagreitintų arba sulėtintų ciklą, priklausomai nuo to, kiek priartėsite
  • „Atmel ATTiny85“8 kontaktų mikrovaldiklio programavimas naudojant „Arduino“įkrovos įkroviklį ir šį eskizą

Rekomenduojamas: