Sisällysluettelo:

Light Me Up!: 20 askelta (kuvilla)
Light Me Up!: 20 askelta (kuvilla)

Video: Light Me Up!: 20 askelta (kuvilla)

Video: Light Me Up!: 20 askelta (kuvilla)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Marraskuu
Anonim
Valaise minut!
Valaise minut!
Valaise minut!
Valaise minut!
Valaise minut!
Valaise minut!
Valaise minut!
Valaise minut!

projektitiimin jäsenet

(Hyewon Shin, Eunjeong Ko, Junsung Yi)

Entä jos voisit koskettaa ja suunnitella valoa? Miltä sinusta tuntuisi, jos sinulla olisi kaunis valokuvio, jonka suunnittelisit mielenkiintoisella animaatiolla? Light me up on mielenkiintoinen luonnoskirja, joka koskettaa ja suunnittelee itse valoa ja tekee mielenkiintoisia kuvioita! Tässä projektissa on useita kolmioita, jotka muodostavat kuusikulmainen muoto. Joten voit luoda stereoskooppisia kuvioita valon suunnittelun mukaan! Paina vain jokaista kappaletta ja eri värit luokitellaan, ja kun haluamasi väri tulee esiin, paina vain painamaasi kättä ja se loistaa edelleen kauniisti haluamallasi värillä! Projektissa käytettiin noin 312 kolmiota, mutta mukava valo, joka toimii hyvin 6 kolmion kanssa. Nyt näytän sinulle, kuinka tehdä se kuuden kolmion avulla. Seuraa ohjeita ja saat oman upean työn!

Tarvikkeet

Laitteisto: Arduino (käytin arduino mega 2560), akryyli (kirkas, valkoinen), LED -nauha (NeoPixel), hajotinkalvo, painike, 4 -nastainen liitin, johto, piirilevy, virtalähde

Työkalut: Laser-ohjattu leikkauskone, 3D-tulostin

Vaihe 1: Selviämme

Selvitetään!
Selvitetään!
Selvitetään!
Selvitetään!
Selvitetään!
Selvitetään!

Tehdään tämä söpö kuusikulmainen pala kanssani!

Light Me Up on valmistettu 312 kolmiosta, mutta jopa 6 kolmiota voi suunnitella upeaa valoa. Jos haluat tehdä sen suuremmassa mittakaavassa, voit tehdä sen alla olevan tiedoston avulla.

Vaihe 2: Materiaalin valmistelu

Materiaalin valmistelu
Materiaalin valmistelu

Vaihe 3: Akryylin leikkaaminen

Akryylin leikkaaminen
Akryylin leikkaaminen
Akryylin leikkaaminen
Akryylin leikkaaminen
Akryylin leikkaaminen
Akryylin leikkaaminen
Akryylin leikkaaminen
Akryylin leikkaaminen

Leikkaa kunkin osan etu- ja takaosa laserleikkurilla. Takaosan akryyliväri voi olla mitä tahansa, mutta muista käyttää läpinäkyvää akryylia, koska etuosan on oltava himmeä! Jos käytät muuta kuin läpinäkyvää akryyliväriä, et näe valoa hyvin.

Vaihe 4: Tee sivut 3D -tulostimilla

Tee sivut 3D -tulostimilla
Tee sivut 3D -tulostimilla
Tee sivut 3D -tulostimilla
Tee sivut 3D -tulostimilla
Tee sivut 3D -tulostimilla
Tee sivut 3D -tulostimilla

Nyt on aika tehdä jokaisen kappaleen sivut. Selvitä sivun 3D -mallinnustiedostot alla. Käytimme PLA: ta sivujen tekemiseen PLA on vahvempi ja supistuu vähemmän kuin ABS, joten filamenteja suositellaan käytettäväksi PLA: n kanssa.

Vaihe 5: Kuvaaminen

Kuvaus
Kuvaus
Kuvaus
Kuvaus
Kuvaus
Kuvaus

Laitetaan nyt kevyt diffuusiokalvo etupuolen akryylille. Jos laitat kalvon päälle, se leviää ja loistaa paljon kauniimmin. Leikkaa ensin kalvo kolmion muotoiseksi. (Leikkaa kalvo paremmin kuin leikattu akryyli.) Kalvo on helppo laittaa puhelimellesi esimerkiksi suojakalvon päälle. Jos haluat vinkata tänne, voit painaa korttia, jotta se voidaan kiinnittää siististi!

Vaihe 6: Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla

Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla
Kiinnitä LED -nauha + juotos -LED -nauha (NeoPixel) johdoilla

Jos olet ollut niin hyvä LED -nauhan juottamisessa, on aika laittaa LED -nauha taakse. Kiinnitä ensin liimapistooli tai kaksipuolinen teippi LED-nauhan taakse. Irrota ensin johdot juotoslangan molemmilta puolilta molemmin puolin olevien reikien kautta. Kiinnitä lopuksi LED -nauha taka -akryyliin ja se on ohi!

On juotosaika! valmistele LED-nauhat, 4-napaiset liittimet (liitin tai johdot) ja tarvitsemasi juotokset. Käytin LED -valoja kolmessa yksikössä. Voit halutessasi käyttää yhtä tai kahta LEDiä, mutta suosittelen käyttämään kolmea. Kun kaikki materiaalit ovat valmiita, juota johdot LED -nauhan molempiin tietolinjoihin, 5 voltin ja maadoituslinjoihin.

Vaihe 7: Juotoskytkin johdoilla

Juotoskytkin johdoilla
Juotoskytkin johdoilla
Juotoskytkin johdoilla
Juotoskytkin johdoilla

Vaihe 8: Kokoonpano -Aseta pultti sivulle = ①

Kokoonpano -Aseta pultti sivulle = ①
Kokoonpano -Aseta pultti sivulle = ①
Kokoonpano -Aseta pultti sivulle = ①
Kokoonpano -Aseta pultti sivulle = ①

Nyt se on todella helppo osa! Aseta yksi pultti kullekin 3D -tulostetulle puolelle. Syy siihen, miksi pultin painikkeen käyttö, kuten rakenteellisten pulttien ja muttereiden käyttö, voi olla mahdollista. Kun pala on valmis, laitan sen koteloon ja viimeistelen mutterilla.

Vaihe 9: Kiinnitä Ⓛⓣ kohtaan Ⓒ = ②

Kiinnitä Ⓛⓣ kohtaan Ⓒ = ②
Kiinnitä Ⓛⓣ kohtaan Ⓒ = ②
Kiinnitä Ⓛⓣ kohtaan Ⓒ = ②
Kiinnitä Ⓛⓣ kohtaan Ⓒ = ②

Vaihe 10: Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistääksesi ① ja ② = ③

Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistämään ① ja ② = ③
Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistämään ① ja ② = ③
Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistämään ① ja ② = ③
Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistämään ① ja ② = ③
Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistämään ① ja ② = ③
Kokoonpano -Käytä Ⓦ ja Ⓝ yhdistämään ① ja ② = ③

Vaihe 11: Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④

Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④
Asennus -Kiinnitä Ⓐⓔ ja ③ käyttämällä akryylisidosta = ④

Jos laitat pultin sivulle, laitamme sen sivulle ja eteen. Etupuoli on akryyliä, joten se on asetettava erityisellä akryylisidoksella. Jos kiinnität akryylin tavalliseen sidokseen, se jättää jäljen.

Vaihe 12: Kiinnitä Ⓢ kohtaan Ⓓ = ⑤

Kiinnitä Ⓢ kohtaan Ⓓ = ⑤
Kiinnitä Ⓢ kohtaan Ⓓ = ⑤
Kiinnitä Ⓢ kohtaan Ⓓ = ⑤
Kiinnitä Ⓢ kohtaan Ⓓ = ⑤

Vaihe 13: Kokoaminen -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥

Kokoonpano -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥
Kokoonpano -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥
Kokoonpano -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥
Kokoonpano -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥
Kokoonpano -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥
Kokoonpano -Yhdistä ④ ja ⑤ Käyttämällä Ⓦ ja Ⓝ = ⑥

Vaihe 14: Suorita kappaleen asennus

Täydellinen kappaleen kokoonpano
Täydellinen kappaleen kokoonpano
Täydellinen kappaleen kokoonpano
Täydellinen kappaleen kokoonpano
Täydellinen kappaleen kokoonpano
Täydellinen kappaleen kokoonpano

Vaihe 15: Projektin toimiva ulkonäkö

Image
Image

Vaihe 16: NeoPixel, liittimen johdotus

NeoPixel, liittimen johdotus
NeoPixel, liittimen johdotus
NeoPixel, liittimen johdotus
NeoPixel, liittimen johdotus
NeoPixel, liittimen johdotus
NeoPixel, liittimen johdotus

Vaihe 17: NeoPixel- ja Arduino -johdotus

NeoPixel ja Arduino Wiring
NeoPixel ja Arduino Wiring

Vaihe 18: Ohjelmoi Arduino

ulkoinen haihtuva allekirjoittamaton pitkä ajastin0_millis;

#sisältää

#define MODEBTNNUM 3 int ani_mode = 0; allekirjoittamaton pitkä preM1, preM2, preM3;

void setup () {

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

void loop () {

for (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 (); // Sarja.println (x); jos (x == 5) {ani_mode = 0; // Sarja.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; // ajastin0_millis = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("ajastimen nollaus"); for (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Sarja.println ("3000 "); Wire.endTransmission (i); }}}}

Vaihe 19:

ulkoinen haihtuva allekirjoittamaton pitkä ajastin0_millis;

#sisältää

#include #define PIN 12 #define NUMPIXELS 162 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int numero = NUMPIXELS / 3; const int slaveNum = 1; int värit [numero] [3]; int hue [numero]; int sat [numero]; int kirkas [numero]; int pNumero = 0; int gValue [numero] = {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, 1}; const int btnPin [numero] = {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 [numero]; boolen btnMode; int hueV [numero] = {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, 1}; #include #define BTNNUM 1 int f_v = 1; allekirjoittamaton pitkä preMillis1; allekirjoittamaton pitkä preM; int ani_mode = 0; int ani2_Counter = 0; int laskuri = 0; /////////////////////////////////////////////////////////////////////////////////////////////////// aloita (slaveNum); Wire.onRequest (requestEvent); Wire.onRecept (ReceiveEvent); for (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Sarja.alku (9600); strip.begin (); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void loop () {

jos (f_v == 1) {for (int i = 0; i <num; i ++) {hue = 50; la = 95; kirkas = 100; } f_v = 0; } ///////////////////////////////////////////////////////////////////////// 버튼 입력 멈춤: 멈춤 신호 보내기 btnMode = väärä; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin ))) {btnMode = true; }} btnEvent (5); // Sarja.println (ani_mode); /////////////////////////// tauko; tapaus 1: ani1 (); ani_mode = 0; ani2_Counter = 0; tauko; tapaus 2: ani2_Counter = 1; ani_mode = 0; tauko; tapaus 3: ani3 (); ani_mode = 0; ani2_Counter = 0; tauko; oletus: readyState (); tauko; } jos (ani2_Counter == 1) {ani2 (); } setPixels (numero); }

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

void ReceiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println ("sai 5"); ani_mode = 0; } ani_mode = x; // Sarja.println (ani_mode); } ////////////////////////////////////////////////////////////////////////////////////////////// vo/ request. Event () {

jos (btnMode == true) {

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

}

mitätön ani0 () {

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

void ani1 () {

// Serial.println ("1"); jos (pNumero == 0) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; for (int a = 0; a <2; a ++) {hue [a1 [a] = 100; la [a1 [a] = 95; kirkas [a1 [a] = 100; } for (int b = 0; b <2; b ++) {hue [b1 = 200; la [b1 = 95; kirkas [b1 = 100; } for (int c = 0; c <2; c ++) {hue [c1 [c] = 300; la [c1 [c] = 95; kirkas [c1 [c] = 100; } // Sarja.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 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 ++) {hue [a2 [a] = 26; la [a2 [a] = 95; kirkas [a2 [a] = 100; } for (int d = 0; d <4; d ++) {hue [d2 [d] = 63; la [d2 [d] = 95; kirkas [d2 [d] = 100; } // Sarja.println ("1"); } else if (pNumber == 2) {// jättikuutikuvio (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // keltainen 06 (int a = 0; a <6; a ++) {sävy [a14 [a] = 35; la [a14 [a] = 95; kirkas [a14 [a] = 100; }} muu jos (pNumero == 3) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // keltainen (int a = 0; a <6; a ++) {sävy [a3 [a] = 53; la [a3 [a] = 95; kirkas [a3 [a] = 100; }} muu jos (pNumero == 4) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a4 = {34, 35}; // keltainen int b4 = {47}; // sininen int c4 = {48}; // violetti

for (int a = 0; a <2; a ++) {sävy [a4 [a] = 53; la [a4 [a] = 95; kirkas [a4 [a] = 100; }

for (int b = 0; b <1; b ++) {hue [b4 = 210; la [b4 = 95; kirkas [b4 = 100; } for (int c = 0; c <1; c ++) {hue [c4 [c] = 307; la [c4 [c] = 95; kirkas [c4 [c] = 100; }} muu jos (pNumero == 5) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a5 = {34, 35, 46, 47, 48, 49};

for (int a = 0; a <6; a ++) {hue [a5 [a] = 100; la [a5 [a] = 95; kirkas [a5 [a] = 100; }} muu jos (pNumero == 6) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // keltainen (int a = 0; a <6; a ++) {sävy [a6 [a] = 53; la [a6 [a] = 95; kirkas [a6 [a] = 100; }} muu jos (pNumero == 7) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // violetti (int c = 0; c <6; c ++) {sävy [c7 [c] = 307; la [c7 [c] = 95; kirkas [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // violetti (int c = 0; c <6; c ++) {hue [c8 [c] = 307; la [c8 [c] = 95; kirkas [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // violetti kohteelle (int c = 0; c <6; c ++) {hue [c9 [c] = 307; la [c9 [c] = 95; kirkas [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // violetti kohteelle (int c = 0; c <6; c ++) {hue [c10 [c] = 307; la [c10 [c] = 95; kirkas [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // violetti kohteelle (int c = 0; c <6; c ++) {hue [c11 [c] = 307; la [c11 [c] = 95; kirkas [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // violetti kohteelle (int c = 0; c <6; c ++) {hue [c12 [c] = 307; la [c12 [c] = 95; kirkas [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {bright = 0; gArvo = 1; } int a13 = {34, 35}; // keltainen int b13 = {47}; // sininen int c13 = {48}; // violetti (int a = 0; a <2; a ++) {värisävy [a13 [a] = 53; la [a13 [a] = 95; kirkas [a13 [a] = 100; } for (int b = 0; b <1; b ++) {hue [b13 = 210; la [b13 = 95; kirkas [b13 = 100; } for (int c = 0; c <1; c ++) {hue [c13 [c] = 307; sat [c13 [c] = 95; kirkas [c13 [c] = 100; }} pLuku = pLuku + 1;

jos (pNumero == 14) {

pNumero = 0; }}

void ani2 () {

// Sarja.println ("2"); allekirjoittamaton pitkä curM = millis ();

jos (curM - preM> = 10) {

preM = curM; for (int i = 0; i <num; i ++) {if (hue = 360) {gValue = -1; } sävy = sävy + gValue ; } laskuri ++; if (laskuri == 360) {// Sarja.print ("laskuri:"); // Sarja.println (laskuri); // Sarja.println (curM); laskuri = 0; ani2_Counter = 0; }}}

void ani3 () {

// Serial.println ("3"); } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / Serial.println ("valmis"); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// {unsigned long curMillis1 = millis ();

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

if (curMillis1 - preMillis1> b_interval) {

preMillis1 = curMillis1; (int i = 0; i = 360) {hueV = -1; } muu jos (sävy <= 0) {hueV = 1; } sävy = sävy + hueV ; kirkas = 100; }}}} //////////////////////////////////////////////////////////////////////////////// void setPixels (int k) {for (int i = 0; i <k; i ++) {H2R_HSBtoRGB (sävy , sat , kirkas , värit ); int numero1 = i * 3; strip.setPixelColor (numero1, värit [0], värit [1], värit [2]); strip.setPixelColor (numero1 + 1, värit [0], värit [1], värit [2]); strip.setPixelColor (numero1 + 2, värit [0], värit [1], värit [2]); } strip.show (); }

Vaihe 20: Kuviot

Kuviot!
Kuviot!
Kuviot!
Kuviot!

Tässä projektissa on useita kolmioita, jotka muodostavat kuusikulmaisen muodon. Joten voit luoda stereoskooppisia kuvioita valon suunnittelun mukaan! Paina vain jokaista kappaletta ja eri värit luokitellaan, ja kun haluamasi väri tulee esiin, paina vain painamaasi kättä ja se loistaa edelleen kauniisti haluamallasi värillä!

Suositeltava: