Tabla de contenido:

¡Iluminame !: 20 pasos (con imágenes)
¡Iluminame !: 20 pasos (con imágenes)

Video: ¡Iluminame !: 20 pasos (con imágenes)

Video: ¡Iluminame !: 20 pasos (con imágenes)
Video: I Am El Negro - Fe (Just Listen, Freestyle 1) 2024, Noviembre
Anonim
¡Iluminame!
¡Iluminame!
¡Iluminame!
¡Iluminame!
¡Iluminame!
¡Iluminame!
¡Iluminame!
¡Iluminame!

miembros del equipo del proyecto

(Hyewon Shin, Eunjeong Ko, Junsung Yi)

¿Y si pudieras tocar y diseñar la luz? ¿Cómo se sentiría si tuvieras un hermoso patrón de luz que diseñaste tú mismo con una animación interesante? ¡Light me up será un interesante cuaderno de bocetos que toca y diseña la luz en sí y crea patrones interesantes! Este proyecto tiene varios triángulos que forman un forma hexagonal. ¡Para que pueda crear patrones estereoscópicos de acuerdo con cómo diseñe la luz! Simplemente presione cada pieza y se graduarán varios colores, y cuando salga el color que desea, simplemente presione la mano que presionó y ¡seguirá brillando maravillosamente con el color que deseaba! El proyecto usó alrededor de 312 triángulos, pero podría crear una bonita luz que funciona bien con 6 triángulos. Ahora déjame mostrarte cómo hacerlo con seis triángulos. ¡Sigue los pasos y tendrás tu propio trabajo maravilloso!

Suministros

Hardware: Arduino (usé arduino mega 2560), acrílico (transparente, blanco), tira de LED (NeoPixel), película difusora, botón, conector de 4 pines, cable, placa de circuito, fuente de alimentación

Herramientas: Máquina de corte guiada por láser, Impresora 3D

Paso 1: ¡Hagámoslo

¡Hagámoslo!
¡Hagámoslo!
¡Hagámoslo!
¡Hagámoslo!
¡Hagámoslo!
¡Hagámoslo!

¡Hagamos esta linda pieza hexagonal conmigo!

Light Me Up está hecho con 312 triángulos, pero incluso 6 triángulos pueden diseñar una luz maravillosa. Si desea hacerlo a mayor escala, puede hacerlo consultando el archivo adjunto a continuación.

Paso 2: preparación del material

Preparación de material
Preparación de material

Paso 3: corte de acrílico

Acrílico de corte
Acrílico de corte
Acrílico de corte
Acrílico de corte
Acrílico de corte
Acrílico de corte
Acrílico de corte
Acrílico de corte

Utilice un cortador láser para cortar la parte delantera y trasera de cada parte. El color del acrílico en la parte posterior puede ser el que desee, pero asegúrese de usar acrílico transparente porque el frente debe atenuarse. Si usa un acrílico de color que no sea transparente, no verá bien la luz.

Paso 4: Cree caras con impresoras 3D

Hacer caras con impresoras 3D
Hacer caras con impresoras 3D
Hacer caras con impresoras 3D
Hacer caras con impresoras 3D
Hacer caras con impresoras 3D
Hacer caras con impresoras 3D

Ahora es el momento de hacer los lados de cada pieza. ¡Vamos a hacerlo! Los archivos de modelado 3D en el lateral se adjuntan a continuación. Usamos el PLA para hacer los lados. El PLA es más fuerte y tiene menos contracciones que el ABS, por lo que se recomiendan los filamentos para usar el PLA.

Paso 5: filmación

Rodaje
Rodaje
Rodaje
Rodaje
Rodaje
Rodaje

Ahora pongamos una película de difusión de luz sobre el acrílico del frente. Si le pones una película, se extiende y brilla mucho más bonito. Primero, corte la película en forma de triángulo (será mejor que corte la película más grande que el acrílico cortado) Es simple colocar una película, como una película protectora en su teléfono. Si quieres dar propina aquí, puedes usar una tarjeta para empujarla para que se pueda pegar perfectamente.

Paso 6: Conecte la tira de LED + tira de LED de soldadura (NeoPixel) con cables

Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables
Fije la tira de LED + tira de LED de soldadura (NeoPixel) con cables

Si ha sido tan bueno soldando la tira de LED, es hora de poner la tira de LED en la parte posterior. Primero, coloque una pistola de pegamento o cinta adhesiva de dos caras en la parte posterior de la tira de LED. Y primero retire los cables de ambos lados del cable de soldadura a través de los orificios en ambos lados. Finalmente, coloque la tira de LED en el acrílico posterior y ¡se acabó!

¡Es hora de soldar! Prepare tiras de LED, conectores de 4 pines (conector o cables) y lo que necesita para soldar. Usé LED en tres unidades. Puede usar uno o dos LED si lo desea, pero le recomiendo usar tres. Cuando todos los materiales estén listos, suelde los cables en ambas líneas de datos, líneas de 5v y líneas de tierra de la tira de LED.

Paso 7: Interruptor de tacto de soldadura con cables

Interruptor de tacto de soldadura con cables
Interruptor de tacto de soldadura con cables
Interruptor de tacto de soldadura con cables
Interruptor de tacto de soldadura con cables

Paso 8: Ensamblaje - Inserte el perno en el costado = ①

Ensamblaje - Inserte el perno en el costado = ①
Ensamblaje - Inserte el perno en el costado = ①
Ensamblaje - Inserte el perno en el costado = ①
Ensamblaje - Inserte el perno en el costado = ①

¡Ahora es una parte realmente fácil! Coloque un perno en cada uno de los tres lados impresos en 3D. La razón por la cual el uso del botón de perno como el uso de pernos y tuercas estructurales podrá hacer. Cuando la pieza esté terminada, la pondré en el estuche y la terminaré con una tuerca.

Paso 9: Adjunte Ⓛⓣ al Ⓒ = ②

Adjuntar Ⓛⓣ al Ⓒ = ②
Adjuntar Ⓛⓣ al Ⓒ = ②
Adjuntar Ⓛⓣ al Ⓒ = ②
Adjuntar Ⓛⓣ al Ⓒ = ②

Paso 10: Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③

Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③
Ensamblaje: use a Ⓦ y Ⓝ para combinar ① y ② = ③

Paso 11: Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④

Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ con un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ con un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④
Ensamblaje - Fije Ⓐⓔ y ③ usando un enlace acrílico = ④

Si coloca un perno en el costado, nosotros lo colocamos en el costado y en el frente. El frente es acrílico, por lo que debe colocarlo con un enlace acrílico específico. Si unes acrílico a una unión regular, dejará una marca.

Paso 12: Adjunte Ⓢ a Ⓓ = ⑤

Adjuntar Ⓢ a Ⓓ = ⑤
Adjuntar Ⓢ a Ⓓ = ⑤
Adjuntar Ⓢ a Ⓓ = ⑤
Adjuntar Ⓢ a Ⓓ = ⑤

Paso 13: Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥

Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥
Ensamblaje -Combinar ④ y ⑤ Usando Ⓦ y Ⓝ = ⑥

Paso 14: Montaje completo de la pieza

Ensamblaje completo de piezas
Ensamblaje completo de piezas
Ensamblaje completo de piezas
Ensamblaje completo de piezas
Ensamblaje completo de piezas
Ensamblaje completo de piezas

Paso 15: La apariencia funcional de un proyecto

Image
Image

Paso 16: NeoPixel, cableado del conector

NeoPixel, cableado del conector
NeoPixel, cableado del conector
NeoPixel, cableado del conector
NeoPixel, cableado del conector
NeoPixel, cableado del conector
NeoPixel, cableado del conector

Paso 17: Cableado de NeoPixel y Arduino

Cableado de NeoPixel y Arduino
Cableado de NeoPixel y Arduino

Paso 18: programa el Arduino

extern volatile unsigned long timer0_millis;

#incluir

#define MODEBTNNUM 3 int ani_mode = 0; preM1 largo sin firmar, preM2, preM3;

configuración vacía () {

Wire.begin (); para (int i = 0; i <MODEBTNNUM; i ++) {pinMode (i + 2, INPUT_PULLUP); } //Serial.begin(9600); }

bucle vacío () {

para (int i = 0; i <MODEBTNNUM; i ++) {if (! digitalRead (i + 2)) ani_mode = i + 1; } for (int i = 0; i <6; i ++) {Wire.requestFrom (i + 1, 1); while (Wire.available ()) {int x = Wire.read (); // Serial.println (x); si (x == 5) {ani_mode = 0; // Serial.println ("x = 5"); }}} ///////////////////////////////////////////////// /////// if (ani_mode == 0) {for (int i = 1; i 3000) {preM1 = current1; para (int i = 1; i 5000) {preM2 = current2; para (int i = 1; i 3000) {preM3 = current3; // timer0_millis = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("reinicio del temporizador"); for (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}

Paso 19:

extern volatile unsigned long timer0_millis;

#incluir

#incluir #definir PIN 12 #definir NUMPIXELS 162 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int num = NUMPIXELS / 3; const int esclavoNum = 1; int colores [num] [3]; int matiz [num]; int sat [num]; int brillante [num]; int pNumber = 0; int gValue [num] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; const int btnPin [num] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 54, 55, 56, 57, 58, 59}; int btnState [num]; boolean btnMode; int hueV [num] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; #incluya #define BTNNUM 1 int f_v = 1; unsigned long preMillis1; preM largo sin firmar; int ani_mode = 0; int ani2_Counter = 0; int contador = 0; /////////////////////////////////////////// configuración vacía () {Wire. comenzar (esclavoNum); Wire.onRequest (requestEvent); Wire.onReceive (ReceiveEvent); para (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } /////////////////////////////////////////////

bucle vacío () {

if (f_v == 1) {for (int i = 0; i <num; i ++) {tono = 50; sat = 95; brillante = 100; } f_v = 0; } ////////////////////////////////////// // 버튼 입력 체크: 멈춤 신호 보내기 btnMode = falso; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); ////////////////////////////////////// interruptor (ani_mode) {caso 0: ani0 (); rotura; caso 1: ani1 (); ani_mode = 0; ani2_Counter = 0; rotura; caso 2: ani2_Counter = 1; ani_mode = 0; rotura; caso 3: ani3 (); ani_mode = 0; ani2_Counter = 0; rotura; predeterminado: readyState (); rotura; } if (ani2_Counter == 1) {ani2 (); } setPixels (num); }

///////////////////////////////////////////

evento de recepción vacío (int cómoMuchos) {int x = Wire.read (); if (x == 5) {// Serial.println ("recibió 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } /////////////////////////////////////////// void requestEvent () {

if (btnMode == true) {

Wire.write (5); // Serial.println ("5 보냄"); } más {Wire.write (0); }

}

void ani0 () {

// Serial.println ("0"); }

void ani1 () {

// Serial.println ("1"); if (pNumber == 0) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; para (int a = 0; a <2; a ++) {tono [a1 [a] = 100; sat [a1 [a] = 95; brillante [a1 [a] = 100; } para (int b = 0; b <2; b ++) {tono [b1 = 200; sat [b1 = 95; brillante [b1 = 100; } para (int c = 0; c <2; c ++) {tono [c1 [c] = 300; sat [c1 [c] = 95; brillante [c1 [c] = 100; } // Serial.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; para (int a = 0; a <8; a ++) {tono [a2 [a] = 26; sat [a2 [a] = 95; brillante [a2 [a] = 100; } para (int d = 0; d <4; d ++) {tono [d2 [d] = 63; sat [d2 [d] = 95; brillante [d2 [d] = 100; } // Serial.println ("1"); } else if (pNumber == 2) {// patrón de cubo gigante para (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // amarillo 06 para (int a = 0; a <6; a ++) {tono [a14 [a] = 35; sat [a14 [a] = 95; brillante [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // amarillo para (int a = 0; a <6; a ++) {tono [a3 [a] = 53; sat [a3 [a] = 95; brillante [a3 [a] = 100; }} más si (pNumber == 4) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int a4 = {34, 35}; // amarillo int b4 = {47}; // azul int c4 = {48}; // violeta

para (int a = 0; a <2; a ++) {tono [a4 [a] = 53; sat [a4 [a] = 95; brillante [a4 [a] = 100; }

para (int b = 0; b <1; b ++) {hue [b4 = 210; sat [b4 = 95; brillante [b4 = 100; } para (int c = 0; c <1; c ++) {tono [c4 [c] = 307; sat [c4 [c] = 95; brillante [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};

para (int a = 0; a <6; a ++) {hue [a5 [a] = 100; sat [a5 [a] = 95; brillante [a5 [a] = 100; }} más si (pNumber == 6) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // amarillo para (int a = 0; a <6; a ++) {tono [a6 [a] = 53; sat [a6 [a] = 95; brillante [a6 [a] = 100; }} más si (pNumber == 7) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c7 [c] = 307; sat [c7 [c] = 95; brillante [c7 [c] = 100; }} más si (pNumber == 8) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c8 [c] = 307; sat [c8 [c] = 95; brillante [c8 [c] = 100; }} más si (pNumber == 9) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c9 [c] = 307; sat [c9 [c] = 95; brillante [c9 [c] = 100; }} más si (pNumber == 10) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c10 [c] = 307; sat [c10 [c] = 95; brillante [c10 [c] = 100; }} más si (pNumber == 11) {for (int i = 0; i <num; i ++) {brillante = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c11 [c] = 307; sat [c11 [c] = 95; brillante [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // morado para (int c = 0; c <6; c ++) {tono [c12 [c] = 307; sat [c12 [c] = 95; brillante [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a13 = {34, 35}; // amarillo int b13 = {47}; // azul int c13 = {48}; // morado para (int a = 0; a <2; a ++) {tono [a13 [a] = 53; sat [a13 [a] = 95; brillante [a13 [a] = 100; } para (int b = 0; b <1; b ++) {tono [b13 = 210; sat [b13 = 95; brillante [b13 = 100; } para (int c = 0; c <1; c ++) {tono [c13 [c] = 307; sat [c13 [c] = 95; brillante [c13 [c] = 100; }} pNumber = pNumber + 1;

if (pNumber == 14) {

pNumber = 0; }}

void ani2 () {

// Serial.println ("2"); curM largo sin signo = milis ();

if (curM - preM> = 10) {

preM = curM; for (int i = 0; i <num; i ++) {if (tono = 360) {gValue = -1; } matiz = matiz + gValue ; } contador ++; if (contador == 360) {// Serial.print ("contador:"); // Serial.println (contador); // Serial.println (curM); contador = 0; ani2_Counter = 0; }}}

void ani3 () {

// Serial.println ("3"); } ///////////////////////////////////////////// void readyState () {/ / Serial.println ("listo"); } /////////////////////////////////////////// void btnEvent (int b_interval) {curMillis1 largo sin firmar = millis ();

for (int i = 0; i <num; i ++) {btnState = digitalRead (btnPin ); }

if (curMillis1 - preMillis1> b_interval) {

preMillis1 = curMillis1; para (int i = 0; i = 360) {hueV = -1; } más si (tono <= 0) {tonoV = 1; } tono = tono + tonoV ; brillante = 100; }}}} ///////////////////////////////////////////// void setPixels (int k) {for (int i = 0; i <k; i ++) {H2R_HSBtoRGB (tono , sat , brillante , colores ); int num1 = i * 3; strip.setPixelColor (num1, colores [0], colores [1], colores [2]); strip.setPixelColor (num1 + 1, colores [0], colores [1], colores [2]); strip.setPixelColor (num1 + 2, colores [0], colores [1], colores [2]); } strip.show (); }

Paso 20: Patrones

¡Patrones!
¡Patrones!
¡Patrones!
¡Patrones!

Este proyecto tiene varios triángulos que forman una forma hexagonal. ¡Para que pueda crear patrones estereoscópicos de acuerdo con cómo diseñe la luz! Simplemente presione cada pieza y se graduarán varios colores, y cuando salga el color que desea, simplemente presione la mano que presionó y ¡seguirá brillando maravillosamente con el color que deseaba!

Recomendado: