Sisukord:

Värviruumi uurimine: 6 sammu
Värviruumi uurimine: 6 sammu

Video: Värviruumi uurimine: 6 sammu

Video: Värviruumi uurimine: 6 sammu
Video: РЕМОНТ КВАРТИРЫ 6 МЕСЯЦЕВ ЗА 30 МИНУТ ОТ А ДО Я #квартиравсочи #переездвдеревню #ремонт #юг 2024, Juuli
Anonim
Värviruumi uurimine
Värviruumi uurimine

Meie silmad tajuvad valgust retseptorite kaudu, mis on visuaalses spektris punaste, roheliste ja siniste värvide suhtes tundlikud. Inimesed on seda asjaolu viimase saja aasta jooksul kasutanud värviliste piltide pakkumiseks filmi, televisiooni, arvutite ja muude seadmete kaudu.

Arvuti või telefoni ekraanil kuvatakse pilte paljudes värvides, muutes ekraanil üksteise kõrval olevate pisikeste punaste, roheliste ja siniste valgusdioodide intensiivsust. Punase, rohelise või sinise valgusdioodi valguse intensiivsust muutes saab näidata miljoneid erinevaid värve.

See projekt aitab teil uurida punast, rohelist ja sinist (RGB) värviruumi, kasutades Arduino, RGB LED -d ja natuke matemaatikat.

Võite mõelda kolme värvi - punase, rohelise ja sinise - intensiivsusele kui koordinaatidele kuubikus, kus iga värv on piki ühte telge ja kõik kolm telge on üksteisega risti. Mida lähemal telje nullpunktile või lähtepunktile olete, seda vähem näidatakse seda värvi. Kui kõigi kolme värvi väärtused on nullpunktis või päritolus, on värv must ja RGB LED on täielikult välja lülitatud. Kui kõigi kolme värvi väärtused on nii kõrged kui võimalik (meie puhul 255 iga kolme värvi kohta), on RGB LED täielikult sisse lülitatud ja silm tajub seda värvikombinatsiooni valgena.

Samm: RGB värviruum

RGB värviruum
RGB värviruum

Aitäh Kenneth Morelandile loa eest oma kena pilti kasutada.

Tahaksime 3D -värviruumi kuubi nurki uurida Arduinoga ühendatud RGB LED -i abil, kuid tahame seda ka huvitaval viisil teha. Me võiksime seda teha, pesades kolm silmust (üks punase, rohelise ja sinise jaoks) ja läbides kõik võimalikud värvikombinatsioonid, kuid see oleks tõesti igav. Kas olete kunagi näinud 2D Lissajous mustrit ostsilloskoopil või laservalgusetendus? Sõltuvalt seadetest võib Lissajouse muster välja näha nagu diagonaaljoon, ring, joonis 8 või aeglaselt pöörlev terav liblikataoline muster. Lissajouse mustrid luuakse kahe (või enama) x-y (või meie puhul x-y-z või R-G-B) teljele joonistatud ostsillaatori sinusoidaalsete signaalide jälgimisel.

2. etapp: hea laev Lissajous

Hea laev Lissajous
Hea laev Lissajous

Kõige huvitavamad Lissajouse mustrid ilmuvad siis, kui siinusignaalide sagedused erinevad vähesel määral. Ostsilloskoobi fotol erinevad siin sagedused suhtega 5 kuni 2 (mõlemad on algarvud). See muster katab oma ruudu päris hästi ja satub kenasti nurkadesse. Suuremad algarvud teeksid veel paremini väljaku katmise ja veelgi kaugemale nurkadesse torkimise.

3. samm: oodake - kuidas saame sinusoidaalse lainega LED -i juhtida?

Sa said mu kätte! Soovime uurida 3D -värviruumi, mis ulatub iga kolme värvi puhul välja (0) kuni täielikult sisse (255), kuid siinuslained varieeruvad vahemikus -1 kuni +1. Me teeme siin natuke matemaatikat ja programmeerimist, et saada seda, mida tahame.

  • Korrutage iga väärtus 127 -ga, et saada väärtused vahemikus -127 kuni +127
  • Lisage 127 ja ümardage iga väärtus, et saada väärtused vahemikus 0–255 (meie jaoks piisavalt lähedal 255 -le)

Väärtusi, mis jäävad vahemikku 0 kuni 255, saab esitada ühebaidiste numbritega (C-tüüpi Arduino programmeerimiskeele andmetüüp "char"), seega säästame mälu, kasutades ühebaidist esitust.

Aga kuidas on nurkadega? Kui kasutate kraade, on nurk sinusoidses vahemikus 0 kuni 360. Kui kasutate radiaane, on nurgad vahemikus 0 kuni 2 korda π ("pi"). Teeme midagi, mis säilitab meie Arduino mälu, ja mõtleme ringile, mis on jagatud 256 osaks ning mille binaarnurgad on vahemikus 0 kuni 255, nii et iga värvi nurgad võivad olla ka siin on ühebaidised numbrid või märgid.

Arduino on päris hämmastav just sellisena, nagu see on, ja kuigi see suudab arvutada sinusoidaalseid väärtusi, vajame midagi kiiremat. Arvutame väärtused eelnevalt ja sisestame need oma programmi 256 kirjega ühebaidiste või sümboliväärtuste hulka (vt Arduino programmi SineTable […] deklaratsiooni).

Samm: loome 3D LIssajouse mustri

Loome 3D LIssajouse mustri
Loome 3D LIssajouse mustri

Tabeli iga kolme värvi jaoks erineval sagedusel liikumiseks hoiame iga värvi kohta ühe indeksi ja lisame värvidele astudes igale indeksile suhteliselt parima nihke. Valime punase, rohelise ja sinise indeksi väärtuste suhteliselt peamiseks nihkeks 2, 5 ja 11. Arduino enda sisemised matemaatikavõimalused aitavad meil automaatselt ümber keerduda, kui lisame igale indeksile nihke väärtuse.

Samm: pange see kõik kokku Arduinole

Paneme selle kõik kokku Arduinole
Paneme selle kõik kokku Arduinole

Enamikul Arduinos on mitu PWM (või impulsi laiuse modulatsiooni) kanalit. Meil on siin vaja kolme. Arduino UNO sobib selleks suurepäraselt. Isegi väike 8-bitine Atmeli mikrokontroller (ATTiny85) töötab vapustavalt.

Iga PWM -kanal juhib ühte RGB -LED -i värvi, kasutades Arduino funktsiooni "AnalogWrite", kus värvi intensiivsust igas sinusoidaalse tsükli punktis näidatakse impulsi laiuse või töötsükliga alates 0 (kõik välja lülitatud) kuni 255 (kõik sisse lülitatud). Meie silmad tajuvad neid erinevaid impulsside laiusi, mida korratakse piisavalt kiiresti, LED -i erineva intensiivsuse või heledusena. Kombineerides kõik kolm PWM -kanalit, mis juhivad kõiki kolme värvi RGB LED -i, saame võimaluse kuvada 256*256*256 ehk üle kuusteist miljonit värvi!

Peate seadistama Arduino IDE (interaktiivne arenduskeskkond) ja ühendama selle USB -kaabli abil oma Arduino plaadiga. Käivitage džemprid PWM -väljunditest 3, 5 ja 6 (protsessori tihvtid 5, 11 ja 12) kolmele 1 KΩ (tuhande oomi) takistile oma protoplaadil või protokilbil ja takistitelt LED -ile R, G ja B tihvtid.

  • Kui RGB LED on tavaline katood (negatiivne klemm), siis viige katoodist juhe tagasi Arduino GND tihvti.
  • Kui RGB LED on tavaline anood (positiivne klemm), siis juhtige anoodist juhe tagasi Arduino +5V kontakti.

Arduino visand töötab mõlemal viisil. Juhtusin kasutama SparkFun Electronics / COM-11120 RGB ühise katoodi LED-i (ülaltoodud pildil SparkFuni veebisaidilt). Pikim tihvt on tavaline katood.

Laadige alla visand RGB-Instructable.ino, avage see Arduino IDE abil ja proovige see kompileerida. Kindlasti määrake õige sihtmärgi Arduino plaat või kiip, seejärel laadige programm Arduino. See peaks kohe käivituma.

Näete RGB LED -tsüklit nii palju värve kui saate nimetada ja miljoneid te ei näe!

6. samm: mis saab edasi?

Alustasime oma Arduinoga just RGB värviruumi uurimist. Mõned muud asjad, mida ma selle kontseptsiooniga teinud olen, on järgmised:

Kirjutamine otse kiibi registritesse, selle asemel, et AnalogWrite'i kasutada, asjade kiirendamiseks

  • Vooluahela muutmine nii, et infrapuna lähedusandur kiirendaks või aeglustaks tsüklit sõltuvalt sellest, kui lähedale jõuate
  • Atmel ATTiny85 8-kontaktilise mikrokontrolleri programmeerimine Arduino alglaaduri ja selle visandiga

Soovitan: