Cuprins:

Light Me Up !: 20 de pași (cu imagini)
Light Me Up !: 20 de pași (cu imagini)

Video: Light Me Up !: 20 de pași (cu imagini)

Video: Light Me Up !: 20 de pași (cu imagini)
Video: Blue October - Light You Up [Official Live Video] 2024, Noiembrie
Anonim
Luminează-mă!
Luminează-mă!
Luminează-mă!
Luminează-mă!
Luminează-mă!
Luminează-mă!
Luminează-mă!
Luminează-mă!

membrii echipei de proiect

(Hyewon Shin, Eunjeong Ko, Junsung Yi)

Ce se întâmplă dacă ai putea atinge și proiecta lumina? Cum te-ai simți dacă ai avea un model frumos de lumină pe care l-ai proiectat cu o animație interesantă? Light me up va fi un caiet de schițe interesant care atinge și proiectează lumina în sine și creează modele interesante! Acest proiect are mai multe triunghiuri care formează o formă hexagonală. Deci, puteți crea modele stereoscopice în funcție de modul în care proiectați lumina! Doar apăsați fiecare piesă și diferite culori vor fi gradate, iar când culoarea dorită va apărea, apăsați mâna pe care ați apăsat și va continua să strălucească frumos cu culoarea dorită! Proiectul a folosit aproximativ 312 de triunghiuri, dar ar putea crea o lumină frumoasă care funcționează bine cu 6 triunghiuri. Acum permiteți-mi să vă arăt cum să o faceți cu șase triunghiuri. Urmați pașii și veți avea propria lucrare minunată!

Provizii

Hardware: Arduino (am folosit arduino mega 2560), acrilic (clar, alb), bandă LED (NeoPixel), film difuzor, buton, conector cu 4 pini, sârmă, placă de circuit, sursă de alimentare

Instrumente: Mașină de tăiat cu laser, imprimantă 3D

Pasul 1: Hai să reușim

Hai sa o facem!
Hai sa o facem!
Hai sa o facem!
Hai sa o facem!
Hai sa o facem!
Hai sa o facem!

Să facem cu mine această piesă hexagonală drăguță!

Light Me Up este realizat folosind 312 triunghiuri, dar chiar și 6 triunghiuri pot proiecta o lumină minunată. Dacă doriți să o faceți la o scară mai mare, o puteți face referindu-vă la fișierul atașat mai jos.

Pasul 2: Pregătirea materialului

Pregătirea materialului
Pregătirea materialului

Pasul 3: tăierea acrilului

Tăierea acrilului
Tăierea acrilului
Tăierea acrilului
Tăierea acrilului
Tăierea acrilului
Tăierea acrilului
Tăierea acrilului
Tăierea acrilului

Utilizați un tăietor cu laser pentru a tăia partea din față și partea din spate a fiecărei părți. Culoarea acrilicului din spate poate fi orice doriți, dar asigurați-vă că utilizați acrilic transparent, deoarece fața trebuie să fie estompată! Dacă utilizați o altă culoare acrilică decât transparentă, nu veți vedea bine lumina.

Pasul 4: Faceți părți cu imprimante 3D

Faceți părți cu imprimante 3D
Faceți părți cu imprimante 3D
Faceți părți cu imprimante 3D
Faceți părți cu imprimante 3D
Faceți părți cu imprimante 3D
Faceți părți cu imprimante 3D

Acum este timpul să faceți părțile laterale ale fiecărei piese. Fișierele de modelare 3D din partea laterală sunt atașate mai jos. Am folosit PLA pentru a face părțile laterale. PLA este mai puternic și are mai puține contracții decât ABS, așa că se recomandă utilizarea filamentelor PLA.

Pasul 5: Filmare

Filmare
Filmare
Filmare
Filmare
Filmare
Filmare

Acum, să punem o peliculă de difuzie a luminii pe acrilicul din față. Dacă puneți film pe el, acesta se întinde și strălucește mult mai frumos. Mai întâi, tăiați filmul în formă de triunghi (ar fi bine să tăiați filmul mai mare decât acrilicul tăiat) Este simplu să puneți filmul, cum ar fi un film protector pe telefon. Dacă doriți să dați bacșiș aici, puteți folosi un card pentru a-l împinge, astfel încât să poată fi blocat cu grijă!

Pasul 6: Atașați banda LED + banda LED de lipit (NeoPixel) cu fire

Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
Atașați banda LED + banda LED de lipit (NeoPixel) cu fire

Dacă ați fost atât de priceput la lipirea benzii LED, este timpul să puneți banda LED pe spate. Mai întâi, atașați un pistol de lipit sau o bandă față-verso pe partea din spate a benzii LED. Și mai întâi scoateți firele de pe ambele părți ale firului de lipit prin orificiile de pe ambele părți. În cele din urmă, atașați banda LED la spatele acrilic și s-a terminat!

Este timpul de lipire! pregătiți benzi LED, conectori cu 4 pini (conector sau fire) și ceea ce aveți nevoie pentru lipire. Am folosit LED-uri în trei unități. Puteți utiliza unul sau două LED-uri dacă doriți, dar vă recomand să utilizați trei. Când toate materialele sunt gata, lipiți firele în ambele linii de date, linii de 5V și linii de masă ale benzii LED.

Pasul 7: Comutator tactil de lipit cu fire

Comutator tactil de lipit cu fire
Comutator tactil de lipit cu fire
Comutator tactil de lipit cu fire
Comutator tactil de lipit cu fire

Pasul 8: Asamblare -Introduceți șurubul pe lateral = ①

Asamblare -Introduceți șurubul lateral = ①
Asamblare -Introduceți șurubul lateral = ①
Asamblare -Introduceți șurubul lateral = ①
Asamblare -Introduceți șurubul lateral = ①

Acum este o parte foarte ușoară! Așezați un șurub pe fiecare dintre cele trei fețe imprimate 3D. Motivul pentru care folosirea butonului de șurub, cum ar fi utilizarea șuruburilor și piulițelor structurale, va fi capabil să facă. Când piesa este terminată, voi pune piesa în cutie și o voi termina cu o piuliță.

Pasul 9: Atașați Ⓛⓣ la Ⓒ = ②

Atașați Ⓛⓣ la Ⓒ = ②
Atașați Ⓛⓣ la Ⓒ = ②
Atașați Ⓛⓣ la Ⓒ = ②
Atașați Ⓛⓣ la Ⓒ = ②

Pasul 10: Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③

Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③

Pasul 11: Asamblarea -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④

Asamblare -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Folosind o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Folosind o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④
Asamblare -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④

Dacă puneți un șurub pe lateral, îl vom pune pe lateral și în față. Partea din față este acrilică, deci trebuie să o îmbraci cu o legătură acrilică dedicată. Dacă atașați acrilic la o legătură obișnuită, acesta va lăsa o urmă.

Pasul 12: Atașați Ⓢ la Ⓓ = ⑤

Atașați Ⓢ la Ⓓ = ⑤
Atașați Ⓢ la Ⓓ = ⑤
Atașați Ⓢ la Ⓓ = ⑤
Atașați Ⓢ la Ⓓ = ⑤

Pasul 13: Asamblarea -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥

Asamblare -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
Asamblare -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
Asamblare -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
Asamblare -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
Asamblare -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
Asamblare -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥

Pasul 14: Completați ansamblul pieselor

Asamblare completă a pieselor
Asamblare completă a pieselor
Asamblare completă a pieselor
Asamblare completă a pieselor
Asamblare completă a pieselor
Asamblare completă a pieselor

Pasul 15: Aspectul de lucru al unui proiect

Image
Image

Pasul 16: NeoPixel, cablarea conectorului

NeoPixel, cablarea conectorului
NeoPixel, cablarea conectorului
NeoPixel, cablarea conectorului
NeoPixel, cablarea conectorului
NeoPixel, cablarea conectorului
NeoPixel, cablarea conectorului

Pasul 17: Cablare NeoPixel și Arduino

Cablare NeoPixel și Arduino
Cablare NeoPixel și Arduino

Pasul 18: Programați Arduino

extern volatile unsigned long timer0_millis;

#include

#define MODEBTNNUM 3 int ani_mode = 0; preM1 lung, nesemnat, preM2, preM3;

configurare nulă () {

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

bucla nulă () {

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

Pasul 19:

extern volatile unsigned long timer0_millis;

#include

#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 slaveNum = 1; culori int [num] [3]; int hue [num]; int sat [num]; int luminos [num]; int Număr p = 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}; 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]; btean 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}; #include #define BTNNUM 1 int f_v = 1; preMillis1 nesemnat lung; preM lung nesemnat; int ani_mode = 0; int ani2_Counter = 0; contor int = 0; ////////////////////////////////////////////// void setup () {Wire. begin (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (receiveEvent); for (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } ///////////////////////////////////////////////

bucla nulă () {

if (f_v == 1) {for (int i = 0; i <num; i ++) {hue = 50; sat = 95; luminos = 100; } f_v = 0; } //////////////////////////////////////// // 버튼 입력 체크: 멈춤 신호 보내기 btnMode = fals; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); //////////////////////////////////////// switch (ani_mode) {case 0: ani0 (); pauză; cazul 1: ani1 (); ani_mode = 0; ani2_Counter = 0; pauză; caz 2: ani2_Counter = 1; ani_mode = 0; pauză; caz 3: ani3 (); ani_mode = 0; ani2_Counter = 0; pauză; implicit: readyState (); pauză; } if (ani2_Counter == 1) {ani2 (); } setPixels (num); }

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

void receiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println ("primit 5"); ani_mode = 0; } ani_mode = 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 ++) {luminos = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; for (int a = 0; a <2; a ++) {nuanță [a1 [a] = 100; sat [a1 [a] = 95; luminos [a1 [a] = 100; } pentru (int b = 0; b <2; b ++) {nuanță [b1 = 200; sat [b1 = 95; luminos [b1 = 100; } pentru (int c = 0; c <2; c ++) {nuanță [c1 [c] = 300; sat [c1 [c] = 95; luminos [c1 [c] = 100; } // Serial.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; for (int a = 0; a <8; a ++) {nuanță [a2 [a] = 26; sat [a2 [a] = 95; luminos [a2 [a] = 100; } pentru (int d = 0; d <4; d ++) {nuanță [d2 [d] = 63; sat [d2 [d] = 95; luminos [d2 [d] = 100; } // Serial.println („1”); } else if (pNumber == 2) {// model cub gigant pentru (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // galben 06 pentru (int a = 0; a <6; a ++) {nuanță [a14 [a] = 35; sat [a14 [a] = 95; luminos [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // galben pentru (int a = 0; a <6; a ++) {nuanță [a3 [a] = 53; sat [a3 [a] = 95; luminos [a3 [a] = 100; }} else if (pNumber == 4) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a4 = {34, 35}; // galben int b4 = {47}; // albastru int c4 = {48}; // mov

for (int a = 0; a <2; a ++) {nuanță [a4 [a] = 53; sat [a4 [a] = 95; luminos [a4 [a] = 100; }

pentru (int b = 0; b <1; b ++) {nuanță [b4 = 210; sat [b4 = 95; luminos [b4 = 100; } pentru (int c = 0; c <1; c ++) {nuanță [c4 [c] = 307; sat [c4 [c] = 95; luminos [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};

for (int a = 0; a <6; a ++) {nuanță [a5 [a] = 100; sat [a5 [a] = 95; luminos [a5 [a] = 100; }} else if (pNumber == 6) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // galben pentru (int a = 0; a <6; a ++) {nuanță [a6 [a] = 53; sat [a6 [a] = 95; luminos [a6 [a] = 100; }} else if (pNumber == 7) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // mov pentru (int c = 0; c <6; c ++) {nuanță [c7 [c] = 307; sat [c7 [c] = 95; luminos [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // mov pentru (int c = 0; c <6; c ++) {nuanță [c8 [c] = 307; sat [c8 [c] = 95; luminos [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // mov pentru (int c = 0; c <6; c ++) {nuanță [c9 [c] = 307; sat [c9 [c] = 95; luminos [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // mov pentru (int c = 0; c <6; c ++) {nuanță [c10 [c] = 307; sat [c10 [c] = 95; luminos [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // mov pentru (int c = 0; c <6; c ++) {nuanță [c11 [c] = 307; sat [c11 [c] = 95; luminos [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // mov pentru (int c = 0; c <6; c ++) {nuanță [c12 [c] = 307; sat [c12 [c] = 95; luminos [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {luminos = 0; gValue = 1; } int a13 = {34, 35}; // galben int b13 = {47}; // blue int c13 = {48}; // mov pentru (int a = 0; a <2; a ++) {nuanță [a13 [a] = 53; sat [a13 [a] = 95; luminos [a13 [a] = 100; } pentru (int b = 0; b <1; b ++) {nuanță [b13 = 210; sat [b13 = 95; luminos [b13 = 100; } pentru (int c = 0; c <1; c ++) {nuanță [c13 [c] = 307; sat [c13 [c] = 95; luminos [c13 [c] = 100; }} pNumber = pNumber + 1;

if (pNumber == 14) {

pNumber = 0; }}

void ani2 () {

// Serial.println ("2"); nesemnat lung curM = millis ();

if (curM - preM> = 10) {

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

void ani3 () {

// Serial.println ("3"); } ///////////////////////////////////////////// void readyState () {/ / Serial.println ("gata"); } ///////////////////////////////////////////// void btnEvent (int b_interval) {unsigned long curMillis1 = millis ();

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

if (curMillis1 - preMillis1> b_interval) {

preMillis1 = curMillis1; for (int i = 0; i = 360) {hueV = -1; } else if (nuanță <= 0) {nuanțăV = 1; } nuanță = nuanță + nuanțăV ; luminos = 100; }}}} ///////////////////////////////////////////// void setPixels (int k) {pentru (int i = 0; i <k; i ++) {H2R_HSBtoRGB (nuanță , sat , luminos , culori ); int num1 = i * 3; strip.setPixelColor (num1, culori [0], culori [1], culori [2]); strip.setPixelColor (num1 + 1, culori [0], culori [1], culori [2]); strip.setPixelColor (num1 + 2, culori [0], culori [1], culori [2]); } strip.show (); }

Pasul 20: Modele

Modele!
Modele!
Modele!
Modele!

Acest proiect are mai multe triunghiuri care formează o formă hexagonală. Deci, puteți crea modele stereoscopice în funcție de modul în care proiectați lumina! Doar apăsați fiecare piesă și diferite culori vor fi gradate, iar când culoarea dorită va apărea, apăsați mâna pe care ați apăsat și va continua să strălucească frumos cu culoarea dorită!

Recomandat: