Tartalomjegyzék:

Dinamikus LED -es világításvezérlő az Art számára: 16 lépés (képekkel)
Dinamikus LED -es világításvezérlő az Art számára: 16 lépés (képekkel)

Videó: Dinamikus LED -es világításvezérlő az Art számára: 16 lépés (képekkel)

Videó: Dinamikus LED -es világításvezérlő az Art számára: 16 lépés (képekkel)
Videó: Chrysta Bell // Live at A38 Ship - 2012 2024, Július
Anonim
Image
Image

Bevezetés:

A világítás a vizuális művészet fontos eleme. És ha a világítás idővel változhat, az a művészet jelentős dimenziójává válhat. Ez a projekt azzal kezdődött, hogy részt vett egy fénybemutatón, és megtapasztalta, hogyan változtathatja meg a világítás egy tárgy színét. Ezt kezdtük felfedezni a világító szövetművészetben. Eddig dinamikus világítást építettünk 8 darabra, beleértve egy festményt és egy fényképet. A fényhatások a következők voltak: hajnal és naplemente szimulálása, víz alatti fény hullámzó felületen keresztül, villámlás a felhőkben, és drámaian megváltoztatja a műalkotás észlelt színeit és hangulatát. Az effektusokról készült videókat az alábbi programozási lépések tartalmazzák.

Ez az utasítás egy vezérlőt épít, amely idővel beállítja az egyedileg címezhető LED -ek fényerejét és színét. Tartalmaz egy opcionális bemeneti áramkört is a világítás egy szegmensének kézi hangolásához (fényerő és szín beállítása). Emellett számos problémáról és fejlesztésről fog tanulni, amelyeket útközben fedeztünk fel.

Írtunk egy kapcsolódó útmutatót is az árnyékdoboz és a keret építéséről. Nézze meg itt:

Egyelőre az elektronikára és a programozásra összpontosítunk.

1. lépés: Anyagok:

  • WS2812 LED -ek sorozata
  • Arduino Pro Mini 328 - 5V/16 MHz
  • FTDI Friend USB interfész
  • USB A - MiniB kábel FTDI -hez
  • 4700 μf kondenzátor
  • 5 V-os tápegység 5,5 x 2,1 csatlakozóval
  • Hálózati aljzat 5,5 x 2,1
  • Terminálblokk
  • Az áramköri prototípus
  • Gomb
  • Potenciométer
  • Kijelző LED
  • Ellenállások
  • Szalagkábel
  • Fejléc hím
  • Fejléces nő

2. lépés: Erőforrások:

  • Arduino; Interaktív fejlesztési környezet (IDE)
  • Adafruit NeoPixel könyvtár
  • NeoPixel bemutató
  • Strandtest Példa Program
  • FastLED könyvtár
  • FastLED linkek és dokumentáció
  • FastLED fórum
  • Világítási vázlataink

3. lépés: A vezérlő áttekintése:

A vezérlő áttekintése
A vezérlő áttekintése
A vezérlő áttekintése
A vezérlő áttekintése

A vázlat nagyon egyszerűnek tűnik, és az is. A vezérlőinket úgy építettük, hogy képkeretbe ágyazhatók legyenek. A képen látható áramkör méretei 2,25 x 1,3 "x 0,5". Az opcionális tuner egy külön áramköri lapra épült, szalagkábel csatlakozóval. Ezek a képek a kész projektünket mutatják.

Szeretnénk illeszteni a vezérlőnket a képkeretbe, ezért az Arduino pro mini 5v -t választottuk kis mérete, költsége és 5 V -os kimenete miatt. A szükséges 5 V -os tápegység mérete attól függ, hogy hány LED -et és maximális fényerejét használja a projektben. Projektjeink mindegyike 3 amper alatt, néhány pedig 1 amperesnél kisebb teljesítményű volt. Többféle címezhető színes LED létezik. Az Adafruit által forgalmazott WS2812 termékkel kezdtük „NeoPixel” termékeik egyikeként. Ez működött nálunk, és nem fedeztünk fel más LED -eket. A legtöbb projektünk a 60 LED / méteres szalagot használta. Projektjeink eddig 145 LED -et tartalmaztak.

Opcionális tuner:

Építettünk egy kis bemeneti áramkör „tunert”, így könnyen beállíthatjuk a világítás szegmenseit anélkül, hogy módosítanánk és feltöltenénk a programot minden egyes beállításhoz. Tartalmaz: egy kimeneti LED -et, amely villog a bemeneti módban; egy gomb, amely megváltoztatja a beviteli módot; és egy beállítható gomb. Az Arduino ezután ki tudja adni az értékeket a csatlakoztatott számítógépnek.

4. lépés: Épületirányító:

Épületirányító
Épületirányító

Az anyaglista nem tartalmazza a huzalt, a hőre zsugorodó csövet és az egyéb szükséges kellékeket. Az 5 V -os és a földelő áramkörhöz a LED -ekhez azt javaslom, hogy 26 -os vagy nehezebb sodrott vezetéket használjon. 26 mérőt használtunk. Szintén jobb a szilikon szigetelés a huzalon, mert nem olvad a forrasztási hely közelében, és rugalmasabb. Azt tapasztaltam, hogy egy kicsit több hely hagyása az alkatrészek között megkönnyítette a gyártást. Például a 6. lépésben bemutatott vezérlő, a távolság a hálózati aljzat (fekete) háza és a sorkapcs (kék) között körülbelül 1 hüvelyk. Szerelési burkolatunk két réteg fa furnér.

A kép ebben a lépésben az opcionális tuner hat érintkezős női fejlécének bekötését mutatja. A piros és a zöld vezeték közötti nem használt érintkezőt egy fogpiszkálóval dugják be, hogy megakadályozzák a fordított csatlakozást.

5. lépés:

Kép
Kép
Kép
Kép
Kép
Kép

Most tegyük össze, hogy illeszkedjen az árnyékdoboz keretébe. A keret 3/4 "vastag, így a vezérlő magassági korlátja 1/2". Szerelőlemezeket készítettünk úgy, hogy két darab furnér keményítőt ragasztottunk egymásra merőleges szemcsékkel, hogy korlátozzuk a vetemedést. Az alkatrészek úgy vannak elrendezve, hogy a tápcsatlakozó a keret közepén lesz. A tápcsatlakozó lyukat ékszerész fűrésszel kivágták, és illesztették. Ezután az alkatrészeket össze kell kötni a szerelés előtt. Az aljzat epoxival van a helyére ragasztva. A csavaros kapocs és az arduino alatt kétoldalas állandó habszerelő négyzeteket használnak. Melegen olvadó ragasztót is használnak az arduino és a kondenzátor helyén tartására.

6. lépés: Opcionális tuner készítése:

Opcionális tuner építése
Opcionális tuner építése
Opcionális tuner építése
Opcionális tuner építése
Opcionális tuner építése
Opcionális tuner építése

Építettünk egy kis bemeneti áramkör „tunert”, így könnyen beállíthatjuk a világítás szegmenseit anélkül, hogy módosítanánk és feltöltenénk a programot minden egyes beállításhoz. Tartalmaz: egy kimeneti LED -et, amely villog a bemeneti módban; egy gomb, amely megváltoztatja a beviteli módot; és egy beállítható gomb. Az Arduino ezután ki tudja adni az értékeket a csatlakoztatott számítógépnek.

Ezek a képek a tuner gyártását mutatják be. A hátát „Gorilla” szalaggal borítottam. Ami stabilan tartja a szalagkábelt, és szép fogantyút is készített.

7. lépés: A vezérlő programozásának áttekintése:

Ez valóban a projekt nehéz része. Remélhetőleg képes lesz használni néhány kódot és módszert, hogy előrelépést érjen el.

Az Adafruit és a FastLED két nagyszerű könyvtárat tett közzé, amelyek lehetővé teszik az Arduinos számára, hogy sokféle címezhető LED -et vezéreljen. Mindkét könyvtárat különböző projektekben használjuk. Javasoljuk, hogy olvassa el a könyvtárak forrásanyagait is, és fedezze fel néhány példaprogramjukat.

Programjaink Github adattárát a fenti „Források” tartalmazza. Ne feledje, hogy messze nem vagyunk jártasak az Arduino programozásában, így rengeteg fejlesztési lehetőség van. Nyugodtan jelezze a problémákat, és járuljon hozzá a fejlesztésekhez.

8. lépés: A vezérlő programozásának példája Ripple:

Jeanie Holt „Ripple” volt az első sikerünk. Ez a darab egy szövetművészeti hal árnyékdoboz keretben. A világítás alulról folyamatosan alacsony kék színű. Felülről pedig akár három fényesebb fehér fényszár mozoghat jobbról balra, mintha a víz felszínén mozgó hullámok törnének meg. Ez egy meglehetősen egyszerű koncepció, és a program nem használja a „tuner” bemeneteket. Kezdődik, beleértve az Adafruit könyvtárat, és meghatározza a kimeneti vezérlőcsapot és a LED -ek számát. Ezután elvégezzük a soros kommunikáció és a LED szalag egyszeri beállítását. Ezután számos belső változót definiálunk, például a frissítések közötti késleltetést, a fénytengely jellemzőit (időbeli fényerejét és mozgását), majd az egyes fénytengelyek állapotváltozóit.

A „changeBright ()” funkció növeli a fényszóró fényerejét a „támadási” idő alatt, állandó értéken tartja a „fenntartási” időt, majd elhalványul a „bomlási” idő alatt.

A „hullámzás ()” funkciót a három fénytengely mindegyikére hívják fel minden időnövelés során. Az ideiglenes fényerőt a maximális fényerőről való elhalványulás alapján számítják ki, állandó csökkenés mellett. Ezután minden kiindulási pozíciótól balra lévő LED -hez kiszámítják a fényerőt. El tudjuk képzelni, hogy a fény hulláma balra mozog. A bal oldali LED -ek a hullámosság fényerő -görbéjének egy korábbi pontján vannak. Ha ennek a hullámzásnak minden LED esetében nulla fényereje van, akkor a kész jelző értéke 1. Ha a LED már világosabb (a másik hullámzás által beállított), akkor az értéket változatlanul hagyjuk.

A fő hurok a LED -ek kikapcsolásával indul. Ezután mindhárom hullámzáshoz meghívja a hullámzás függvényt, és növeli az időszámlálóját. Ha a kész zászló be van állítva, akkor a hullámzás elölről kezdődik. Végül a fő hurok halványkék fényt világít az alján.

9. lépés: A vezérlő programozási példája hajnalról alkonyatra:

Image
Image

A következő projekt, Jeanie Holt „Hajnalról alkonyatra” egy újabb szövetművészeti alkotás, ezúttal egy fa őszi színű lombozattal. A világítás a nap szimulációja, amikor a hajnal kezd világosodni a bal oldalon, és a nap közepén ragyogóvá válik, majd vöröses napnyugta színek és éjszaka felé tart. A kihívás itt az, hogy leegyszerűsítsük a szín- és fényerő -váltás leírását az idő múlásával 66 LED -es csíkon keresztül. A másik kihívás a fény zökkenőmentes cseréje. Valóban küzdöttünk a fény észrevehető eltolódásával gyenge fényviszonyok mellett. Próbáltam simább világítási átmeneteket elérni a FastLED könyvtár használatával, de nem jártam sikerrel. Ez a programleírás kevésbé lesz részletes. Ismét az Adafruit NeoPixel könyvtárát használtuk.

Elmentünk egy olyan konvencióra, hogy a LED szalagokat a bal felső sarokban indítjuk el. Ez kissé kényelmetlenné teszi a LED helyek számozását ebben a darabban. A keret körül 86 LED világít. Hajnal világít a bal oldalon, amely 62 -ről 85 -re emelkedik. Ezután balról fentről jobbra lent 0 és 43 között van.

Ez a program nem tartalmazza a „Tuner” bemeneti áramkör használatának lehetőségét.

Ez a program időtúllépést használ a villódzás csökkentésére. Minden ötödik LED -et frissítünk, majd egy felett váltunk, és minden ötödik LED -et frissítjük, és addig ismételjük, amíg mindegyik meg nem frissül. Ezért a LED -húr hosszát egy kicsit hosszabbra határozzuk meg, mint amilyen valójában.

Most itt leegyszerűsítettük a világítási minta leírását. 12 referencia LED pozíciót azonosítottunk a keret körül, bal alsó és jobb alsó rész között. Ezután meghatároztuk a vörös, zöld és kék (RGB) LED -intenzitást ezekhez a referencia -LED -ekhez akár 12 törési ponton is a hajnaltól az esti óráig. Minden törési ponthoz 4 bájt tartozik, az utolsó töréspont óta eltelt időszámlálás és az egy bájtos érték mindegyik RGB színhez. Ez a tömb 576 bájt értékes memóriát foglal el.

Most lineáris interpolációt használunk a töréspontok közötti értékek megkereséséhez, és ismét lineáris interpolációt, hogy megkeressük a referencia LED -ek között elhelyezkedő LED -ek értékeit. Ahhoz, hogy az interpoláció jól működjön, néhány lebegőpontos közbenső értéket kell használnunk. A hajnaltól a szürkületig terjedő időszak 120 fél másodperces időszakra oszlik.

10. lépés: A vezérlő programozása Példa esőerdőre:

A következő projekt, amelyet leírok, Juli-Ann Gasper „Esőerdője”. Ez egy nagyobb szövetművészeti darab, sok mélységgel. Itt körülbelül 4,4 hüvelyk mély árnyékdobozt használtunk. A világítási koncepció a háttérvilágítás szintje, amely alul halványabb, és a fény időnként villog a levelek felett. A koncepció itt hasonló a Ripple -hez, de a fénytengelyek nem mozognak. És ellentétben a hullámzással, ahol a fényerő simán változik, itt a villódzó fényerőnek ingadoznia kell. Létrehoztunk egy 40 bájtos tömböt, a Flicker_b2 nevet. Úgy találtuk, hogy a vizuális hatás rendben van, ha ugyanazt a mintát használjuk az összes villódzási helyre. Létrehoztunk 5 villódzó helyet. A vizuális hatás áttekintésekor azt találtuk, hogy az egyik villódzásnak sokkal szélesebbnek kell lennie, mint a többi. A fill_gradient_RGB () függvényt használva húztuk ki a villogást körülbelül 20 LED -en. Minden villódzás független és véletlenszerűen kezdődik. Az egyes villogások valószínűsége beállítható.

A háttérszínt be kell állítani és vissza kell állítani, ha a villódzás nem fényesebb, mint a háttér.

Ehhez a darabhoz a FastLED könyvtárat használtuk. Ebben a programban a #define TUNING jelzi, ha a tuning kártya be van dugva, 0 -nak kell lennie, ha a tuner kártya nincs bedugva. Ellenkező esetben a vezérlő érzékeny a statikus elektromosságra és a poltergeistákra. A fordító csak azokat a programszegmenseket tartalmazza, amelyek a „Tuner” -t használják, ha ez a változó 1.

11. lépés: A vezérlő programozása Példa vihar:

Egy másik projekt Mike Beck „Vihar” nevű fényképének meggyújtása volt. A kép viharfelhő. FastLED könyvtárat használunk, és nem tartalmazza a hangolási lehetőséget. A világítási koncepció itt egy háttérvilágítás, amelyen villámhullámok jelennek meg véletlenszerűen a felhő három pontján. A vakut minden helyen három LED okozza. A LED -ek közötti tér minden helyen eltérő. E három LED fényerejét három 30 bájtos tömb határozza meg. A fényerősségi sorrend a három tömbben variációt és látszólagos mozgást biztosít a három LED között. Az észlelt mozgás irányát és a teljes fényerőt minden helyhez kiválasztják. A vaku időtartamát az egyes helyeken a fényerő -értékek frissítése közötti késleltetés határozza meg. A villámcsapások között véletlenszerűen 0,2 és 10,4 másodperc közötti késés van. A három ütéshely közül melyik is véletlenszerű: 19% -os esély a felhő tetején, 45% esély a jobb alsó sarokban és 36% esély a bal oldalon.

12. lépés: A vezérlő programozási példái ara és északi fa:

A Dana Newman „Macaw” és Jeanie Holt „Nordic Tree” című darabjai világító színekkel változtatják meg a darab érzékelt színét. És Dana nagy ara festménye esetén a madár hangulata örömteli fenyegetővé változik a madarat körülvevő fény színétől függően. Ez a két program szinte azonos. Az Adafruit NeoPixel könyvtárat használjuk, és a hangolótábla képessége ezekben a programokban van. Ezeket a programokat a theatreChaseRainbow () függvényből alakították ki az Adafruit_NeoPixel/example/Strandtest.ino fájlban (letöltve 2015. július 29 -én)

A világítást viszonylag állandó fényerő mellett tartják, miközben a fény színe a színek színkörén keresztül eltolódik. A színkör körüli előrehaladást úgy hozzuk létre, hogy 100% pirossal kezdjük, és fokozatosan csökken a piros, miközben növeljük a zöldet. Ha a zöld 100% -os, akkor csökken, míg a kék növekszik. És végül, ahogy a kék csökken és a piros növekszik, teljes körbe kerül.

Ez biztosítja az elsődleges színek közül kettő megvilágítását, és egyet kihagy. Amint áthaladunk ezen a világítási színkörön, valamikor a mű bármely színe hiányzik a mellékelt fényben. Az észlelt szín megváltozása meglehetősen drámai lehet, és a művészi kifejezés részévé válik. Tehát ha a piros nem látható a fényben, a festmény vörösje sötétnek tűnik. Amikor a fény tiszta piros, akkor a piros valóban világít, és a többi szín elnémul.

13. lépés: Vezérlőpéldák programozása Copperhead:

Jeanie Holt „Rézfej” a világítás variációit használja fel, hogy fokozza a szabadságérzetet és a kígyó láthatóságának változatosságát. A programozás fényhullámokat rétegez a háttérvilágítás tetején.

Ehhez a programhoz a FastLED könyvtárat használtuk a Tuner áramkörünkkel együtt a fejlesztéshez.

A háttérszín 10 pontra van állítva a keret körül, és a fill_gradient () függvény segítségével egyenletesen válthat a színek között.

A megtekintési ciklus elején a háttér elhalványul, és a színek kékre váltanak egy idő alatt egy koszinuszgörbe és a setBrightness () függvény segítségével.

Késleltetés után három fényhullám mozog a jobb felső sarokból a bal alsóba. Az első hullám a legfényesebb, a következő hullámok halványodnak. Az első hullám is lassabban mozog.

14. lépés: Vezérlőpéldák programozása Fekete Doodle:

Image
Image

Jeanie Holt „Fekete Doodle” című darabja a fekete vinil -lemezek tükröződéseit vizsgálja.

Ez a program a FastLED könyvtárat is használja, és a hangoló áramkörről tud bemenni.

A világítás legfeljebb 5 egyidejű fénykijelzésből áll, amelyek véletlenszerű pontokon játszanak a keret körül. Minden kijelző ugyanazon 60 fényerő értéken halad előre. Minden kijelző 7 szomszédos LED -et tartalmaz, amelyek fényereje a szélei felé csökken. Minden megjelenítés előtt véletlenszerű késleltetés van. A kijelző elhelyezkedése véletlenszerű, de az aktív kijelző közelében lévő helyek tiltottak.

A háttérben a színek szivárványa terül el a keret körül. Ez a háttérben szivárvány lassan elfordul és véletlenszerűen megfordítja az irányt.

Ezek a leírások áttekintést és segítséget nyújtanak a programok olvasásához. Reméljük, hogy ezek közül a fényeffektusok közül néhányat elég érdekesnek talál, hogy beépítse valamelyik projektjébe. A github.com webhelyre mutató link, ahol a programokat tárolják, a 2. lépésben található Erőforrások részben található.

15. lépés: A hangolási funkciók programozása:

A RainForest programban bekapcsolhatjuk a hangolási funkciót a „#define TUNING 1” segítségével, és a szalagkábellel csatlakoztathatjuk a hangoló bemeneti kártyát. Be kell állítanunk azokat a paramétereket is, amelyeknél a LED -ek a hangolás hatására működnek. Például állítsuk be a LED -eket a 61-73. Pozíciókban. A #define START_TUNE 61 és a #define END_TUNE 73. beállításokat használjuk. A string többi szegmensét háttérszínekre állítjuk a setup () fájlban, a fill_gradient_RGB () hívások használatával. A vázlat többi része nem állíthatja be a LED -eket a hangolási tartományba, különben nem fogja látni a beállításokat. Most futtassa a vázlatot, és jelenítse meg a soros monitort. A program hangoló részének 4 állapota van [színárnyalat, telítettség, érték és fényerő]. A színárnyalat a színkerék, 0 = piros és 255 kék, majdnem piros. Az aktuális állapotot ki kell nyomtatni a soros monitorra, és a hangolótábla LED -je villogni kezd, jelezve az állapotot (egy villogás árnyalat; két villogás telítettség és így tovább). Az érték a fény intenzitása, míg a fényerő csökkentő tényező, amelyet a LED -ek összes intenzitási értékére alkalmaznak. Tehát a teljes fényerő beállításához Érték = 255 és Fényerő = 255. Nyomja meg a gombot az állapot megváltoztatásához. Ha a beállítani kívánt állapotban van, forgassa el a gombot. A program figyelmen kívül hagyja a gombot, amíg az INHIBIT_LEVEL értéknél többet el nem fordítja. Ezzel elkerülhető, hogy az értékek a többi állapotban megváltozzanak, amikor végighalad rajtuk. Példa: kezdje a Hue -val és kapja meg a kívánt színt, majd váltson az értékre, és állítsa be a kívánt fényerőt.

A Macaw és Nordic_Tree vázlatok tartalmazzák a hangolást, de a funkciók kissé eltérnek. Ezekben a vázlatokban csak két mód létezik. Az egyik a fényerő, a másik a színkerék helyzete. Ezekkel a példákkal láthatja, hogyan lehet testre szabni a hangolási funkciókat a világításvezérlés legtöbb paraméterével.

A tároló tartalmazza a „Tuning” vázlatot, amely a RainForest hangolási funkcióit veszi át. Ez a vázlat csak a hangolási funkciók, így felfedezheti és könnyebben követheti a vázlat működését. Ezzel a vázlattal egy tesztvilágító keretet irányítunk, amelyet gyorsan egy műtárgy fölé helyezhetünk, és felfedezhetjük a fényhatásokat. Később a hangolási információkat felhasználjuk az egyedi világításvezérlő elkészítéséhez.

Reméljük, hogy hasznosnak találja ezt az útmutatást a projekt működéséhez.

16. lépés: A történet többi része:

Ez az egyik a projekt két utasításából. Ha még nem tette meg, nézze meg a kísérő utasítást itt:

Ajánlott: