Talaan ng mga Nilalaman:

Paggalugad ng Puwang ng Kulay: 6 na Hakbang
Paggalugad ng Puwang ng Kulay: 6 na Hakbang

Video: Paggalugad ng Puwang ng Kulay: 6 na Hakbang

Video: Paggalugad ng Puwang ng Kulay: 6 na Hakbang
Video: Top 10 Pinaka Masakit na Parusa Noong Unang Panahon "Medieval Age" #Kaalaman #Facts #History #Kwento 2024, Hulyo
Anonim
Paggalugad sa Puwang ng Kulay
Paggalugad sa Puwang ng Kulay

Ang aming mga mata ay nakakakita ng ilaw sa pamamagitan ng mga receptor na sensitibo sa pula, berde, at asul na mga kulay sa visual spectrum. Ginamit ng mga tao ang katotohanang ito upang magbigay ng mga larawan ng kulay sa pamamagitan ng pelikula, telebisyon, computer, at iba pang mga aparato sa nakaraang isang daang taon o mahigit pa.

Sa isang computer o display ng telepono, ang mga imahe ay ipinapakita sa maraming mga kulay sa pamamagitan ng pagbabago ng tindi ng maliliit na pula, berde, at asul na mga LED na magkatabi sa screen. Milyun-milyong iba't ibang mga kulay ay maaaring ipakita sa pamamagitan ng pagbabago ng tindi ng ilaw mula sa pula, berde, o asul na LED.

Tutulungan ka ng proyektong ito na galugarin ang espasyo ng kulay ng pula, berde, at asul (RGB) gamit ang isang Arduino, isang RGB LED, at isang maliit na matematika.

Maaari mong isipin ang tindi ng tatlong kulay, pula, berde, at asul, bilang mga coordinate sa isang kubo, kung saan ang bawat kulay ay magkakasama sa isang axis, at ang lahat ng tatlong mga axes ay patayo sa isa't isa. Kung mas malapit ka sa zero point, o pinagmulan, ng axis, mas mababa ang kulay na iyon ay ipinapakita. Kapag ang mga halaga para sa lahat ng tatlong mga kulay ay nasa zero point, o pinagmulan, pagkatapos ang kulay ay itim, at ang RGB LED ay ganap na naka-off. Kapag ang mga halaga para sa lahat ng tatlong mga kulay ay kasing taas ng maaari nilang puntahan (sa aming kaso, 255 para sa bawat isa sa tatlong mga kulay), ang RGB LED ay ganap na nakabukas, at nakikita ng mata ang kombinasyon ng mga kulay na puti.

Hakbang 1: RGB Color Space

RGB Color Space
RGB Color Space

Salamat kay Kenneth Moreland para sa pahintulot na magamit ang kanyang magandang imahe.

Nais naming galugarin ang mga sulok ng 3D color space cube gamit ang isang RGB LED na konektado sa isang Arduino, ngunit nais din itong gawin sa isang nakawiwiling paraan. Maaari nating gawin ito sa pamamagitan ng pagsabog ng tatlong mga loop (bawat isa para sa pula, para sa berde, at para sa asul), at pagtakbo sa bawat posibleng kumbinasyon ng kulay, ngunit talagang nakakainip. Nakita mo ba ang isang 2D Lissajous pattern sa isang oscilloscope o laser light show? Nakasalalay sa mga setting, ang isang pattern ng Lissajous ay maaaring magmukhang isang dayagonal na linya, isang bilog, isang figure 8, o isang mabagal na umiikot na pointy na butterfly-like pattern. Ang mga mapanirang pattern ay nilikha sa pamamagitan ng pagsubaybay ng mga sinusoidal signal ng dalawa (o higit pa) na mga oscillator na naka-plot sa x-y (o, para sa aming kaso, x-y-z o R-G-B) axes.

Hakbang 2: Ang Magandang Lissajous sa Barko

Ang Mahusay na Barko na Mapanghamon
Ang Mahusay na Barko na Mapanghamon

Ang pinaka-kagiliw-giliw na mga pattern ng Lissajous ay lilitaw kapag ang mga frequency ng mga signal ng sinusoidal ay naiiba sa pamamagitan ng isang maliit na halaga. Sa larawan ng oscilloscope dito, ang mga frequency ay naiiba sa isang ratio na 5 hanggang 2 (kapwa mga pangunahing numero). Ang pattern na ito ay sumasakop sa parisukat na ito ng maayos, at maayos na napupunta sa mga sulok. Ang mas mataas na mga pangunahing numero ay gagawa ng isang mas mahusay na trabaho ng pagtakip sa parisukat at paglukso kahit sa mga sulok.

Hakbang 3: Maghintay - Paano Kami Magmamaneho ng isang LED Na May Sinusoidal Wave?

Nahuli mo ako! Nais naming tuklasin ang puwang ng kulay ng 3D na saklaw mula sa off (0) hanggang sa buong (255) para sa bawat isa sa tatlong mga kulay, ngunit ang mga sinusoidal na alon ay nag-iiba mula -1 hanggang +1. Gagawa kami ng kaunting matematika at programa dito upang makuha ang nais namin.

  • I-multiply ang bawat halaga ng 127 upang makakuha ng mga halagang saklaw mula -127 hanggang +127
  • Magdagdag ng 127 at bilugan ang bawat halaga upang makakuha ng mga halagang saklaw mula 0 hanggang 255 (sapat na malapit sa 255 para sa amin)

Ang mga halagang mula sa 0 hanggang 255 ay maaaring kinatawan ng mga solong-byte na numero (ang uri ng data na "char" sa C-tulad ng Arduino na wika ng programa), kaya makakapag-save kami ng memorya sa pamamagitan ng paggamit ng solong-byte na representasyon.

Ngunit paano ang mga anggulo? Kung gumagamit ka ng mga degree, mga anggulo sa isang sinusoid saklaw mula 0 hanggang 360. Kung gumagamit ka ng mga radian, ang mga anggulo ay mula 0 hanggang 2 beses π ("pi"). Gagawa kami ng isang bagay na muling nag-iimbak ng memorya sa aming Arduino, at nag-iisip ng isang bilog na nahahati sa 256 na bahagi, at mayroong "mga anggulo ng binary" na umaabot mula 0 hanggang 255, kaya't ang mga "anggulo" para sa bawat kulay ay maaaring kinakatawan ng mga solong byte na numero, o char, narito din.

Ang Arduino ay kamangha-manghang kagaya nito, at kahit na makakalkula nito ang mga halagang sinusoidal, kailangan natin ng isang bagay na mas mabilis. Paunang kalkulahin namin ang mga halaga, at ilagay ang mga ito sa isang 256-entry na mahabang hanay ng solong byte, o mga halaga ng char sa aming programa (tingnan ang deklarasyon ng SineTable […] sa programa ng Arduino).

Hakbang 4: Bumuo Tayo ng isang 3D LIssajous na pattern

Bumuo tayo ng isang 3D LIssajous na pattern
Bumuo tayo ng isang 3D LIssajous na pattern

Upang mag-ikot sa talahanayan sa iba't ibang dalas para sa bawat isa sa tatlong mga kulay, panatilihin namin ang isang index bawat kulay, at magdagdag ng medyo pangunahing mga offset sa bawat index habang tinatahak namin ang mga kulay. Pipili kami ng 2, 5, at 11 bilang medyo pangunahing mga offset para sa mga halaga ng Red, Green, at Blue index. Ang sariling kakayahan sa panloob na matematika ng Arduino ay makakatulong sa amin sa pamamagitan ng awtomatikong pambalot habang idinagdag namin ang halaga ng offset sa bawat index.

Hakbang 5: Pagkakasama sa Lahat ng Ito sa Arduino

Ang paglalagay ng Lahat ng Ito sa Arduino
Ang paglalagay ng Lahat ng Ito sa Arduino

Karamihan sa Arduinos ay may isang bilang ng mga PWM (o pulso modulation lapad) na mga channel. Kakailanganin namin ang tatlo dito. Ang isang Arduino UNO ay mahusay para dito. Kahit na isang maliit na 8-bit na Atmel microcontroller (ATTiny85) ay gumagana nang mahusay.

Ang bawat isa sa mga channel ng PWM ay magdadala ng isang kulay ng RGB LED gamit ang function na "AnalogWrite" ng Arduino, kung saan ang tindi ng kulay sa bawat punto sa paligid ng sinusoidal cycle ay kinakatawan ng isang lapad ng pulso, o duty cycle, mula sa 0 (lahat ay off) hanggang 255 (lahat nasa). Mahahalata ng aming mga mata ang magkakaibang mga lapad ng pulso na ito, paulit-ulit na mabilis, tulad ng iba't ibang mga intensidad, o mga ilaw, ng LED. Pinagsasama ang lahat ng tatlong mga PWM channel na nagmamaneho ng bawat isa sa tatlong mga kulay sa isang RGB LED, nakakakuha kami ng kakayahang ipakita ang 256 * 256 * 256, o higit sa labing-anim na milyong mga kulay!

Kakailanganin mong i-set up ang Arduino IDE (Interactive Development Environment), at ikonekta ito sa iyong Arduino board gamit ang USB cable. Patakbuhin ang mga jumper mula sa output ng PWM na 3, 5, at 6 (mga pin ng processor na 5, 11, at 12) hanggang sa tatlong 1 KΩ (isang libong ohm) na resistor sa iyong board ng prot o proteksyon ng prot, at mula sa mga resistor sa LED R, G, at mga B pin.

  • Kung ang RGB LED ay isang pangkaraniwang katod (negatibong terminal), pagkatapos ay magpatakbo ng isang kawad mula sa katod pabalik sa pin ng GND sa Arduino.
  • Kung ang RGB LED ay isang pangkaraniwang anode (positibong terminal), pagkatapos ay magpatakbo ng isang kawad mula sa anode pabalik sa + 5V pin sa Arduino.

Gagana ang alinman sa alinman sa sketch ng Arduino. Nagkataon na gumamit ako ng isang SparkFun Electronics / COM-11120 RGB karaniwang cathode LED (nakalarawan sa itaas, mula sa SparkFun web site). Ang pinakamahabang pin ay ang karaniwang cathode.

I-download ang RGB-Instructable.ino sketch, buksan ito gamit ang Arduino IDE, at subukan itong ipunin. Siguraduhing tukuyin ang tamang target na board ng Arduino o chip, pagkatapos ay i-load ang programa sa Arduino. Dapat itong magsimula kaagad.

Makikita mo ang RGB LED cycle sa pamamagitan ng maraming mga kulay hangga't maaari mong pangalanan, at milyon-milyong hindi mo maaaring!

Hakbang 6: Ano ang Susunod?

Sinimulan lamang namin ang paggalugad ng RGB Color Space kasama ang aming Arduino. Ang ilan pang mga bagay na nagawa ko sa konseptong ito ay kasama ang:

Direktang pagsulat sa mga on-chip register, sa halip na gumamit ng AnalogWrite, upang talagang mapabilis ang mga bagay

  • Binabago ang circuit upang ang isang IR proximity sensor ay nagpapabilis o nagpapabagal ng ikot depende sa kung gaano ka kalapit
  • Pag-program ng isang Atmel ATTiny85 8-pin microcontroller gamit ang Arduino bootloader at ang sketch na ito

Inirerekumendang: