Taula de continguts:

Controlador d’il·luminació LED dinàmic per a art: 16 passos (amb imatges)
Controlador d’il·luminació LED dinàmic per a art: 16 passos (amb imatges)

Vídeo: Controlador d’il·luminació LED dinàmic per a art: 16 passos (amb imatges)

Vídeo: Controlador d’il·luminació LED dinàmic per a art: 16 passos (amb imatges)
Vídeo: ВЛОГ 297: Что внутри джойстика инвалидной коляски 2024, Juliol
Anonim
Image
Image

Introducció:

La il·luminació és un aspecte important de l’art visual. I si la il·luminació pot canviar amb el temps, pot esdevenir una dimensió significativa de l’art. Aquest projecte va començar assistint a un espectacle de llum i experimentant com la il·luminació podia canviar totalment el color d’un objecte. Vam començar a explorar-ho en la il·luminació d'art de tela. Fins ara hem construït una il·luminació dinàmica per a 8 peces, inclosa una pintura i una fotografia. Els efectes d’il·luminació han inclòs: la simulació de l’alba i la posta de sol, la llum submarina a través d’una superfície ondulant, els llamps als núvols i el canvi espectacular dels colors i estat d’ànim percebuts de l’obra. Els vídeos d’aquests efectes s’inclouen als passos de programació següents.

Aquesta instrucció construeix un controlador que estableix la brillantor i el color d'una cadena de LED adreçables individualment al llarg del temps. També inclou un circuit d’entrada opcional per sintonitzar manualment (ajustant la brillantor i el color) d’un segment de la il·luminació. També coneixereu molts problemes i millores que hem descobert al llarg del camí.

També vam escriure una instrucció associada sobre la construcció de la caixa d’ombres i del marc. Mireu-ho a:

De moment ens centrarem en l'electrònica i la programació.

Pas 1: materials:

  • Cadena de LEDs WS2812
  • Arduino Pro Mini 328 - 5V / 16 MHz
  • Interfície USB Friend FTDI
  • Cable USB A a MiniB per a FTDI
  • Capacitor de 4700 μf
  • Font d'alimentació de 5v amb connector 5,5 x 2,1
  • Power Socket 5,5 x 2,1
  • Bloc de terminals
  • Prototip de placa de circuit
  • Botó
  • Potenciòmetre
  • LED indicador
  • Resistències
  • Cable de cinta
  • Capçalera masculí
  • Capçalera femenina

Pas 2: recursos:

  • Arduino; Entorn de desenvolupament interactiu (IDE)
  • Biblioteca Adafruit NeoPixel
  • Tutorial NeoPixel
  • Exemple de programa Strandtest
  • Biblioteca FastLED
  • Enllaços i documentació FastLED
  • Fòrum FastLED
  • Els nostres croquis d’il·luminació

Pas 3: Visió general del controlador:

Descripció general del controlador
Descripció general del controlador
Descripció general del controlador
Descripció general del controlador

L’esquema sembla força senzill i ho és. Hem construït els nostres controladors per incrustar-los en un marc d’imatges. Les dimensions del circuit que es mostra a la imatge és de 2,25”x 1,3” x 0,5”. El sintonitzador opcional es va construir en una placa de circuit independent amb un connector de cable de cinta. Aquestes imatges mostren el nostre projecte acabat.

Volem ajustar el nostre controlador al marc de la imatge, de manera que vam triar l’Arduino pro mini 5v per la seva petita mida, cost i sortida de 5v. La mida de la font d'alimentació de 5v que necessiteu dependrà del nombre de LEDs i de la seva màxima brillantor al vostre projecte. Tots els nostres projectes funcionaven amb menys de 3 amperes i alguns amb menys d’un amperio. Hi ha diversos tipus de LEDs de color adreçables. Vam començar amb el WS2812 venut per Adafruit com un dels seus productes "NeoPixel". Això ens ha funcionat i no hem explorat altres LED. La majoria dels nostres projectes utilitzaven la tira de 60 LED per metre. Fins ara els nostres projectes han anat fins a 145 LED.

Sintonitzador opcional:

Hem creat un petit "sintonitzador" de circuit d'entrada per poder ajustar fàcilment segments d'il·luminació sense modificar i carregar el programa per a cada ajust. Té: un LED de sortida que parpelleja el mode d’entrada; un botó que canvia el mode d'entrada; i un pom que es pot ajustar. A continuació, l’Arduino pot enviar els valors a un ordinador connectat.

Pas 4: controlador de la construcció:

Controlador de l'edifici
Controlador de l'edifici

La llista de materials no conté el filferro, els tubs de contracció de calor i altres subministraments que pugueu necessitar. Per al circuit de 5v i de terra als LED, us suggereixo que utilitzeu un cable cadenat de 26 calibres o més pesat. Hem utilitzat calibre 26. A més, l’aïllament de silicona al filferro és millor perquè no es fon a prop del punt de soldadura i és més flexible. Vaig trobar que deixar una mica més d’espai entre els components va facilitar la fabricació. Per exemple, el controlador que es mostra al pas # 6, l’espai entre la carcassa de la presa d’alimentació (negre) i el bloc de terminals (blau) és d’aproximadament 1 polzada. La nostra coberta de muntatge és de dues capes de xapa de fusta.

La imatge d’aquest pas mostra el cablejat d’una capçalera femella de sis contactes per al sintonitzador opcional. El contacte no utilitzat entre el fil vermell i el verd es tapa amb un escuradents per evitar la connexió inversa.

Pas 5:

Imatge
Imatge
Imatge
Imatge
Imatge
Imatge

Ara, ajuntem-lo perquè quedi dins del quadre de la caixa d’ombres. El marc té un gruix de 3/4 ", de manera que tenim un límit d'alçada del controlador de 1/2". Vam fer plaques de muntatge enganxant dues peces d’enduridor de xapa amb el gra perpendicular entre si per limitar l’ordit. Els components disposats de manera que la presa de corrent estiguin al centre del quadre. El forat de la presa de corrent es va tallar amb una serra de joieria i es va arxivar per adaptar-se. Després es connecten els components abans de muntar-los. El sòcol està enganxat al seu lloc amb epoxi. S’utilitzen quadres de muntatge permanent d’escuma de doble cara sota el terminal de cargol i l’arduino. La cola hot melt també s’utilitza per mantenir l’arduino al seu lloc i el condensador.

Pas 6: crear sintonitzador opcional:

Sintonitzador opcional de construcció
Sintonitzador opcional de construcció
Sintonitzador opcional de construcció
Sintonitzador opcional de construcció
Sintonitzador opcional de construcció
Sintonitzador opcional de construcció

Hem creat un petit "sintonitzador" de circuit d'entrada per poder ajustar fàcilment segments d'il·luminació sense modificar i carregar el programa per a cada ajust. Té: un LED de sortida que parpelleja el mode d’entrada; un botó que canvia el mode d'entrada; i un pom que es pot ajustar. A continuació, l’Arduino pot enviar els valors a un ordinador connectat.

Aquestes imatges mostren la fabricació del sintonitzador. Vaig tapar la part posterior amb cinta “Gorilla”. Que manté el cable de cinta estable i també va fer un bon mànec.

Pas 7: Visió general del controlador de programació:

Aquesta és realment la part més difícil del projecte. Esperem que pugueu utilitzar alguns dels nostres codis i mètodes per començar.

Adafruit i FastLED han publicat dues excel·lents llibreries per permetre a Arduinos controlar molts tipus de LED adreçables. Utilitzem aquestes dues biblioteques en diferents projectes. Us suggerim que també llegiu alguns dels recursos d’aquestes biblioteques i que exploreu alguns dels seus programes d’exemple.

El dipòsit Github dels nostres programes apareix a la secció "Recursos" anterior. Tingueu en compte que estem lluny de ser competents en la programació d'Arduino, de manera que hi ha molt marge de millora. No dubteu a assenyalar problemes i aportar millores.

Pas 8: Exemple de controlador de programació Ripple:

"Ripple" de Jeanie Holt va ser el nostre primer èxit. Aquesta peça és un peix d'art de tela en un marc de caixa d'ombres. La il·luminació és constant de baix nivell blau des de baix. I des de dalt, fins a tres eixos de llum blanca més brillant que es mouen de dreta a esquerra com refractats per ondulacions en moviment a la superfície de l’aigua. Aquest és un concepte bastant senzill i el programa no utilitza les entrades "sintonitzador". Comença incloent la biblioteca Adafruit i definint el pin de control de sortida i el nombre de LEDs. A continuació, fem una configuració única de la comunicació en sèrie i la tira LED. A continuació, definim una sèrie de variables internes, com ara el retard entre les actualitzacions, les característiques d’un eix de llum (la seva brillantor en el temps i el seu moviment), i a continuació, indiquem les variables per a cada eix de llum.

La funció "changeBright ()" augmentarà la brillantor d'un eix de llum durant el temps "d'atac", la mantindrà constant durant el temps de "sustain" i, a continuació, s'esvairà durant el temps de "decadència".

La funció "ripple ()" es diu per a cadascun dels tres eixos de llum durant cada increment de temps. La brillantor temporal es calcula en funció de la decoloració de la brillantor màxima a una decadència constant al llarg del temps. A continuació, per a cada LED a l'esquerra de la posició inicial es calcula la brillantor. Ens podem imaginar una onada de llum que es mou cap a l’esquerra. Cada LED cap a l'esquerra es troba en un punt anterior de la corba de temps de brillantor de l'ondulació. Quan aquesta ondulació té una brillantor nul·la per a tots els LED, la bandera feta s'estableix en 1. Si el LED ja és més brillant (configurat per una de les altres ondulacions), deixem el valor sense canvis.

El bucle principal s’inicia apagant els LED. Després, per a cadascuna de les tres ondulacions, anomena la funció ondulació i augmenta el seu comptador de temps. Si s'estableix la bandera feta, s'iniciarà l'ondulació. Finalment, el bucle principal estableix una llum blava pàl·lida a la part inferior.

Pas 9: Exemple de controlador de programació Dawn to Dusk:

Image
Image

El següent projecte, "Dawn to Dusk" de Jeanie Holt, és una altra peça d'art de la tela, aquesta vegada un arbre amb fullatge de color tardor. La il·luminació és una simulació del dia amb l’alba que comença a il·luminar-se a l’esquerra progressant cap a mig dia brillant, seguida de colors vermellosos al capvespre i avançant cap a la nit. El repte aquí és simplificar la descripció del canvi de color i brillantor amb el temps sobre una tira de 66 LED. L’altre repte és fer que la llum canviï sense problemes. Realment vam lluitar amb el notable canvi de llum a nivells de llum baixos. Vaig intentar obtenir transicions d’il·luminació més suaus mitjançant la biblioteca FastLED, però no vaig tenir èxit. Aquesta descripció del programa serà menys detallada. De nou hem utilitzat la biblioteca NeoPixel d'Adafruit.

Vam anar a una convenció d’iniciar les nostres tires LED a l’angle superior esquerre. Això fa que la ubicació dels LED sigui una mica incòmoda en aquesta peça. Hi ha 86 LED al voltant del marc. L’alba il·lumina el costat esquerre, que va del 62 al 85. A continuació, de dalt a esquerra a baix a la dreta és del 0 al 43.

Aquest programa no inclou la possibilitat d'utilitzar el circuit d'entrada "Tuner".

Aquest programa utilitza el temps retallat per reduir el parpelleig. Actualitzem cada cinquè LED i, a continuació, passem per un i actualitzem cada cinquè LED i repetim fins que s’actualitzen tots. Per aquest motiu, definim la longitud de la corda LED una mica més llarga del que realment és.

Ara us expliquem com simplifiquem la descripció del patró d’il·luminació. Vam identificar 12 posicions de LED de referència al voltant del quadre de baix a esquerra a baix a la dreta. A continuació, hem definit la intensitat del LED vermell, verd i blau (RGB) per a aquests LED de referència fins a 12 punts de trencament durant el període de matinada fins al capvespre. Per a cada punt de trencament hi ha 4 bytes, el nombre de temps que es compta des de l'últim punt de trencament i el valor d'un byte per a cadascun dels colors RGB. Aquesta matriu ocupa 576 bytes de preciosa memòria.

Ara fem servir la interpolació lineal per trobar valors entre els punts de ruptura i, de nou, la interpolació lineal per trobar valors per als LED situats entre els LED de referència. Perquè la interpolació funcioni bé, hem d’utilitzar alguns valors intermedis de coma flotant. El període de l'alba al capvespre es divideix en 120 períodes de mig segon.

Pas 10: Exemple de controlador de programació: selva tropical:

El següent projecte que descriuré és "Rain Forest" de Juli-Ann Gasper. Es tracta d’una peça d’art de tela més gran amb molta profunditat. Aquí hem utilitzat una caixa d’ombres d’uns 4,4”de profunditat. El concepte d’il·luminació consisteix en nivells de llum de fons que es distingeixen a la part inferior amb la llum que parpelleja de tant en tant per les fulles de dalt. El concepte aquí és similar a Ripple, però els eixos de llum no es mouen. I, a diferència de l’ondulació on la brillantor canvia sense problemes, aquí la brillantor parpelleja ha de fluctuar. Hem creat una matriu de 40 bytes anomenada flicker_b2. Vam trobar que l’efecte visual estava bé si utilitzàvem el mateix patró per a totes les ubicacions de parpelleig. Hem establert 5 ubicacions de parpelleig. En revisar l’efecte visual, vam trobar que un dels parpelleigs havia de ser molt més ampli que els altres. Hem utilitzat la funció fill_gradient_RGB () per estirar aquest parpelleig sobre uns 20 LED. Cada parpelleig és independent i comença a l’atzar. Es pot establir la probabilitat de cada parpelleig.

El color de fons s’ha d’establir i restaurar quan el parpelleig no sigui més brillant que el fons.

Per a aquesta peça hem utilitzat la biblioteca FastLED. En aquest programa, el #define TUNING s'utilitza per indicar si la placa sintonitzadora està endollada, ha de ser 0 quan la placa sintonitzadora no està endollada. En cas contrari, el controlador és sensible a l'electricitat estàtica i als poltergeists. El compilador només inclou els segments de programa que utilitzen el "sintonitzador" quan aquesta variable és 1.

Pas 11: Exemple de tempesta de controlador de programació:

Un altre projecte consistia a encendre una fotografia anomenada "Storm" de Mike Beck. La imatge és un núvol de tempesta. Utilitzem la biblioteca FastLED i no incloem la capacitat d’ajust. El concepte d’il·luminació aquí és una llum de fons amb llamps que apareixen aleatòriament en tres punts al voltant del núvol. El flaix a cada ubicació és causat per tres LED. L'espai entre aquests LED és diferent per a cada ubicació. La brillantor d’aquests tres LED es defineix per tres matrius de 30 bytes. La seqüència de brillantor de les tres matrius proporciona variació i moviment aparent a través dels tres LED. La direcció del moviment percebut i la brillantor general es selecciona per a cada ubicació. La durada del flaix a cada ubicació s’ajusta pel retard de temps entre l’actualització dels valors de brillantor. Hi ha un retard aleatori entre 0,2 i 10,4 segons entre els llamps. Quina de les tres ubicacions d’atac també és aleatòria amb un 19% de probabilitats a la part superior del núvol, un 45% de probabilitats a la part inferior dreta i un 36% de probabilitats al costat esquerre.

Pas 12: Programació d'exemples de controladors Macaw i Nordic Tree:

Les peces "Macaw" de Dana Newman i "Nordic Tree" de Jeanie Holt utilitzen el color de la il·luminació per canviar el color percebut de la peça. I en el cas de la pintura de Dana d'un gran guacamai, l'estat d'ànim dels ocells canvia de alegre a amenaçador en funció del color de la llum que l'envolta. Aquests dos programes són gairebé idèntics. Utilitzem la biblioteca Adafruit NeoPixel i la capacitat de la placa de sintonia es troba en aquests programes. Aquests programes s’adapten a la funció theaterChaseRainbow () a Adafruit_NeoPixel / examples / Strandtest.ino (descarregat el 2015-07-29)

La il·luminació es manté a una brillantor relativament constant mentre el color de la llum canvia progressant a través d’una roda de colors. El progrés al voltant de la roda de colors es crea començant amb el 100% de vermell i disminuint de manera incremental el vermell i augmentant el verd. Un cop el verd és al 100%, es redueix i augmenta el blau. I, finalment, a mesura que el blau disminueix i el vermell augmenta, es fa un cercle complet.

Això proporciona il·luminació mitjançant dos dels colors primaris i en deixa un fora. A mesura que recorrem aquesta roda de color d’il·luminació en algun moment, faltarà qualsevol color de l’obra d’art a la llum subministrada. El canvi resultant en el color percebut pot ser força dramàtic i esdevenir una part de l’expressió artística. Per tant, si no hi ha vermell a la llum, qualsevol vermell de la pintura apareixerà fosc. Quan la llum és de color vermell pur, el vermell realment brilla i els altres colors es silencien.

Pas 13: Exemples de controladors de programació Copperhead:

"Copperhead" de Jeanie Holt utilitza la variació de la il·luminació per millorar el sentit de l'aire lliure i la variació de la visibilitat de la serp. La programació capa ones de llum a la part superior de la il·luminació de fons.

Per a aquest programa hem utilitzat la biblioteca FastLED juntament amb el nostre circuit Tuner per al desenvolupament.

El color de fons s’estableix en 10 punts al voltant del marc i la funció fill_gradient () s’utilitza per transitar sense problemes entre colors.

Al començament d'un cicle de visualització, el fons es veu atenuat i el color canvia a blau mitjançant una corba de cosinus amb el pas del temps i la funció setBrightness ().

Després d'un retard, tres ones de llum es mouen de la part superior dreta a la inferior esquerra. La primera ona és la més brillant i les ones següents es tornen més tenues. La primera ona també es mou més lentament.

Pas 14: Exemples de controladors de programació Doodle negre:

Image
Image

"Black Doodle" de Jeanie Holt explora les reflexions del vinil negre.

Aquest programa també utilitza la biblioteca FastLED i pot obtenir l'entrada del circuit de sintonització.

La il·luminació consta de fins a 5 visualitzacions simultànies de llum que es reprodueixen des de punts aleatoris al voltant del marc. Cada pantalla avança amb els mateixos 60 valors de brillantor al llarg del temps. Cada pantalla inclou 7 LED adjacents amb la brillantor que disminueix cap a les vores. Abans que cada pantalla comenci, hi ha un retard aleatori. La ubicació de la pantalla és aleatòria, però les ubicacions properes a una pantalla activa estan inhibides.

El fons és un arc de Sant Martí de colors repartits al voltant del marc. Aquest arc de Sant Martí gira lentament i inverteix la direcció aleatòriament.

Aquestes descripcions són una visió general i ajuden a llegir els programes. Esperem que trobeu alguns d’aquests efectes d’il·luminació prou interessants com per incorporar-los a algun dels vostres projectes. Al pas 2 Recursos hi ha un enllaç a github.com on s’emmagatzemen els programes.

Pas 15: Programació de les funcions de sintonització:

Al programa RainForest podem activar la funció de sintonització mitjançant "#define TUNING 1" i connectar la placa d'entrada de sintonització mitjançant el seu cable de cinta. També hem d’establir paràmetres per als quals s’afectarà el LED mitjançant l’ajustament. Per exemple, ajustem els LEDs de les posicions 61 a 73. Utilitzem #define START_TUNE 61 i #define END_TUNE 73. Establim altres segments de la cadena als colors de fons a setup () mitjançant trucades fill_gradient_RGB (). La resta del vostre esbós no hauria d’establir els LED en el rang d’afinació o no podreu veure els vostres ajustos. Ara executeu l'esbós i mostreu el monitor sèrie. La part de sintonització del programa té 4 estats [Tonalitat, saturació, valor i brillantor}. El matís és la roda de colors amb 0 = vermell i 255 de blau passat a quasi vermell. L'estat actual s'ha d'imprimir al monitor sèrie i el LED indicador de la placa sintonitzadora parpellejarà per indicar l'estat (un parpelleig és Tonalitat; dos parpelleigs són Saturació, etc.). El valor és la intensitat de la llum, mentre que la brillantor és un factor de reducció que s’aplica a tots els valors d’intensitat dels LED. Així doncs, per establir una brillantor completa Valor = 255 i Brillantor = 255. Premeu el botó per canviar l'estat. Quan estigueu a l'estat que voleu ajustar, gireu el comandament. El programa ignora el comandament fins que es gira més que INHIBIT_LEVEL. Això evita canviar els valors en els altres estats quan els recorre. Exemple: podeu començar amb Hue i obtenir el color que vulgueu, després canviar al valor i ajustar-lo per trobar la brillantor que desitgeu.

Els esbossos de Macaw i Nordic_Tree inclouen afinació, però les funcions són una mica diferents. En aquests esbossos només hi ha dos modes. Un per a la brillantor i un per a la posició de la roda de colors. Amb aquests exemples podeu veure com personalitzar les funcions d'ajust per treballar amb la majoria dels paràmetres del control d'il·luminació.

S'inclou al repositori un esbós "Tuning" que pren les funcions de sintonització de RainForest. Aquest esbós només és la funció d’ajust, de manera que podeu explorar i seguir amb més facilitat el funcionament de l’esbós. Utilitzem aquest esbós per controlar un marc d’il·luminació de prova que podem col·locar ràpidament sobre una obra d’art i explorar efectes de llum. Més endavant utilitzarem la informació de sintonització per construir el controlador d'il·luminació personalitzat.

Espero que us sigui útil per fer funcionar el vostre projecte.

Pas 16: la resta de la història:

Aquest és un dels dos instructius d’aquest projecte. Si encara no ho heu fet, consulteu les instruccions complementàries a:

Recomanat: