INHOUDSOPGAWE:

Dynamic LED Lighting Controller for Art: 16 Stappe (met foto's)
Dynamic LED Lighting Controller for Art: 16 Stappe (met foto's)

Video: Dynamic LED Lighting Controller for Art: 16 Stappe (met foto's)

Video: Dynamic LED Lighting Controller for Art: 16 Stappe (met foto's)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Julie
Anonim
Image
Image

Inleiding:

Beligting is 'n belangrike aspek van visuele kuns. En as die beligting mettertyd kan verander, kan dit 'n belangrike dimensie van die kuns word. Hierdie projek het begin met die bywoning van 'n ligskou en ervaar hoe die beligting die kleur van 'n voorwerp heeltemal kan verander. Ons het dit begin ondersoek in die verligting van stofkuns. Tot dusver het ons dinamiese beligting vir 8 stukke gebou, insluitend 'n skildery en 'n foto. Die beligtingseffekte het ingesluit: simulasie van dagbreek en sonsondergang, onderwaterlig deur 'n kabbelende oppervlak, weerlig in wolke en die dramatiese verandering van die waargenome kleure en stemming van die kunswerk. Video's van hierdie effekte is ingesluit in die onderstaande programmeerstappe.

Hierdie instruksies bou 'n kontroleerder wat die helderheid en kleur van 'n string individueel aanspreekbare LED's oor tyd bepaal. Dit bevat ook 'n opsionele ingangskring om 'n segment van die beligting handmatig af te stel (helderheid en kleur in te stel). U sal ook leer oor baie probleme en verbeterings wat ons onderweg ontdek het.

Ons het ook 'n gepaardgaande instruksie geskryf oor die bou van die skaduskas en raam. Kyk hier na:

Vir eers fokus ons op die elektronika en programmering.

Stap 1: materiaal:

  • String WS2812 LED's
  • Arduino Pro Mini 328 - 5V/16 MHz
  • FTDI Friend USB -koppelvlak
  • USB A na MiniB -kabel vir FTDI
  • 4700 μf kondensator
  • 5v kragtoevoer met 5,5 x 2,1-aansluiting
  • Power Socket 5.5 x 2.1
  • Terminalblok
  • Prototipe printbord
  • Knoppie
  • Potensiometer
  • Indicator LED
  • Weerstande
  • Lintkabel
  • Header man
  • Header female

Stap 2: Hulpbronne:

  • Arduino; Interaktiewe ontwikkelingsomgewing (IDE)
  • Adafruit NeoPixel -biblioteek
  • NeoPixel-tutoriaal
  • Strandtest -voorbeeldprogram
  • FastLED -biblioteek
  • FastLED -skakels en dokumentasie
  • FastLED Forum
  • Ons beligtingsketse

Stap 3: Oorsig van die beheerder:

Oorsig van die beheerder
Oorsig van die beheerder
Oorsig van die beheerder
Oorsig van die beheerder

Die skematiese lyk redelik eenvoudig en dit is. Ons het ons beheerders gebou om in 'n prentraam te wees. Die afmetings van die stroombaan op die foto is 2,25 "x 1,3" x 0,5 ". Die opsionele ontvanger is gebou op 'n aparte printplaat met 'n lintkabelaansluiting. Hierdie foto's toon ons voltooide projek.

Ons wil ons kontroleerder in die prentraam pas, so ons het die Arduino pro mini 5v gekies vanweë sy klein grootte, koste en 5v -uitvoer. Die grootte van die 5v -kragtoevoer wat u benodig, sal afhang van hoeveel LED's en hul maksimum helderheid in u projek. Ons projekte het almal minder as 3 ampère geloop en sommige was minder as 1 amp. Daar is verskillende tipes aanspreekbare kleur -LED's. Ons het begin met die WS2812 wat Adafruit verkoop het as een van hul “NeoPixel” -produkte. Dit het vir ons gewerk en ons het nie ander LED's ondersoek nie. Die meeste van ons projekte gebruik die strook van 60 LED per meter. Tot dusver wissel ons projekte tot 145 LED's.

Opsionele ontvanger:

Ons het 'n klein "tuner" vir die ingangskring gebou, sodat ons die segmente van die beligting maklik kon aanpas sonder om die program vir elke aanpassing te verander en op te laai. Dit het: 'n uitvoer -LED wat die invoermodus flits; 'n knoppie wat die invoermodus verskuif; en 'n knop wat verstel kan word. Die Arduino kan dan die waardes na 'n gekoppelde rekenaar uitvoer.

Stap 4: Boubeheerder:

Boubeheerder
Boubeheerder

Die materiaallys bevat nie die draad, krimpbuise en ander benodigdhede nie. Vir die 5v- en grondkring na die LED's stel ek voor dat u 'n 26 meter of swaarder draad gebruik. Ons het 26 meter gebruik. Silikoon -isolasie op die draad is ook beter omdat dit nie smelt naby die plek waar u soldeer nie en dit is meer buigsaam. Ek het gevind dat dit 'n bietjie meer ruimte tussen die komponente was om die vervaardiging baie makliker te maak. Byvoorbeeld, die beheerder wat in stap #6 afgebeeld is, is die ruimte tussen die behuizing van die stopcontact (swart) en die aansluitblok (blou) ongeveer 1 duim. Ons montagebedekking bestaan uit twee lae houtfineer.

Die prent in hierdie stap toon die bedrading van 'n ses -kontak vroulike kop vir die opsionele tuner. Die ongebruikte kontak tussen die rooi en groen draad word met 'n stuk tandestokkie ingeprop om omgekeerde verbinding te voorkom.

Stap 5:

Beeld
Beeld
Beeld
Beeld
Beeld
Beeld

Laat ons dit nou bymekaar sit sodat dit in die raam van die skaduwee pas. Die raam is 3/4 "dik, so ons het 'n beheerde hoogte perk van 1/2". Ons het bevestigingsplate gemaak deur twee stukke fineerverharder vas te plak met die korrel loodreg op mekaar om die kromtrek te beperk. Die komponente is so gerangskik dat die kragaansluiting in die middel van die raam is. Die gat vir die kragaansluiting is met 'n juweliersaag gesny en vasgemaak om te pas. Die komponente word dan aan mekaar gekoppel voordat dit gemonteer word. Die houer word met epoksie vasgeplak. Dubbelzijdige permanente skuimbevestigingsvierkante word onder die skroefaansluiting en arduino gebruik. Smeltgom word ook gebruik om die arduino sowel as die kondensator op sy plek te hou.

Stap 6: Bou opsionele ontvanger:

Gebou opsionele ontvanger
Gebou opsionele ontvanger
Gebou opsionele ontvanger
Gebou opsionele ontvanger
Gebou opsionele ontvanger
Gebou opsionele ontvanger

Ons het 'n klein "tuner" vir die ingangskring gebou, sodat ons die segmente van die beligting maklik kon aanpas sonder om die program vir elke aanpassing te verander en op te laai. Dit het: 'n uitvoer -LED wat die invoermodus flits; 'n knoppie wat die invoermodus verskuif; en 'n knop wat verstel kan word. Die Arduino kan dan die waardes na 'n gekoppelde rekenaar stuur.

Hierdie foto's toon die vervaardiging van die ontvanger. Ek het die agterkant bedek met 'Gorilla' band. Dit hou die lintkabel stabiel en maak ook 'n goeie handvatsel.

Stap 7: Oorsig van die programmering van die beheerder:

Dit is regtig die moeilike deel van die projek. Hopelik sal u 'n paar van ons kode en metodes kan gebruik om 'n voorsprong te kry.

Adafruit en FastLED het twee groot biblioteke gepubliseer om Arduinos in staat te stel om baie soorte aanspreekbare LED's te beheer. Ons gebruik albei hierdie biblioteke in verskillende projekte. Ons stel voor dat u ook 'n paar van die hulpbronmateriaal op hierdie biblioteke lees en 'n paar van hul voorbeeldprogramme ondersoek.

Die Github -bewaarplek van ons programme word in die bogenoemde 'bronne' gelys. Let op: ons is nie vaardig in Arduino -programmering nie, dus daar is baie ruimte vir verbetering. Wys gerus sake aan en bring verbeterings by.

Stap 8: Voorbeeld Ripple van programmeerbeheerder:

“Ripple” deur Jeanie Holt was ons eerste sukses. Hierdie stuk is 'n kunsvis in 'n skadu -boksraamwerk. Die beligting is konstant laag, blou van onder af. En van bo af beweeg tot drie skagte helderder wit lig van regs na links asof dit gebreek word deur rimpelings op die wateroppervlak. Dit is 'n redelik eenvoudige konsep en die program gebruik nie die 'tuner' -insette nie. Dit begin die Adafruit -biblioteek, en definieer die uitvoerpen en die aantal LED's. Vervolgens doen ons 'n eenmalige opstelling van die seriële kommunikasie en LED-strook. Dan definieer ons 'n aantal interne veranderlikes, soos die vertraging tussen verversings, die kenmerke van 'n ligas (sy helderheid oor tyd en sy beweging), en noem dan veranderlikes vir elke ligas.

Die "changeBright ()" -funksie verhoog die helderheid van 'n ligas tydens die "aanval" -tyd, hou dit konstant vir die "sustain" -tyd en vervaag dan oor die "verval" -tyd.

Die funksie "rimpel ()" word tydens elke toename van elke tyd vir elke van die drie asse genoem. Die tydelike helderheid word bereken op grond van die vervaag van maksimum helderheid by 'n konstante verval oor tyd. Dan word die helderheid vir elke LED links van die beginposisie bereken. Ons kan ons 'n rimpel van lig voorstel wat na links beweeg. Elke LED aan die linkerkant is op 'n vroeër punt in die rimpel -helderheid tydkurwe. As hierdie rimpel nul helderheid vir alle LED's het, word die voltooide vlag op 1. As die LED reeds helderder is (deur een van die ander rimpelings gestel) laat ons die waarde onveranderd.

Die hooflus begin deur die LED's uit te skakel. Dan noem dit vir elk van die drie rimpelings die rimpelfunksie en verhoog sy tydteller. As die voltooide vlag ingestel is, begin dit met die rimpeling. Uiteindelik gee die hooflus 'n ligblou lig oor die onderkant.

Stap 9: Voorbeeld programmering van die beheerder Dawn to Dusk:

Image
Image

Die volgende projek, "Dawn to Dusk" deur Jeanie Holt, is nog 'n stofkunsstuk hierdie keer 'n boom met herfskleurige blare. Die beligting is 'n simulasie van die dag met dagbreek wat aan die linkerkant begin helder word, tot helder midde-dag, gevolg deur rooierige sonsondergangskleure en tot nag. Die uitdaging hier is om die beskrywing van veranderende kleur en helderheid mettertyd te vereenvoudig oor 'n strook van 66 LED's. Die ander uitdaging is om die lig glad te laat verander. Ons het regtig gesukkel met die merkbare ligverandering by lae ligvlakke. Ek het probeer om gladder beligtingskanale te kry met die FastLED -biblioteek, maar dit was nie suksesvol nie. Hierdie programbeskrywing sal minder gedetailleerd wees. Weer het ons die NeoPixel -biblioteek van Adafruit gebruik.

Ons het na 'n byeenkoms gegaan om ons LED -stroke in die linker boonste hoek te begin. Dit maak die LED -ligging 'n bietjie ongemaklik in hierdie stuk. Daar is 86 LED's rondom die raam. Dawn brand aan die linkerkant, wat gaan van 62 na 85. Dan is links bo na regs onder 0 tot 43.

Hierdie program bevat nie die moontlikheid om die ingangskringloop "Tuner" te gebruik nie.

Hierdie program gebruik tydskommeling om flikkering te verminder. Ons werk elke vyfde LED op, dan verander ons meer as een en werk elke vyfde LED op en herhaal totdat hulle almal opgedateer is. Om hierdie rede definieer ons die lengte van die LED -string 'n bietjie langer as wat dit werklik is.

Hier is hoe ons die beskrywing van die beligtingspatroon vereenvoudig het. Ons het 12 verwysings -LED -posisies rondom die raam geïdentifiseer, van links onder na regs onder. Toe definieer ons die rooi, groen en blou (RGB) LED -intensiteit vir hierdie verwysings -LED op tot 12 breekpunte deur die dagbreek tot skemer tyd. Vir elke breekpunt is daar 4 grepe, die aantal tyd tel sedert die laaste breekpunt en die een greepwaarde vir elk van die RGB -kleure. Hierdie skikking beslaan 576 grepe kosbare geheue.

Ons gebruik nou lineêre interpolasie om waardes tussen breekpunte te vind en weer lineêre interpolasie om waardes vir die LED's tussen verwysings -LED's te vind. Om die interpolasie goed te laat werk, moet ons 'n paar tussenwaardes van dryfpunte gebruik. Die dagbreek tot skemerperiode word in 120 tydperke van die tweede helfte ingedeel.

Stap 10: Voorbeeld van programmeerbeheerder Rain Forest:

Die volgende projek wat ek sal beskryf, is "Rain Forest" deur Juli-Ann Gasper. Dit is 'n groter stofkunsstuk met baie diepte. Hier het ons 'n skaduboks van ongeveer 4,4 "diep gebruik. Die beligtingskonsep is agtergrondligvlakke wat aan die onderkant dowwer is, met lig wat van tyd tot tyd deur die blare hierbo flikker. Die konsep hier is soortgelyk aan Ripple, maar die ligte beweeg nie. En anders as rimpeling waar die helderheid glad verander, hier moet die flikkerhelderheid wissel. Ons het 'n skikking van 40 byte genaamd flicker_b2 geskep. Ons het gevind dat die visuele effek goed was as ons dieselfde patroon vir al die flikkerlokasies gebruik. Ons het 5 flikkerplekke gevestig. By die hersiening van die visuele effek het ons gevind dat een van die flikker baie wyer moet wees as die ander. Ons het die fill_gradient_RGB () -funksie gebruik om die flikker oor ongeveer 20 LED's uit te rek. Elke flikkering is onafhanklik en begin lukraak. Die waarskynlikheid van elke flikker kan bepaal word.

Die agtergrondkleur moet ingestel en herstel word as die flikker nie helderder is as die agtergrond nie.

Vir hierdie stuk gebruik ons die FastLED -biblioteek. In hierdie program word die #define TUNING gebruik om aan te dui of die stembord ingeprop is, dit moet 0 wees as die tunerbord nie ingeprop is nie. Anders is die beheerder sensitief vir statiese elektrisiteit en poltergeïste. Die samesteller bevat slegs die programsegmente wat die 'Tuner' gebruik as hierdie veranderlike 1 is.

Stap 11: Voorbeeld van programmering van beheerder Storm:

'N Ander projek was die aansteek van 'n foto genaamd "Storm" deur Mike Beck. Die prentjie is 'n stormwolk. Ons gebruik FastLED -biblioteek en sluit nie die afstemvermoë in nie. Die beligtingskonsep hier is 'n agtergrond, met weerligflitse wat lukraak op drie punte om die wolk verskyn. Die flits op elke plek word veroorsaak deur drie LED's. Die ruimte tussen hierdie LED's is anders vir elke plek. Die helderheid van hierdie drie LED's word gedefinieer deur drie 30 byte skikkings. Die helderheidsreeks in die drie skikkings gee variasie en skynbare beweging oor die drie LED's. Die rigting van waargenome beweging en algehele helderheid word vir elke plek gekies. Die duur van die flits op elke plek word aangepas deur die tydsvertraging tussen die opdatering van helderheidswaardes. Daar is 'n ewekansige tydsvertraging tussen 0,2 en 10,4 sekondes tussen weerligstrale. Watter van die drie trefplekke is ook ewekansig met 19% kans bo -op die wolk, 45% kans regs onder en 36% aan die linkerkant.

Stap 12: Voorbeelde van programmeerbeheer ara en Nordic Tree:

Die stukke “ara” van Dana Newman en “Nordic Tree” van Jeanie Holt gebruik beligtingskleur om die waargenome kleur van die stuk te verander. En in die geval van Dana se skildery van 'n groot ara, verander die bui van die voël van vreugdevol tot dreigend, afhangende van die ligkleur wat die voël omring. Hierdie twee programme is byna identies. Ons gebruik die Adafruit NeoPixel -biblioteek, en die afstembord is in hierdie programme beskikbaar. Hierdie programme is aangepas uit die theaterChaseRainbow () -funksie in Adafruit_NeoPixel/voorbeelde/Strandtest.ino (afgelaai 2015-07-29)

Die beligting is relatief konstant, terwyl die kleur van die lig deur 'n kleurwiel verander. Vordering rondom die kleurwiel word gemaak deur te begin met 100% rooi en toenemend rooi te verminder terwyl dit groen toeneem. Sodra groen 100% is, word dit verminder terwyl dit blou toeneem. En uiteindelik, as blou afneem en rooi toeneem, draai u om.

Dit bied beligting met twee van die primêre kleure en laat een weg. As ons op 'n stadium deur hierdie beligtingskleurwiel ry, ontbreek enige kleur in die kunsstuk in die meegeleverde lig. Die gevolglike verandering in waargenome kleur kan redelik dramaties wees en word deel van die kunsuitdrukking. As daar dus nie rooi in die lig voorkom nie, sal enige rooi in die skildery donker lyk. As die lig suiwer rooi is, gloei die rooi regtig en word die ander kleure gedemp.

Stap 13: Voorbeelde van programmeerbeheer Copperhead:

"Copperhead" van Jeanie Holt gebruik beligtingsvariasie om die gevoel van buitelug en die opvallendheid van die slang te verbeter. Die programmeringslae golwe van lig bo -op die agtergrondbeligting.

Vir hierdie program het ons die FastLED -biblioteek saam met ons Tuner -kring gebruik vir ontwikkeling.

Die agtergrondkleur is op 10 punte rondom die raam gestel en die funksie fill_gradient () word gebruik om die kleure glad oor te skakel.

Aan die begin van 'n kyksiklus word die agtergrond vervaag en kleur verander na blou met behulp van 'n cosinuskromme oor tyd en die setBrightness () -funksie.

Na 'n vertraging beweeg drie liggolwe van regs bo na links onder. Die eerste golf is die helderste met die volgende golwe wat al hoe dowwer word. Die eerste golf beweeg ook stadiger.

Stap 14: Voorbeelde van programmering van kontroleerder Black Doodle:

Image
Image

"Black Doodle" van Jeanie Holt ondersoek refleksies van swart vinyl.

Hierdie program gebruik ook die FastLED -biblioteek en kan insette uit die afstemkring neem.

Die beligting bestaan uit tot 5 gelyktydige liguitstallings wat vanaf willekeurige punte om die raam speel. Elke skerm vorder mettertyd deur dieselfde 60 helderheidswaardes. Elke skerm bevat 7 aangrensende LED's, terwyl die helderheid na die rande afneem. Daar is 'n ewekansige vertraging voordat elke vertoning begin. Die ligging van die skerm is ewekansig, maar plekke naby 'n aktiewe skerm word belemmer.

Die agtergrond is 'n reënboog van kleure wat rondom die raam versprei is. Hierdie agtergrondreënboog draai stadig en draai lukraak rigting om.

Hierdie beskrywings is 'n oorsig en 'n hulpmiddel by die lees van die programme. Ons hoop dat u sommige van hierdie beligtingseffekte interessant genoeg vind om in een van u projekte op te neem. 'N Skakel na github.com waar die programme gestoor word, is in stap 2 -bronne.

Stap 15: Programmeer die stemfunksies:

In die RainForest -program kan ons die stemfunksie aanskakel deur '#define TUNING 1' en die tuning -invoerbord met sy lintkabel aan te sluit. Ons moet ook parameters stel waarvoor die LED deur die stemming sal beïnvloed. Laat ons byvoorbeeld LED's op posisies 61 tot en met 73 aanpas. Ons gebruik #define START_TUNE 61 en #define END_TUNE 73. Ons stel ander segmente van die string op agtergrondkleure in die opstelling () met behulp van fill_gradient_RGB () oproepe. Die res van u skets moet nie die LED's in die stembereik stel nie, anders kan u nie u aanpassings sien nie. Voer nou die skets uit en vertoon die seriële monitor. Die stemafdeling van die program het 4 toestande [Tint, versadiging, waarde en helderheid}. Hue is die kleurwiel met 0 = rooi en 255 verby blou tot byna rooi. Die huidige toestand moet op die seriële monitor gedruk word, en die aanwyser -LED op die stembord sal knip om die toestand aan te dui (een knippie is Hue; twee knippies is versadiging en so meer). Waarde is die ligintensiteit, terwyl helderheid 'n reduksiefaktor is wat op alle LED's -intensiteitswaardes toegepas word. Stel dus vir volle helderheid Value = 255 en Brightness = 255 in. Druk op die knoppie om die toestand te verander. Draai aan die knop as u in die toestand is wat u wil aanpas. Die program ignoreer die knop totdat dit meer as die INHIBIT_LEVEL gedraai word. Dit vermy die verandering van waardes in die ander state wanneer u deur hulle ry. Byvoorbeeld, u kan met Hue begin en die kleur kry wat u wil hê, en dan na waarde verander en aanpas om die gewenste helderheid te vind.

Die ara- en Nordic_Tree -sketse bevat afstemming, maar die funksies is 'n bietjie anders. In hierdie sketse is daar slegs twee modusse. Een vir helderheid en een vir kleurwielposisie. Met hierdie voorbeelde kan u sien hoe u die stemfunksies kan aanpas om by die meeste parameters in u beligtingskontrole te werk.

Die skets 'Tuning' bevat 'n skets wat die stemfunksies van RainForest neem. Hierdie skets is slegs die afstemfunksies, sodat u kan ondersoek en makliker kan volg hoe die skets werk. Ons gebruik hierdie skets om 'n toetsbeligtingraam te beheer wat ons vinnig oor 'n kunswerk kan plaas en beligtingseffekte kan ondersoek. Later sal ons die stemmingsinligting gebruik om die aangepaste beligtingskontroleerder te bou.

Hoop u vind hierdie instruksies nuttig om u projek te laat werk.

Stap 16: Die res van die verhaal:

Dit is een van die twee instruksies oor hierdie projek. As u dit nog nie gedoen het nie, kyk gerus na die metgesel wat u kan leer op:

Aanbeveel: