Orodha ya maudhui:

Kuchunguza Nafasi ya Rangi: Hatua 6
Kuchunguza Nafasi ya Rangi: Hatua 6

Video: Kuchunguza Nafasi ya Rangi: Hatua 6

Video: Kuchunguza Nafasi ya Rangi: Hatua 6
Video: Учим цвета Разноцветные яйца на ферме Miroshka Tv 2024, Novemba
Anonim
Kuchunguza Nafasi ya Rangi
Kuchunguza Nafasi ya Rangi

Macho yetu hutambua mwangaza kupitia vipokezi ambavyo ni nyeti kwa rangi nyekundu, kijani kibichi na rangi ya samawati katika wigo wa kuona. Watu wametumia ukweli huu kutoa picha za rangi kupitia filamu, runinga, kompyuta, na vifaa vingine katika kipindi cha miaka mia moja hivi.

Katika onyesho la kompyuta au simu, picha zinaonyeshwa kwa rangi nyingi kwa kubadilisha ukubwa wa LED ndogo nyekundu, kijani kibichi na hudhurungi ambazo ziko karibu moja kwa moja kwenye skrini. Mamilioni ya rangi tofauti zinaweza kuonyeshwa kwa kubadilisha ukubwa wa nuru kutoka kwa LED nyekundu, kijani kibichi, au bluu.

Mradi huu utakusaidia kukagua nafasi ya rangi nyekundu, kijani kibichi na bluu (RGB) ukitumia Arduino, RGB LED, na hesabu kidogo.

Unaweza kufikiria ukubwa wa rangi tatu, nyekundu, kijani kibichi, na hudhurungi, kama uratibu katika mchemraba, ambapo kila rangi iko kando ya mhimili mmoja, na shoka zote tatu zinaelekeana. Unapokuwa karibu zaidi na ncha ya sifuri, au asili, ya mhimili, rangi ndogo hiyo inaonyeshwa. Wakati maadili ya rangi zote tatu iko kwenye sifuri, au asili, basi rangi ni nyeusi, na RGB LED imezimwa kabisa. Wakati maadili ya rangi zote tatu ni ya juu kama wanaweza kwenda (kwa upande wetu, 255 kwa kila moja ya rangi tatu), RGB LED imewashwa kabisa, na jicho linaona mchanganyiko huu wa rangi kama nyeupe.

Hatua ya 1: RGB Space Space

Nafasi ya Rangi ya RGB
Nafasi ya Rangi ya RGB

Asante kwa Kenneth Moreland kwa idhini ya kutumia picha yake nzuri.

Tungependa kuchunguza pembe za mchemraba wa nafasi ya rangi ya 3D ukitumia RGB LED iliyounganishwa na Arduino, lakini pia tunataka kufanya hivyo kwa njia ya kupendeza. Tunaweza kuifanya kwa kuweka vitanzi vitatu (moja kwa kila nyekundu, kwa kijani kibichi, na kwa hudhurungi), na kupitia kila mchanganyiko wa rangi inayowezekana, lakini hiyo itakuwa ya kuchosha sana. kuonyesha mwanga wa laser? Kulingana na mipangilio, muundo wa Lissajous unaweza kuonekana kama laini ya ulalo, duara, kielelezo cha 8, au muundo unaozunguka polepole kama kipepeo. Mwelekeo wa Lissajous huundwa kwa kufuata ishara za sinusoidal za oscillator mbili (au zaidi) zilizopangwa kwenye xy (au, kwa kesi yetu, x-y-z au R-G-B) axes.

Hatua ya 2: Meli nzuri Lissajous

Meli Nzuri Lissajous
Meli Nzuri Lissajous

Mifumo ya kupendeza ya Lissajous inaonekana wakati masafa ya ishara ya sinusoidal yanatofautiana na kiwango kidogo. Katika picha ya oscilloscope hapa, masafa hutofautiana kwa uwiano wa 5 hadi 2 (ambazo zote ni nambari kuu). Sampuli hii inashughulikia mraba wake vizuri, na inaingia kwenye pembe vizuri. Nambari za hali ya juu zingefanya kazi bora zaidi ya kufunika mraba na kupiga hadi pembe zaidi.

Hatua ya 3: Subiri - Tunawezaje Kuendesha LED na Wimbi la Sinusoidal?

Umenishika! Tunataka kuchunguza nafasi ya rangi ya 3D ambayo inatoka mbali (0) hadi kamili kwenye (255) kwa kila moja ya rangi tatu, lakini mawimbi ya sinusoidal hutofautiana kutoka -1 hadi +1. Tutafanya hesabu kidogo na programu hapa kupata kile tunachotaka.

  • Zidisha kila thamani na 127 ili kupata maadili ambayo hutoka -127 hadi +127
  • Ongeza 127 na uzungushe kila thamani kupata maadili ambayo ni kati ya 0 hadi 255 (karibu kwetu 255 ya kutosha)

Thamani ambazo ni kati ya 0 hadi 255 zinaweza kuwakilishwa na nambari moja ya baiti (aina ya data ya "char" katika lugha ya programu ya C-kama Arduino), kwa hivyo tutahifadhi kumbukumbu kwa kutumia uwakilishi wa baiti moja.

Lakini vipi kuhusu pembe? Ikiwa unatumia digrii, pembe katika safu ya sinusoid kutoka 0 hadi 360. Ikiwa unatumia radians, pembe zinaanzia 0 hadi mara 2 π ("pi"). Tutafanya kitu ambacho huhifadhi kumbukumbu tena katika Arduino yetu, na fikiria mduara uliogawanywa katika sehemu 256, na uwe na "pembe ndogo" ambazo zinaanzia 0 hadi 255, kwa hivyo "pembe" za kila rangi zinaweza kuwa inawakilishwa na nambari moja-ka, au chars, hapa pia.

Arduino ni ya kushangaza sana jinsi ilivyo, na ingawa inaweza kuhesabu maadili ya sinusoidal, tunahitaji kitu haraka. Tutahesabu mapema maadili, na kuiweka katika safu ndefu ya kuingia 256 ya baiti moja, au maadili ya char katika programu yetu (angalia tamko la SineTable […] katika mpango wa Arduino).

Hatua ya 4: Wacha tujenge muundo wa 3D LIssajous

Wacha tujenge muundo wa 3D LIssajous
Wacha tujenge muundo wa 3D LIssajous

Ili kuzunguka kwenye meza kwa masafa tofauti kwa kila moja ya rangi tatu, tutaweka faharisi moja kwa kila rangi, na tutaongeza laini kubwa kwa kila faharisi tunapopitia rangi. Tutachagua 2, 5, na 11 kama malipo bora kwa Nambari nyekundu, Kijani na Bluu. Uwezo wa hesabu wa ndani wa Arduino utatusaidia kwa kufunga moja kwa moja tunapoongeza thamani ya kukabiliana na kila faharisi.

Hatua ya 5: Kuweka hii Pamoja kwenye Arduino

Kuweka Hii Pamoja Kwenye Arduino
Kuweka Hii Pamoja Kwenye Arduino

Arduino nyingi zina njia kadhaa za PWM (au upanaji wa mpigo wa mpigo). Tutahitaji tatu hapa. Arduino UNO ni nzuri kwa hili. Hata ndogo 8-bit Atmel microcontroller (ATTiny85) inafanya kazi vizuri.

Kila moja ya vituo vya PWM itaendesha rangi moja ya RGB LED ikitumia kazi ya "AnalogWrite" ya Arduino, ambapo ukubwa wa rangi katika kila hatua karibu na mzunguko wa sinusoidal inawakilishwa na upana wa kunde, au mzunguko wa ushuru, kutoka 0 (yote imezimwa hadi 255 (yote yapo). Macho yetu yanaona upana wa mapigo tofauti, unaorudiwa kwa kasi ya kutosha, kama nguvu tofauti, au mwangaza, wa LED. Kuchanganya njia zote tatu za PWM zinazoendesha kila moja ya rangi tatu katika RGB LED, tunapata uwezo wa kuonyesha 256 * 256 * 256, au zaidi ya rangi milioni kumi na sita!

Utahitaji kuanzisha Arduino IDE (Mazingira ya Maendeleo ya Maingiliano), na uiunganishe na bodi yako ya Arduino ukitumia kebo yake ya USB. Run runers from the PWM outputs 3, 5, and 6 (processor pin 5, 11, and 12) to three 1 KΩ (elfu ohm) resistors kwenye proto board yako au proto shield, na kutoka kwa resistors to the LED R, G, na pini B.

  • Ikiwa RGB LED ni cathode ya kawaida (terminal hasi), kisha endesha waya kutoka kwa cathode kurudi kwenye pini ya GND kwenye Arduino.
  • Ikiwa RGB LED ni anode ya kawaida (terminal chanya), kisha tumia waya kutoka kwa anode kurudi kwenye pini ya + 5V kwenye Arduino.

Mchoro wa Arduino utafanya kazi kwa njia yoyote. Nilitokea kutumia SparkFun Electronics / COM-11120 RGB kawaida cathode LED (picha hapo juu, kutoka kwa wavuti ya SparkFun). Pini ndefu zaidi ni katoni ya kawaida.

Pakua mchoro wa RGB-Instructable.ino, uifungue na Arduino IDE, na ujaribu kukusanya. Hakikisha kutaja lengo sahihi la bodi ya Arduino au chip, kisha upakie programu hiyo kwenye Arduino. Inapaswa kuanza mara moja.

Utaona mzunguko wa RGB ya LED kupitia rangi nyingi kama unaweza kutaja, na mamilioni huwezi!

Hatua ya 6: Ni nini Kinachofuata?

Tumeanza tu kutafuta nafasi ya RGB Rangi na Arduino yetu. Vitu vingine ambavyo nimefanya na dhana hii ni pamoja na:

Kuandika moja kwa moja kwa rejista za chip, badala ya kutumia AnalogWrite, ili kuharakisha mambo

  • Kubadilisha mzunguko ili sensorer ya ukaribu wa IR kuharakisha au kupunguza kasi ya mzunguko kulingana na jinsi unavyokaribia
  • Kusanidi Mdhibiti Mdogo wa Atmel ATTiny85 8-pin na bootloader ya Arduino na mchoro huu

Ilipendekeza: