Përmbajtje:

Eksplorimi i hapësirës me ngjyra: 6 hapa
Eksplorimi i hapësirës me ngjyra: 6 hapa

Video: Eksplorimi i hapësirës me ngjyra: 6 hapa

Video: Eksplorimi i hapësirës me ngjyra: 6 hapa
Video: "Dëgjojeni perlën e Jorit"😅😅 - Big Brother Vip Albania 2024, Nëntor
Anonim
Eksplorimi i Hapësirës së Ngjyrave
Eksplorimi i Hapësirës së Ngjyrave

Sytë tanë perceptojnë dritën përmes receptorëve që janë të ndjeshëm ndaj ngjyrave të kuqe, jeshile dhe blu në spektrin vizual. Njerëzit e kanë përdorur këtë fakt për të siguruar imazhe me ngjyra përmes filmit, televizorit, kompjuterëve dhe pajisjeve të tjera gjatë njëqind viteve të fundit.

Në ekranin e një kompjuteri ose telefoni, imazhet shfaqen me shumë ngjyra duke ndryshuar intensitetin e LED -ve të vogla të kuqe, jeshile dhe blu që janë pranë njëri -tjetrit në ekran. Miliona ngjyra të ndryshme mund të shfaqen duke ndryshuar intensitetin e dritës nga LED -të e kuqe, jeshile ose blu.

Ky projekt do t'ju ndihmojë të eksploroni hapësirën e ngjyrave të kuqe, jeshile dhe blu (RGB) duke përdorur një Arduino, një LED RGB dhe pak matematikë.

Ju mund të mendoni për intensitetet e tre ngjyrave, të kuqe, jeshile dhe blu, si koordinata në një kub, ku secila ngjyrë është përgjatë një aksi, dhe të tre akset janë pingul me njëri -tjetrin. Sa më afër pikës zero, ose origjinës, të boshtit, aq më pak nga ajo ngjyrë tregohet. Kur vlerat për të tre ngjyrat janë në pikën zero, ose origjinën, atëherë ngjyra është e zezë dhe LED RGB është plotësisht i fikur. Kur vlerat për të tre ngjyrat janë aq të larta sa mund të shkojnë (në rastin tonë, 255 për secilën nga tre ngjyrat), LED RGB është plotësisht i ndezur dhe syri e percepton këtë kombinim të ngjyrave si të bardhë.

Hapi 1: Hapësira e ngjyrave RGB

Hapësira e ngjyrave RGB
Hapësira e ngjyrave RGB

Faleminderit Kenneth Moreland për lejen për të përdorur imazhin e tij të bukur.

Ne do të donim të eksploronim cepat e kubit të hapësirës me ngjyra 3D duke përdorur një LED RGB të lidhur me një Arduino, por gjithashtu duam ta bëjmë këtë në një mënyrë interesante. Ne mund ta bëjmë atë duke futur tre sythe (njëra për të kuqe, për të gjelbër dhe për blu), dhe duke kaluar nëpër çdo kombinim të mundshëm të ngjyrave, por kjo do të ishte vërtet e mërzitshme. A keni parë ndonjëherë një model Lissajous 2D në një oshiloskop ose një shfaqje me dritë lazer? Në varësi të cilësimeve, një model Lissajous mund të duket si një vijë diagonale, një rreth, një figurë 8, ose një model flutur-fluturues i ngadalshëm. Modelet lissajous krijohen duke ndjekur sinjalet sinusoidale të dy (ose më shumë) oshilatorëve të vizatuar në akset x-y (ose, për rastin tonë, x-y-z ose R-G-B).

Hapi 2: Anija e Mirë Lissajous

Anija e Mirë Lissajous
Anija e Mirë Lissajous

Modelet më interesante Lissajous shfaqen kur frekuencat e sinjaleve sinusoidale ndryshojnë me një sasi të vogël. Në foton e oshiloskopit këtu, frekuencat ndryshojnë me një raport prej 5 me 2 (të dyja janë numra të thjeshtë). Ky model mbulon katrorin e tij mjaft mirë dhe futet bukur në qoshet. Numrat kryesorë më të lartë do të bënin një punë edhe më të mirë për të mbuluar katrorin dhe për të futur edhe më tej në qoshe.

Hapi 3: Prisni - Si mund të drejtojmë një LED me një valë sinusoidale?

Më kapët! Ne duam të eksplorojmë hapësirën e ngjyrave 3D që shkon nga off (0) në të plotë në (255) për secilën nga tre ngjyrat, por valët sinusoidale ndryshojnë nga -1 në +1. Ne do të bëjmë pak matematikë dhe programim këtu për të marrë atë që duam.

  • Shumëzoni secilën vlerë me 127 për të marrë vlera që variojnë nga -127 në +127
  • Shtoni 127 dhe rrumbullakosni secilën vlerë për të marrë vlera që variojnë nga 0 në 255 (mjaft afër 255 për ne)

Vlerat që variojnë nga 0 në 255 mund të përfaqësohen me numra me një bajt (lloji i të dhënave "char" në gjuhën e programimit Arduino të ngjashme me C), kështu që ne do të kursejmë kujtesën duke përdorur përfaqësimin me një bajt.

Por si për këndet? Nëse jeni duke përdorur gradë, këndet në një sinusoid shkojnë nga 0 në 360. Nëse përdorni radianë, këndet variojnë nga 0 në 2 herë π ("pi"). Ne do të bëjmë diçka që ruan përsëri kujtesën në Arduino -n tonë, dhe mendojmë për një rreth të ndarë në 256 pjesë, dhe kemi "kënde binare" që variojnë nga 0 në 255, kështu që "këndet" për secilën prej ngjyrave mund të jenë të përfaqësuar me numra një-bajtësh, ose shenja, edhe këtu.

Arduino është shumë e mahnitshme ashtu siç është, dhe megjithëse mund të llogarisë vlerat sinusoidale, ne kemi nevojë për diçka më të shpejtë. Ne do të llogaritim paraprakisht vlerat dhe do t'i vendosim ato në një grup të gjatë prej 256 hyrjesh të vlerave të një-bajtësh, ose char në programin tonë (shih deklaratën SineTable […] në programin Arduino).

Hapi 4: Le të Ndërtojmë një Model 3D Lisassous

Le të Ndërtojmë një Model 3D LIssajous
Le të Ndërtojmë një Model 3D LIssajous

Për të kaluar nëpër tabelë me një frekuencë të ndryshme për secilën prej tre ngjyrave, ne do të mbajmë një indeks për ngjyrë dhe do të shtojmë kompensime relativisht kryesore në secilin indeks ndërsa kalojmë ngjyrat. Ne do të zgjedhim 2, 5 dhe 11 si kompensime relativisht kryesore për vlerat e indeksit të Kuq, të Gjelbër dhe Blu. Aftësitë e brendshme matematikore të Arduino do të na ndihmojnë duke u mbështjellë automatikisht kur shtojmë vlerën e kompensuar në secilin indeks.

Hapi 5: Vendosja e të gjithave së bashku në Arduino

Duke i vendosur të gjitha së bashku në Arduino
Duke i vendosur të gjitha së bashku në Arduino

Shumica e Arduinos kanë një numër kanalesh PWM (ose modulim të gjerësisë së impulsit). Do të na duhen tre këtu. Një Arduino UNO është e shkëlqyeshme për këtë. Edhe një mikrokontrollues i vogël 8-bitësh Atmel (ATTiny85) funksionon për mrekulli.

Secili nga kanalet PWM do të drejtojë një ngjyrë të RGB LED duke përdorur funksionin Arduino "AnalogWrite", ku intensiteti i ngjyrës në secilën pikë rreth ciklit sinusoidal përfaqësohet nga një gjerësi pulsi, ose cikël detyre, nga 0 (të gjitha të fikura) në 255 (të gjitha aktive). Sytë tanë i perceptojnë këto gjerësi të ndryshme të pulsit, të përsëritura mjaft shpejt, si intensitete ose ndriçime të ndryshme të LED. Duke kombinuar të tre kanalet PWM që drejtojnë secilën nga tre ngjyrat në një LED RGB, ne marrim aftësinë për të shfaqur 256*256*256, ose mbi gjashtëmbëdhjetë milion ngjyra!

Ju do të duhet të konfiguroni Arduino IDE (Mjedisi i Zhvillimit Interaktiv) dhe ta lidhni atë me bordin tuaj Arduino duke përdorur kabllon e tij USB. Drejtoni kërcyesit nga daljet PWM 3, 5 dhe 6 (kunjat e procesorit 5, 11 dhe 12) në tre rezistorë 1 KΩ (një mijë ohm) në pllakën tuaj proto ose proto mburojën, dhe nga rezistorët në LED R, G, dhe kunjat B.

  • Nëse LED RGB është një katodë e zakonshme (terminal negativ), atëherë drejtoni një tel nga katoda përsëri në kunjin GND në Arduino.
  • Nëse LED RGB është një anodë e zakonshme (terminal pozitiv), atëherë drejtoni një tel nga anoda përsëri në kunjin +5V në Arduino.

Skica Arduino do të funksionojë në çdo mënyrë. Më rastisi të përdor një LED të katodës së zakonshme SparkFun Electronics / COM-11120 RGB (e fotografuar më sipër, nga uebfaqja e SparkFun). Kunja më e gjatë është katoda e zakonshme.

Shkarkoni skicën RGB-Instructable.ino, hapeni atë me Arduino IDE dhe testojeni përpilimin e tij. Sigurohuni që të specifikoni tabelën ose çipin Arduino të synuar, pastaj ngarkoni programin në Arduino. Duhet të fillojë menjëherë.

Ju do të shihni ciklin LED RGB përmes sa më shumë ngjyrave që mund të emërtoni, dhe miliona që nuk mundeni!

Hapi 6: Çfarë vjen më pas?

Ne sapo kemi filluar të eksplorojmë RGB Color Space me Arduino -n tonë. Disa gjëra të tjera që kam bërë me këtë koncept përfshijnë:

Shkrimi direkt në regjistrat në çip, në vend që të përdorni AnalogWrite, për të shpejtuar vërtet gjërat

  • Ndryshimi i qarkut në mënyrë që një sensor afërsie IR të përshpejtojë ose ngadalësojë ciklin në varësi të afrimit tuaj
  • Programimi i një mikrokontrolluesi Atmel ATTiny85 8-pin me ngarkuesin Arduino dhe këtë skicë

Recommended: