Satura rādītājs:

Krāsu telpas izpēte: 6 soļi
Krāsu telpas izpēte: 6 soļi

Video: Krāsu telpas izpēte: 6 soļi

Video: Krāsu telpas izpēte: 6 soļi
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Jūlijs
Anonim
Krāsu telpas izpēte
Krāsu telpas izpēte

Mūsu acis uztver gaismu caur receptoriem, kas ir jutīgi pret sarkanu, zaļu un zilu krāsu redzes spektrā. Apmēram pēdējo simts gadu laikā cilvēki ir izmantojuši šo faktu, lai nodrošinātu krāsainus attēlus, izmantojot filmu, televīziju, datorus un citas ierīces.

Datora vai tālruņa displejā attēli tiek parādīti daudzās krāsās, mainot sīko sarkano, zaļo un zilo gaismas diožu intensitāti, kas ekrānā atrodas blakus. Miljoniem dažādu krāsu var parādīt, mainot gaismas intensitāti no sarkanām, zaļām vai zilām gaismas diodēm.

Šis projekts palīdzēs jums izpētīt sarkano, zaļo un zilo (RGB) krāsu telpu, izmantojot Arduino, RGB LED un nedaudz matemātikas.

Jūs varat iedomāties trīs krāsu - sarkanās, zaļās un zilās - intensitāti kā koordinātas kubā, kur katra krāsa atrodas gar vienu asi un visas trīs asis ir perpendikulāras viena otrai. Jo tuvāk esat ass nulles punktam vai izcelsmei, jo mazāk tiek parādīta šī krāsa. Ja visu trīs krāsu vērtības ir nulles punktā vai izcelsmē, tad krāsa ir melna un RGB gaismas diode ir pilnībā izslēgta. Kad visu trīs krāsu vērtības ir pēc iespējas augstākas (mūsu gadījumā 255 katrai no trim krāsām), RGB gaismas diode ir pilnībā ieslēgta, un acs šo krāsu kombināciju uztver kā baltu.

1. darbība: RGB krāsu telpa

RGB krāsu telpa
RGB krāsu telpa

Paldies Kenetam Morelandam par atļauju izmantot savu jauko tēlu.

Mēs vēlētos izpētīt 3D krāsu telpas kuba stūrus, izmantojot RGB LED, kas savienots ar Arduino, bet arī vēlamies to darīt interesantā veidā. Mēs to varētu izdarīt, ligzdojot trīs cilpas (pa vienai sarkanai, zaļai un zilai) un izmantojot visas iespējamās krāsu kombinācijas, taču tas būtu patiešām garlaicīgi. Vai esat kādreiz redzējis 2D Lissajous modeli osciloskopā vai lāzera gaismas šovs? Atkarībā no iestatījumiem Lissajous raksts var izskatīties kā diagonāla līnija, aplis, skaitlis 8 vai lēni rotējošs smails tauriņam līdzīgs raksts. Lissajous modeļi tiek veidoti, izsekojot divu (vai vairāku) oscilatoru sinusoidālos signālus, kas uzzīmēti uz x-y (vai, mūsu gadījumā, x-y-z vai R-G-B) asīm.

2. solis: labais kuģis Lissajous

Labais kuģis Lissajous
Labais kuģis Lissajous

Interesantākie Lissajous modeļi parādās tad, kad sinusoidālo signālu frekvences nedaudz atšķiras. Šeit esošajā osciloskopa fotoattēlā frekvences atšķiras par attiecību no 5 līdz 2 (abi ir pirmskaitļi). Šis modelis diezgan labi pārklāj savu kvadrātu un lieliski iekļūst stūros. Lielāki pirmskaitļi darītu vēl labāku darbu, aptverot laukumu un iedurot vēl tālāk stūros.

3. solis: pagaidiet - kā mēs varam vadīt LED ar sinusoidālu viļņu?

Tu mani pieķēri! Mēs vēlamies izpētīt 3D krāsu telpu, kas svārstās no izslēgtas (0) līdz pilnībā ieslēgtai (255) katrai no trim krāsām, bet sinusoidālie viļņi svārstās no -1 līdz +1. Mēs šeit veiksim nelielu matemātiku un programmēšanu, lai iegūtu to, ko vēlamies.

  • Reiziniet katru vērtību ar 127, lai iegūtu vērtības diapazonā no -127 līdz +127
  • Pievienojiet 127 un noapaļojiet katru vērtību, lai iegūtu vērtības diapazonā no 0 līdz 255 (pietiekami tuvu līdz 255 mums)

Vērtības, kas svārstās no 0 līdz 255, var attēlot ar viena baita skaitļiem ("char" datu tips C līdzīgajā Arduino programmēšanas valodā), tāpēc mēs ietaupīsim atmiņu, izmantojot viena baita attēlojumu.

Bet kā ar leņķiem? Ja izmantojat grādus, leņķi sinusoidālā diapazonā ir no 0 līdz 360. Ja izmantojat radiānus, leņķi svārstās no 0 līdz 2 reizēm π ("pi"). Mēs darīsim kaut ko tādu, kas atkal saglabā atmiņu mūsu Arduino, un domāsim par apli, kas sadalīts 256 daļās, un “binārie leņķi” būs robežās no 0 līdz 255, tāpēc katras krāsas “leņķi” var būt arī šeit tiek attēloti viena baita skaitļi vai rakstzīmes.

Arduino ir diezgan pārsteidzošs tieši tāds, kāds tas ir, un, lai gan tas var aprēķināt sinusoidālās vērtības, mums ir nepieciešams kaut kas ātrāk. Mēs iepriekš aprēķināsim vērtības un ievietosim tās 256 ierakstu garā viena baita vai char vērtību masīvā mūsu programmā (skatiet SineTable […] deklarāciju Arduino programmā).

4. solis: izveidosim 3D LIsajous modeli

Izveidosim 3D LIsajous modeli
Izveidosim 3D LIsajous modeli

Lai pārvietotos pa tabulu ar atšķirīgu frekvenci katrai no trim krāsām, mēs saglabāsim vienu indeksu katrai krāsai un katram indeksam pievienosim salīdzinoši lielākus nobīdes, ejot cauri krāsām. Mēs izvēlēsimies 2, 5 un 11 kā salīdzinoši galvenās sarkanā, zaļā un zilā indeksa vērtību kompensācijas. Arduino pašas iekšējās matemātiskās iespējas mums palīdzēs, automātiski iesaiņojoties, pievienojot nobīdes vērtību katram indeksam.

5. solis: ievietojiet to visu kopā Arduino

Liekot to visu kopā uz Arduino
Liekot to visu kopā uz Arduino

Lielākajai daļai Arduinos ir vairāki PWM (vai impulsa platuma modulācijas) kanāli. Šeit mums vajadzēs trīs. Arduino UNO tam ir lieliski piemērots. Pat neliels 8 bitu Atmel mikrokontrolleris (ATTiny85) darbojas pasakaini.

Katrs PWM kanāls vadīs vienu RGB gaismas diodes krāsu, izmantojot Arduino funkciju “AnalogWrite”, kur krāsas intensitāti katrā sinusoidālā cikla punktā attēlo impulsa platums jeb darba cikls no 0 (viss izslēgts) līdz 255 (visi ieslēgti). Mūsu acis uztver šos dažādos impulsa platumus, kas tiek pietiekami ātri atkārtoti, kā dažādu gaismas diodes intensitāti vai spilgtumu. Apvienojot visus trīs PWM kanālus, kas virza katru no trim krāsām RGB gaismas diodē, mēs iegūstam iespēju attēlot 256*256*256 jeb vairāk nekā sešpadsmit miljonus krāsu!

Jums būs jāiestata Arduino IDE (interaktīvā izstrādes vide) un jāpievieno tā pie Arduino plates, izmantojot USB kabeli. Palaidiet džemperus no PWM izejām 3, 5 un 6 (procesora tapas 5, 11 un 12) līdz trim 1 KΩ (viena tūkstoša omu) rezistoriem uz jūsu proto plates vai proto vairoga, un no rezistoriem līdz LED R, G un B tapas.

  • Ja RGB gaismas diode ir parasts katods (negatīvs terminālis), tad vadiet vadu no katoda atpakaļ uz GND tapu Arduino.
  • Ja RGB gaismas diode ir parasts anods (pozitīvs terminālis), tad vadiet vadu no anoda atpakaļ uz +5V tapu Arduino.

Arduino skice darbosies jebkurā veidā. Man gadījās izmantot SparkFun Electronics / COM-11120 RGB kopējā katoda LED (attēlā iepriekš, no SparkFun tīmekļa vietnes). Garākā tapa ir parastais katods.

Lejupielādējiet RGB-Instructable.ino skici, atveriet to, izmantojot Arduino IDE, un pārbaudiet, kā to apkopot. Noteikti norādiet pareizo mērķa Arduino plāksni vai mikroshēmu, pēc tam ielādējiet programmu Arduino. Tam vajadzētu sākt nekavējoties.

Jūs redzēsiet RGB LED ciklu, izmantojot tik daudz krāsu, cik varat nosaukt, un miljoniem jūs to nevarat!

6. darbība: kas tālāk?

Mēs tikko esam sākuši izpētīt RGB krāsu telpu ar mūsu Arduino. Dažas citas lietas, ko esmu darījis ar šo koncepciju, ir šādas:

Tieša rakstīšana mikroshēmu reģistros, nevis AnalogWrite izmantošana, lai patiešām paātrinātu lietas

  • Ķēdes pārveidošana tā, lai IR tuvuma sensors paātrinātu vai palēninātu ciklu atkarībā no tā, cik tuvu esat
  • Atmel ATTiny85 8 kontaktu mikrokontrollera programmēšana ar Arduino sāknēšanas ielādētāju un šo skici

Ieteicams: