Tartalomjegyzék:

Színtér felfedezése: 6 lépés
Színtér felfedezése: 6 lépés

Videó: Színtér felfedezése: 6 lépés

Videó: Színtér felfedezése: 6 lépés
Videó: A világ LEGMOTIVÁLÓBB videója! 🌄 2024, November
Anonim
Színtér felfedezése
Színtér felfedezése

Szemünk a fényt a vörös, zöld és kék színekre érzékeny receptorokon keresztül érzékeli a fényben. Az emberek ezt a tényt arra használták fel, hogy színes képeket nyújtsanak filmeken, televízión, számítógépeken és más eszközökön az elmúlt körülbelül száz évben.

A számítógép vagy a telefon kijelzőjén a képek sok színben jelennek meg a képernyőn egymás mellett lévő apró piros, zöld és kék LED -ek intenzitásának megváltoztatásával. Különböző színek millióit lehet megjeleníteni a vörös, zöld vagy kék LED -ek fényerősségének megváltoztatásával.

Ez a projekt segít felfedezni a vörös, zöld és kék (RGB) színteret egy Arduino, egy RGB LED és egy kis matematika segítségével.

Gondolhat a három szín, a piros, a zöld és a kék intenzitására, mint koordinátákat egy kockában, ahol minden szín egy tengely mentén van, és mindhárom tengely merőleges egymásra. Minél közelebb van a tengely nulla pontjához vagy eredetéhez, annál kevesebb szín jelenik meg. Ha mindhárom szín értéke a nulla pontnál vagy eredetnél van, akkor a szín fekete, és az RGB LED teljesen ki van kapcsolva. Amikor mindhárom szín értéke olyan magas, amennyire csak lehet (esetünkben 255 mindhárom szín esetén), az RGB LED teljesen kigyullad, és a szem ezt a színkombinációt fehérnek tekinti.

1. lépés: RGB színtér

RGB színtér
RGB színtér

Köszönöm Kenneth Morelandnek, hogy engedélyezte szép képének használatát.

Szeretnénk felfedezni a 3D színtér kocka sarkát egy Arduino -hoz csatlakoztatott RGB LED segítségével, de szeretnénk ezt is érdekes módon megtenni. Megtehetnénk úgy, hogy három hurkot (egyet -egyet piros, zöld és kék) beágyazunk, és minden lehetséges színkombinációt végigfuttatunk, de ez nagyon unalmas lenne. Láttál már 2D Lissajous mintát oszcilloszkópon vagy lézer fény show? A beállításoktól függően egy Lissajous-minta úgy nézhet ki, mint egy átlós vonal, egy kör, egy 8-as szám vagy egy lassan forgó hegyes pillangószerű minta. A lissajous mintákat két (vagy több) x-y (vagy esetünkben x-y-z vagy R-G-B) tengelyen ábrázolt oszcillátor szinuszos jeleinek nyomon követésével hozzuk létre.

2. lépés: A jó hajó Lissajous

A jó hajó Lissajous
A jó hajó Lissajous

A legérdekesebb Lissajous -minták akkor jelennek meg, ha a szinuszos jelek frekvenciája kis mértékben eltér egymástól. Az oszcilloszkóp fotóján a frekvenciák 5 és 2 arányban különböznek (mindkettő prímszám). Ez a minta elég jól lefedi a négyzetét, és szépen bejut a sarkokba. A magasabb prímszámok még jobban el tudnák takarni a négyzetet, és még tovább böknének a sarkokba.

3. lépés: Várjon - Hogyan vezethetünk LED -t szinuszos hullámmal?

Elkaptál! Szeretnénk feltárni azt a 3D színteret, amely a három szín mindegyikétől kikapcsol (0) és teljesen bekapcsolva (255), de a szinuszos hullámok -1 és +1 között változnak. Itt egy kis matekozást és programozást fogunk végezni, hogy megkapjuk, amit akarunk.

  • Szorozza meg az egyes értékeket 127 -gyel, hogy -127 és +127 közötti értékeket kapjon
  • Adjon hozzá 127 -et és kerekítsen minden értéket, hogy 0 és 255 közötti értékeket kapjon (számunkra elég közel 255 -ig)

A 0 és 255 közötti értékeket egybájtos számokkal lehet ábrázolni (a „char” adattípus a C-szerű Arduino programozási nyelvben), így memóriát spórolunk az egybájtos ábrázolás használatával.

De mi a helyzet a szögekkel? Ha fokokat használ, a szög szinuszos tartományban 0 és 360 között van. Ha radiánokat használ, akkor a szögek 0 és 2 -szor π ("pi"). Csinálunk valamit, ami ismét megőrzi az Arduino memóriáját, és 256 részre osztott körre gondolunk, és 0 és 255 közötti „bináris szögekkel” rendelkezünk, így az egyes színek „szögei” itt is egybájtos számok vagy karakterek képviselik.

Az Arduino egészen elképesztő, ahogy van, és bár képes kiszámítani a szinuszos értékeket, gyorsabbra van szükségünk. Előre kiszámítjuk az értékeket, és beillesztjük őket egy 256 bejegyzésből álló, egybájtos vagy char értékű programba (lásd a SineTable […] deklarációt az Arduino programban).

4. lépés: Készítsünk 3D LIssajous mintát

Építsünk 3D LIssajous mintát
Építsünk 3D LIssajous mintát

Ahhoz, hogy a táblázatban a három szín mindegyikén eltérő gyakorisággal lapozzon, színenként egy indexet tartunk, és a színek átlépésekor minden indexhez viszonylag prímkorrekciókat adunk. A 2 -es, 5 -ös és 11 -est választjuk a vörös, zöld és kék indexértékek viszonylag elsődleges eltolásaként. Az Arduino saját belső matematikai képességei segítenek nekünk azáltal, hogy automatikusan körbejárnak, amikor az indexhez hozzáadjuk az eltolási értéket.

5. lépés: Tegye ezt össze az Arduino -ra

Összerakva ezt az Arduino -n
Összerakva ezt az Arduino -n

A legtöbb Arduino számos PWM (vagy impulzusszélesség -modulációs) csatornával rendelkezik. Itt háromra lesz szükségünk. Erre kiváló egy Arduino UNO. Még egy kis 8 bites Atmel mikrokontroller (ATTiny85) is mesésen működik.

Mindegyik PWM csatorna az RGB LED egy színét fogja vezérelni az Arduino "AnalogWrite" funkciójának használatával, ahol a szín intenzitását a szinuszos ciklus körüli minden ponton egy impulzusszélesség vagy teljesítményciklus jelzi 0 -tól (minden ki) 255 -ig (minden bekapcsolva). Szemünk ezeket a változó impulzusszélességeket, amelyeket elég gyorsan ismételünk, a LED különböző intenzitásának vagy fényerejének tekinti. Mindhárom PWM csatorna ötvözésével a három szín mindegyikét RGB LED -ben kapjuk meg, hogy 256*256*256, azaz több mint tizenhat millió színt jelenítsünk meg!

Be kell állítania az Arduino IDE -t (interaktív fejlesztési környezet), és csatlakoztatnia kell az Arduino kártyához az USB -kábel segítségével. Futtassa az áthidalókat a PWM 3., 5. és 6. kimenetéről (5., 11. és 12. processzortű) három próbalapon vagy proto -pajzson lévő 1 KΩ (ezer ohm) ellenállásba, és az ellenállásoktól a LED R, G és B csapok.

  • Ha az RGB LED gyakori katód (negatív kapocs), akkor vezessen vezetéket a katódtól vissza az Arduino GND csapjához.
  • Ha az RGB LED gyakori anód (pozitív kapocs), akkor vezessen egy vezetéket az anódtól vissza az Arduino +5 V -os csatlakozójához.

Az Arduino vázlat mindkét módon működni fog. Véletlenül egy SparkFun Electronics / COM-11120 RGB közös katód LED-et használtam (a fenti képen, a SparkFun webhelyről). A leghosszabb csap a közös katód.

Töltse le az RGB-Instructable.ino vázlatot, nyissa meg az Arduino IDE segítségével, és próbálja lefordítani. Ügyeljen arra, hogy adja meg a megfelelő cél Arduino táblát vagy chipet, majd töltse be a programot az Arduino -ba. Azonnal el kell indulnia.

Látni fogja, hogy az RGB LED ciklusa annyi színben megy keresztül, amennyit csak meg tud nevezni, és millióan nem!

6. lépés: Mi a következő lépés?

Most kezdtük el felfedezni az RGB színteret az Arduino -val. Néhány más dolog, amit ezzel a koncepcióval csináltam:

Közvetlenül írjon a chip-nyilvántartásokba az AnalogWrite használata helyett, hogy valóban felgyorsítsa a dolgokat

  • Az áramkör módosítása úgy, hogy az infravörös közelség -érzékelő felgyorsítsa vagy lelassítsa a ciklust attól függően, hogy milyen közel van
  • Egy 8-tűs Atmel ATTiny85 mikrokontroller programozása az Arduino rendszerbetöltővel és ezzel a vázlattal

Ajánlott: