Light Me Up !: 20 etapas (com fotos)
Light Me Up !: 20 etapas (com fotos)
Anonim
Inspire-me!
Inspire-me!
Inspire-me!
Inspire-me!
Inspire-me!
Inspire-me!
Inspire-me!
Inspire-me!

membros da equipe do projeto

(Hyewon Shin, Eunjeong Ko, Junsung Yi)

E se você pudesse tocar e projetar a luz? Qual seria a sensação se você tivesse um lindo padrão de luz que você mesmo desenhou com uma animação interessante? Light me up será um caderno de esboços interessante que toca e desenha a própria luz e faz padrões interessantes! Este projeto tem vários triângulos que formam um forma hexagonal. Assim, você pode criar padrões estereoscópicos de acordo com como projeta a luz! Basta pressionar cada peça e várias cores serão graduadas, e quando a cor desejada sair, basta bater na mão que você pressionou e ela continuará a brilhar lindamente com a cor que você queria! O projeto usava cerca de 312 triângulos, mas poderia criar uma boa luz que funciona bem com 6 triângulos. Agora deixe-me mostrar como fazer com seis triângulos. Siga os passos e você terá seu próprio trabalho maravilhoso!

Suprimentos

Hardware: Arduino (usei o arduino mega 2560), acrílico (transparente, branco), faixa de LED (NeoPixel), filme difusor, botão, conector de 4 pinos, fio, placa de circuito, fonte de alimentação

Ferramentas: Máquina de corte guiada a laser, impressora 3D

Etapa 1: vamos fazer isso

Vamos fazer isso!
Vamos fazer isso!
Vamos fazer isso!
Vamos fazer isso!
Vamos fazer isso!
Vamos fazer isso!

Vamos fazer essa peça hexagonal fofa comigo!

O Light Me Up é feito com 312 triângulos, mas mesmo 6 triângulos podem projetar uma luz maravilhosa. Se você quiser fazer isso em uma escala maior, pode fazê-lo consultando o arquivo anexado abaixo.

Etapa 2: Preparação do Material

Preparação de Material
Preparação de Material

Etapa 3: Corte de acrílico

Corte de acrílico
Corte de acrílico
Corte de acrílico
Corte de acrílico
Corte de acrílico
Corte de acrílico
Corte de acrílico
Corte de acrílico

Use um cortador a laser para cortar a frente e o verso de cada parte. A cor do acrílico na parte de trás pode ser qualquer coisa que você quiser, mas certifique-se de usar acrílico transparente porque a frente precisa ser escurecida! Se você usar um acrílico de cor diferente do transparente, não verá bem a luz.

Etapa 4: faça os lados com impressoras 3D

Crie lados com impressoras 3D
Crie lados com impressoras 3D
Crie lados com impressoras 3D
Crie lados com impressoras 3D
Crie lados com impressoras 3D
Crie lados com impressoras 3D

Agora é hora de fazer as laterais de cada peça. Vamos lá! Os arquivos de modelagem 3D na lateral estão anexados abaixo. Usamos o PLA para fazer os lados. O PLA é mais forte e tem menos contrações do que o ABS, então os filamentos são recomendados para usar o PLA.

Etapa 5: Filmagem

filmando
filmando
filmando
filmando
filmando
filmando

Agora vamos colocar um filme de difusão de luz no acrílico da frente. Se você colocar filme nele, ele se espalha e brilha muito mais bonito. Primeiro, corte o filme no formato de um triângulo (é melhor você cortar o filme maior do que o acrílico cortado) É simples colocar o filme, tipo, um filme protetor em seu telefone. Se você quiser dar gorjeta aqui, você pode usar um cartão para empurrá-lo para que ele possa ficar bem preso!

Etapa 6: prenda a faixa de LED + faixa de LED de solda (NeoPixel) com fios

Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios
Anexe a faixa de LED + faixa de LED de solda (NeoPixel) com fios

Se você tem sido tão bom em soldar a faixa de LED, é hora de colocar a faixa de LED na parte traseira. Primeiro, coloque uma pistola de cola ou fita adesiva dupla-face na parte de trás da faixa de LED. E primeiro remova os fios de ambos os lados do fio de solda através dos orifícios em ambos os lados. Por fim, coloque a faixa de LED no acrílico traseiro e pronto!

É hora de soldar! prepare tiras de LED, conectores de 4 pinos (conector ou fios) e o que você precisa para soldar. Usei LEDs em três unidades. Você pode usar um ou dois LEDs se quiser, mas recomendo usar três. Quando todos os materiais estiverem prontos, solde os fios nas linhas de dados, nas linhas de 5v e nas linhas de aterramento da faixa de LED.

Etapa 7: Soldar o interruptor de tato com fios

Chave de solda de tato com fios
Chave de solda de tato com fios
Chave de solda de tato com fios
Chave de solda de tato com fios

Etapa 8: Montagem - Insira o parafuso na lateral = ①

Montagem - Insira o parafuso na lateral = ①
Montagem - Insira o parafuso na lateral = ①
Montagem - Insira o parafuso na lateral = ①
Montagem - Insira o parafuso na lateral = ①

Agora é uma parte realmente fácil! Coloque um parafuso em cada um dos três lados impressos em 3D. A razão pela qual usar o botão de parafuso como usar um estrutural será capaz de fazer parafusos e porcas. Quando a peça estiver pronta, coloco a peça na caixa e acabo com uma noz.

Etapa 9: Anexe Ⓛⓣ ao Ⓒ = ②

Anexe Ⓛⓣ ao Ⓒ = ②
Anexe Ⓛⓣ ao Ⓒ = ②
Anexe Ⓛⓣ ao Ⓒ = ②
Anexe Ⓛⓣ ao Ⓒ = ②

Etapa 10: Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③

Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③
Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③
Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③
Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③
Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③
Montagem - Use Ⓦ e Ⓝ para combinar ① e ② = ③

Etapa 11: Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④

Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④
Montagem - Anexar Ⓐⓔ e ③ usando uma ligação acrílica = ④

Se você colocar um parafuso na lateral, vamos colocá-lo na lateral e na frente. A frente é de acrílico, então você deve colocá-la com uma colagem de acrílico dedicada. Se você anexar acrílico a um adesivo regular, ele deixará uma marca.

Etapa 12: Anexe Ⓢ a Ⓓ = ⑤

Anexe Ⓢ a Ⓓ = ⑤
Anexe Ⓢ a Ⓓ = ⑤
Anexe Ⓢ a Ⓓ = ⑤
Anexe Ⓢ a Ⓓ = ⑤

Etapa 13: Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥

Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥
Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥
Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥
Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥
Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥
Montagem -Combine ④ e ⑤ Usando Ⓦ e Ⓝ = ⑥

Etapa 14: Montagem da peça completa

Montagem de peça completa
Montagem de peça completa
Montagem de peça completa
Montagem de peça completa
Montagem de peça completa
Montagem de peça completa

Etapa 15: A aparência de trabalho de um projeto

Image
Image

Etapa 16: NeoPixel, fiação do conector

NeoPixel, fiação do conector
NeoPixel, fiação do conector
NeoPixel, fiação do conector
NeoPixel, fiação do conector
NeoPixel, fiação do conector
NeoPixel, fiação do conector

Etapa 17: Fiação NeoPixel e Arduino

Fiação NeoPixel e Arduino
Fiação NeoPixel e Arduino

Etapa 18: programar o Arduino

extern volatile unsigned long timer0_millis;

#incluir

#define MODEBTNNUM 3 int ani_mode = 0; longo sem sinal preM1, preM2, preM3;

void setup () {

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

void loop () {

para (int i = 0; i <MODEBTNNUM; i ++) {if (! digitalRead (i + 2)) ani_mode = i + 1; } para (int i = 0; i <6; i ++) {Wire.requestFrom (i + 1, 1); while (Wire.available ()) {int x = Wire.read (); // Serial.println (x); if (x == 5) {modo_ani = 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 ("reset do cronômetro"); para (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}

Etapa 19:

extern volatile unsigned long timer0_millis;

#incluir

#include #define PIN 12 #define NUMPIXELS 162 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int num = NUMPIXELS / 3; const int escravoNum = 1; cores internas [num] [3]; matiz interno [num]; int sat [num]; int brilhante [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, 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, 1, 1}; #include #define BTNNUM 1 int f_v = 1; sem sinal longo preMillis1; preM longo sem sinal; int ani_mode = 0; int ani2_Contador = 0; contador interno = 0; ///////////////////////////////////////////////// void setup () {Wire. começar (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (receiveEvent); para (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } /////////////////////////////////////////////////

void loop () {

if (f_v == 1) {para (int i = 0; i <num; i ++) {matiz = 50; sat = 95; brilhante = 100; } f_v = 0; } ////////////////////////////////////////// // 버튼 입력 체크: 멈춤 신호 보내기 btnMode = falso; para (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); ////////////////////////////////////////// switch (ani_mode) {case 0: ani0 (); pausa; caso 1: ani1 (); ani_mode = 0; ani2_Contador = 0; pausa; caso 2: ani2_Contador = 1; ani_mode = 0; pausa; caso 3: ani3 (); ani_mode = 0; ani2_Contador = 0; pausa; padrão: readyState (); pausa; } if (ani2_Contador == 1) {ani2 (); } setPixels (num); }

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

void receiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println ("recebeu 5"); ani_mode = 0; } modo_ani = x; // Serial.println (ani_mode); } ///////////////////////////////////////////////// void requestEvent () {

if (btnMode == true) {

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

}

void ani0 () {

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

void ani1 () {

// Serial.println ("1"); if (pNumber == 0) {for (int i = 0; i <num; i ++) {brilhante = 0; gValor = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; para (int a = 0; a <2; a ++) {matiz [a1 [a] = 100; sat [a1 [a] = 95; brilhante [a1 [a] = 100; } para (int b = 0; b <2; b ++) {matiz [b1 = 200; sat [b1 = 95; brilhante [b1 = 100; } para (int c = 0; c <2; c ++) {matiz [c1 [c] = 300; sat [c1 [c] = 95; brilhante [c1 [c] = 100; } // Serial.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {brilhante = 0; gValor = 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 ++) {matiz [a2 [a] = 26; sat [a2 [a] = 95; brilhante [a2 [a] = 100; } para (int d = 0; d <4; d ++) {matiz [d2 [d] = 63; sat [d2 [d] = 95; brilhante [d2 [d] = 100; } // Serial.println ("1"); } else if (pNumber == 2) {// padrão de cubo gigante para (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // amarelo 06 para (int a = 0; a <6; a ++) {matiz [a14 [a] = 35; sat [a14 [a] = 95; brilhante [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // amarelo para (int a = 0; a <6; a ++) {matiz [a3 [a] = 53; sat [a3 [a] = 95; brilhante [a3 [a] = 100; }} else if (pNumber == 4) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int a4 = {34, 35}; // amarelo int b4 = {47}; // azul int c4 = {48}; // roxo

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

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

para (int a = 0; a <6; a ++) {matiz [a5 [a] = 100; sat [a5 [a] = 95; brilhante [a5 [a] = 100; }} else if (pNumber == 6) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // amarelo para (int a = 0; a <6; a ++) {matiz [a6 [a] = 53; sat [a6 [a] = 95; brilhante [a6 [a] = 100; }} else if (pNumber == 7) {for (int i = 0; i <num; i ++) {brilhante = 0; gValor = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // roxo para (int c = 0; c <6; c ++) {matiz [c7 [c] = 307; sat [c7 [c] = 95; brilhante [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // roxo para (int c = 0; c <6; c ++) {matiz [c8 [c] = 307; sat [c8 [c] = 95; brilhante [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {brilhante = 0; gValor = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // roxo para (int c = 0; c <6; c ++) {matiz [c9 [c] = 307; sat [c9 [c] = 95; brilhante [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // roxo para (int c = 0; c <6; c ++) {matiz [c10 [c] = 307; sat [c10 [c] = 95; brilhante [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // roxo para (int c = 0; c <6; c ++) {matiz [c11 [c] = 307; sat [c11 [c] = 95; brilhante [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {bright = 0; gValor = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // roxo para (int c = 0; c <6; c ++) {matiz [c12 [c] = 307; sat [c12 [c] = 95; brilhante [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {brilhante = 0; gValor = 1; } int a13 = {34, 35}; // amarelo int b13 = {47}; // azul int c13 = {48}; // roxo para (int a = 0; a <2; a ++) {matiz [a13 [a] = 53; sat [a13 [a] = 95; brilhante [a13 [a] = 100; } para (int b = 0; b <1; b ++) {matiz [b13 = 210; sat [b13 = 95; brilhante [b13 = 100; } para (int c = 0; c <1; c ++) {matiz [c13 [c] = 307; sat [c13 [c] = 95; brilhante [c13 [c] = 100; }} pNumber = pNumber + 1;

if (pNumber == 14) {

pNumber = 0; }}

void ani2 () {

// Serial.println ("2"); curM longo sem sinal = millis ();

if (curM - preM> = 10) {

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

void ani3 () {

// Serial.println ("3"); } ///////////////////////////////////////////////// void readyState () {/ / Serial.println ("pronto"); } ///////////////////////////////////////////////// void btnEvent (int b_interval) {curMillis1 longo sem sinal = millis ();

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

if (curMillis1 - preMillis1> b_interval) {

preMillis1 = curMillis1; para (int i = 0; i = 360) {hueV = -1; } else if (hue <= 0) {hueV = 1; } matiz = matiz + matizV ; brilhante = 100; }}}} /////////////////////////////////////////// void setPixels (int k) {para (int i = 0; i <k; i ++) {H2R_HSBtoRGB (matiz , sat , brilhante , cores ); int num1 = i * 3; strip.setPixelColor (num1, cores [0], cores [1], cores [2]); strip.setPixelColor (num1 + 1, cores [0], cores [1], cores [2]); strip.setPixelColor (num1 + 2, cores [0], cores [1], cores [2]); } strip.show (); }

Etapa 20: Padrões

Padrões!
Padrões!
Padrões!
Padrões!

Este projeto possui vários triângulos que formam uma forma hexagonal. Assim, você pode criar padrões estereoscópicos de acordo com como projeta a luz! Basta pressionar cada peça e várias cores serão graduadas, e quando a cor desejada sair, basta bater na mão que pressionou e ela continuará a brilhar lindamente com a cor desejada!