Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Gawin Natin
- Hakbang 2: Paghahanda ng Materyal
- Hakbang 3: Pagputol ng Acrylic
- Hakbang 4: Gumawa ng Mga Gilid Sa Mga 3D Printer
- Hakbang 5: Pag-film
- Hakbang 6: Maglakip ng LED Strip + Soldering LED Strip (NeoPixel) Sa Mga Wires
- Hakbang 7: Paglipat ng Tact ng Soldering Sa Mga Wires
- Hakbang 8: Assembly -Insert Bolt sa Gilid = ①
- Hakbang 9: Ikabit ang Ⓛⓣ sa Ⓒ = ②
- Hakbang 10: Assembly-Gumamit ng isang Ⓦ at Ⓝ upang pagsamahin ang ① at ② = ③
- Hakbang 11: Assembly -Attach Ⓐⓔ at ③ Paggamit ng isang Acrylic Bond = ④
- Hakbang 12: Ikabit ang Ⓢ hanggang Ⓓ = ⑤
- Hakbang 13: Assembly -Combine ④ at ⑤ Paggamit ng Ⓦ at Ⓝ = ⑥
- Hakbang 14: Kumpletuhin ang Piece Assembly
- Hakbang 15: Ang Paggawa ng Hitsura ng isang Proyekto
- Hakbang 16: NeoPixel, Mga Kable ng Connector
- Hakbang 17: Mga Kable ng NeoPixel at Arduino
- Hakbang 18: I-program ang Arduino
- Hakbang 19:
- Hakbang 20: Mga pattern
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
mga miyembro ng koponan ng proyekto
(Hyewon Shin, Eunjeong Ko, Junsung Yi)
Paano kung maaari mong hawakan at idisenyo ang ilaw? Ano ang pakiramdam kung mayroon kang isang magandang pattern ng ilaw na iyong dinisenyo ang iyong sarili sa isang kagiliw-giliw na animasyon? Ang ilaw sa akin ay magiging isang kagiliw-giliw na sketchbook na pumindot at nagdidisenyo ng ilaw mismo at gumagawa ng mga kagiliw-giliw na mga pattern! Ang proyektong ito ay may maraming mga triangles na bumubuo ng hexagonal na hugis. Kaya maaari kang lumikha ng mga pattern ng stereoscopic ayon sa kung paano mo dinisenyo ang ilaw! Pindutin lamang ang bawat piraso at iba't ibang mga kulay ay mai-gradated, at kapag ang kulay na gusto mo ay lumabas, pindutin lamang ang kamay na pinindot mo at magpapatuloy itong lumiwanag nang maganda sa kulay na gusto mo! Gumamit ang proyekto ng mga 312 triangles, ngunit maaaring lumikha isang magandang ilaw na gumagana nang maayos sa 6 na mga triangles. Hayaan mo akong ipakita sa iyo kung paano ito gawin sa anim na tatsulok. Sundin ang mga hakbang at magkakaroon ka ng iyong sariling kamangha-manghang trabaho!
Mga gamit
Hardware: Arduino (Gumamit ako ng arduino mega 2560), Acrylic (malinaw, puti), LED Strip (NeoPixel), Diffuser Film, pindutan, 4 pin Connector, Wire, Circuit Board, Power Supply
Mga tool: Laser-Guided Cutting Machine, 3D Printer
Hakbang 1: Gawin Natin
Gawin natin ang cute na hexagonal na piraso na ito sa akin!
Ang Light Me Up ay ginawa gamit ang 312 triangles, ngunit kahit 6 na triangles ay maaaring magdisenyo ng kamangha-manghang ilaw. Kung nais mong gawin ito sa isang mas malaking sukat, magagawa mo ito sa pamamagitan ng pag-refer sa file na nakakabit sa ibaba.
Hakbang 2: Paghahanda ng Materyal
Hakbang 3: Pagputol ng Acrylic
Gumamit ng isang laser cutter upang i-cut ang harap at likod ng bawat bahagi. Ang kulay ng acrylic sa likod ay maaaring maging anumang nais mo, ngunit tiyaking gumamit ng transparent acrylic dahil ang harap ay dapat na lumabo! Kung gumagamit ka ng isang kulay na acrylic maliban sa transparent, hindi mo makikita ang ilaw ng mabuti.
Hakbang 4: Gumawa ng Mga Gilid Sa Mga 3D Printer
Ngayon ay oras na upang gawin ang mga gilid ng bawat piraso. Gawin natin ito! Ang mga file ng pagmomodelo ng 3D sa gilid ay nakakabit sa ibaba. Ginamit namin ang PLA upang makagawa ng panig Ang PLA ay mas malakas at mas mababa ang mga contraction kaysa sa ABS, kaya inirekumenda ang mga filament na gamitin ang PLA.
Hakbang 5: Pag-film
Ngayon maglagay tayo ng isang light diffusion film sa acrylic sa harap. Kung maglagay ka ng pelikula dito, kumakalat ito at mas sikat ng mas maganda. Una, gupitin ang pelikula sa hugis ng isang tatsulok. (Mas mabuti mong gupitin ang pelikula na mas malaki kaysa sa cut acrylic) Ito ay simpleng maglagay ng pelikula, tulad ng isang proteksiyon na pelikula sa iyong telepono. Kung nais mong tip dito, maaari mong gamitin ang isang card upang itulak ito upang ma-stuck nang maayos!
Hakbang 6: Maglakip ng LED Strip + Soldering LED Strip (NeoPixel) Sa Mga Wires
Kung napakahusay mo sa paghihinang ng LED strip, oras na upang ilagay ang LED strip sa likod. Una, ilakip ang isang glue gun o two-sided tape sa likuran ng LED strip. At alisin muna ang mga wire mula sa magkabilang panig ng soldering wire sa pamamagitan ng mga butas sa magkabilang panig. Sa wakas, ikabit ang LED strip sa likod ng acrylic at tapos na ito!
Oras na ng paghihinang! maghanda ng mga LED strip, 4-pin na konektor (konektor o mga wire) at kung ano ang kailangan mo para sa paghihinang. Gumamit ako ng mga LED sa tatlong mga yunit. Maaari kang gumamit ng isa o dalawang mga LED kung nais mo, ngunit inirerekumenda ko ang paggamit ng tatlo. Kapag handa na ang lahat ng mga materyal, maghinang ng mga wire sa parehong mga linya ng data, mga linya ng 5v, at mga linya ng lupa ng LED strip.
Hakbang 7: Paglipat ng Tact ng Soldering Sa Mga Wires
Hakbang 8: Assembly -Insert Bolt sa Gilid = ①
Ngayon ito ay isang tunay na madaling bahagi! Maglagay ng isang bolt sa bawat isa sa tatlong mga naka-print na 3D. Ang dahilan kung bakit magagawa ang paggamit ng pindutan ng bolt tulad ng paggamit ng isang istruktura na bolts at mani. Kapag natapos ang piraso, ilalagay ko ang piraso sa kaso at tapusin ito sa isang nut.
Hakbang 9: Ikabit ang Ⓛⓣ sa Ⓒ = ②
Hakbang 10: Assembly-Gumamit ng isang Ⓦ at Ⓝ upang pagsamahin ang ① at ② = ③
Hakbang 11: Assembly -Attach Ⓐⓔ at ③ Paggamit ng isang Acrylic Bond = ④
Kung maglalagay ka ng isang bolt sa gilid, ilalagay namin ito sa gilid at sa harap. Ang harap ay acrylic, kaya kailangan mong ilagay ito sa isang nakatuon na bono ng acrylic. Kung ikakabit mo ang acrylic sa isang regular na bono, mag-iiwan ito ng marka.
Hakbang 12: Ikabit ang Ⓢ hanggang Ⓓ = ⑤
Hakbang 13: Assembly -Combine ④ at ⑤ Paggamit ng Ⓦ at Ⓝ = ⑥
Hakbang 14: Kumpletuhin ang Piece Assembly
Hakbang 15: Ang Paggawa ng Hitsura ng isang Proyekto
Hakbang 16: NeoPixel, Mga Kable ng Connector
Hakbang 17: Mga Kable ng NeoPixel at Arduino
Hakbang 18: I-program ang Arduino
pabagu-bago ng isip unsigned mahabang timer0_millis;
# isama
#define MODEBTNNUM 3 int ani_mode = 0; unsigned mahabang preM1, preM2, preM3;
walang bisa ang pag-setup () {
Wire.begin (); para sa (int i = 0; i <MODEBTNNUM; i ++) {pinMode (i + 2, INPUT_PULLUP); } //Serial.begin(9600); }
void loop () {
para sa (int i = 0; i <MODEBTNNUM; i ++) {kung (! digitalRead (i + 2)) ani_mode = i + 1; } para sa (int i = 0; i <6; i ++) {Wire.requestFrom (i + 1, 1); habang (Wire.available ()) {int x = Wire.read (); // Serial.println (x); kung (x == 5) {ani_mode = 0; // Serial.println ("x = 5"); }}} // ///. /////// if (ani_mode == 0) {para (int i = 1; i 3000) {preM1 = current1; para sa (int i = 1; i 5000) {preM2 = kasalukuyang2; para sa (int i = 1; i 3000) {preM3 = current3; // timer0_millis = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("timer reset"); para sa (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}
Hakbang 19:
pabagu-bago ng isip unsigned mahabang timer0_millis;
# isama
#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; int mga kulay [num] [3]; int hue [num]; int sat [num]; int maliwanag [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}; 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}; # isama ang # tukuyin ang BTNNUM 1 int f_v = 1; unsigned mahabang preMillis1; unsigned mahabang preM; int ani_mode = 0; int ani2_Counter = 0; int counter = 0; // ///. magsimula (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (acceptEvent); para sa (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } // ///.
void loop () {
kung (f_v == 1) {para sa (int i = 0; i <num; i ++) {hue = 50; sat = 95; maliwanag = 100; } f_v = 0; } // ///. /// hindi totoo; para sa (int i = 0; i <num; i ++) {kung (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); // ///. /// pahinga; kaso 1: ani1 (); ani_mode = 0; ani2_Counter = 0; pahinga; kaso 2: ani2_Counter = 1; ani_mode = 0; pahinga; kaso 3: ani3 (); ani_mode = 0; ani2_Counter = 0; pahinga; default: readyState (); pahinga; } kung (ani2_Counter == 1) {ani2 (); } setPixels (num); }
///////////////////////////////////////////
void acceptEvent (int howMany) {int x = Wire.read (); kung (x == 5) {// Serial.println ("natanggap 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } // ///. ///
kung (btnMode == totoo) {
Wire.write (5); // Serial.println ("5 보냄"); } iba pa {Wire.write (0); }
}
walang bisa ani0 () {
// Serial.println ("0"); }
walang bisa ani1 () {
// Serial.println ("1"); kung (pNumber == 0) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; para sa (int a = 0; a <2; a ++) {hue [a1 [a] = 100; nakaupo [a1 [a] = 95; maliwanag [a1 [a] = 100; } para sa (int b = 0; b <2; b ++) {hue [b1 = 200; nakaupo [b1 = 95; maliwanag [b1 = 100; } para sa (int c = 0; c <2; c ++) {hue [c1 [c] = 300; nakaupo [c1 [c] = 95; maliwanag [c1 [c] = 100; } // Serial.println ("0"); } iba pa kung (pNumber == 1) {para sa (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 sa (int a = 0; a <8; a ++) {hue [a2 [a] = 26; nakaupo [a2 [a] = 95; maliwanag [a2 [a] = 100; } para sa (int d = 0; d <4; d ++) {hue [d2 [d] = 63; nakaupo [d2 [d] = 95; maliwanag [d2 [d] = 100; } // Serial.println ("1"); } iba pa kung (pNumber == 2) {// giant cube pattern para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // dilaw 06 para sa (int a = 0; a <6; a ++) {hue [a14 [a] = 35; nakaupo [a14 [a] = 95; maliwanag [a14 [a] = 100; }} iba pa kung (pNumber == 3) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // dilaw para sa (int a = 0; a <6; a ++) {hue [a3 [a] = 53; nakaupo [a3 [a] = 95; maliwanag [a3 [a] = 100; }} iba pa kung (pNumber == 4) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a4 = {34, 35}; // yellow int b4 = {47}; // blue int c4 = {48}; // purple
para sa (int a = 0; a <2; a ++) {hue [a4 [a] = 53; nakaupo [a4 [a] = 95; maliwanag [a4 [a] = 100; }
para sa (int b = 0; b <1; b ++) {hue [b4 = 210; nakaupo [b4 = 95; maliwanag [b4 = 100; } para sa (int c = 0; c <1; c ++) {hue [c4 [c] = 307; nakaupo [c4 [c] = 95; maliwanag [c4 [c] = 100; }} iba pa kung (pNumber == 5) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};
para sa (int a = 0; a <6; a ++) {hue [a5 [a] = 100; nakaupo [a5 [a] = 95; maliwanag [a5 [a] = 100; }} iba pa kung (pNumber == 6) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // dilaw para sa (int a = 0; a <6; a ++) {hue [a6 [a] = 53; nakaupo [a6 [a] = 95; maliwanag [a6 [a] = 100; }} iba pa kung (pNumber == 7) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // purple para sa (int c = 0; c <6; c ++) {hue [c7 [c] = 307; nakaupo [c7 [c] = 95; maliwanag [c7 [c] = 100; }} iba pa kung (pNumber == 8) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // purple for (int c = 0; c <6; c ++) {hue [c8 [c] = 307; nakaupo [c8 [c] = 95; maliwanag [c8 [c] = 100; }} iba pa kung (pNumber == 9) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // purple for (int c = 0; c <6; c ++) {hue [c9 [c] = 307; nakaupo [c9 [c] = 95; maliwanag [c9 [c] = 100; }} iba pa kung (pNumber == 10) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // purple for (int c = 0; c <6; c ++) {hue [c10 [c] = 307; nakaupo [c10 [c] = 95; maliwanag [c10 [c] = 100; }} iba pa kung (pNumber == 11) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // purple for (int c = 0; c <6; c ++) {hue [c11 [c] = 307; nakaupo [c11 [c] = 95; maliwanag [c11 [c] = 100; }} iba pa kung (pNumber == 12) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // purple for (int c = 0; c <6; c ++) {hue [c12 [c] = 307; nakaupo [c12 [c] = 95; maliwanag [c12 [c] = 100; }} iba pa kung (pNumber == 13) {para sa (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a13 = {34, 35}; // yellow int b13 = {47}; // blue int c13 = {48}; // purple for (int a = 0; a <2; a ++) {hue [a13 [a] = 53; nakaupo [a13 [a] = 95; maliwanag [a13 [a] = 100; } para sa (int b = 0; b <1; b ++) {hue [b13 = 210; nakaupo [b13 = 95; maliwanag [b13 = 100; } para sa (int c = 0; c <1; c ++) {hue [c13 [c] = 307; nakaupo [c13 [c] = 95; maliwanag [c13 [c] = 100; }} pNumber = pNumber + 1;
kung (pNumber == 14) {
pNumber = 0; }}
walang bisa ani2 () {
// Serial.println ("2"); unsigned mahabang curM = millis ();
kung (curM - preM> = 10) {
preM = curM; para sa (int i = 0; i <num; i ++) {kung (hue = 360) {gValue = -1; } hue = hue + gValue ; } counter ++; kung (counter == 360) {// Serial.print ("counter:"); // Serial.println (counter); // Serial.println (curM); counter = 0; ani2_Counter = 0; }}}
walang bisa ani3 () {
// Serial.println ("3"); } // ///. /// / Serial.println ("handa"); } // ///. /// {unsigned long curMillis1 = millis ();
para sa (int i = 0; i <num; i ++) {btnState = digitalRead (btnPin ); }
kung (curMillis1 - preMillis1> b_interval) {
preMillis1 = curMillis1; para sa (int i = 0; i = 360) {hueV = -1; } iba pa kung (hue <= 0) {hueV = 1; } hue = hue + hueV ; maliwanag = 100; }}}} // ///. int k) {para sa (int i = 0; i <k; i ++) {H2R_HSBtoRGB (hue , sat , maliwanag , mga kulay ); int num1 = i * 3; strip.setPixelColor (num1, mga kulay [0], mga kulay [1], mga kulay [2]); strip.setPixelColor (num1 + 1, mga kulay [0], mga kulay [1], mga kulay [2]); strip.setPixelColor (num1 + 2, mga kulay [0], mga kulay [1], mga kulay [2]); } strip.show (); }
Hakbang 20: Mga pattern
Ang proyektong ito ay may maraming mga triangles na bumubuo ng isang hexagonal na hugis. Kaya maaari kang lumikha ng mga pattern ng stereoscopic ayon sa kung paano mo dinisenyo ang ilaw! Pindutin lamang ang bawat piraso at iba't ibang mga kulay ay mai-gradated, at kapag ang kulay na gusto mo ay lumabas, pindutin lamang ang kamay na pinindot mo at magpapatuloy itong lumiwanag nang maganda sa kulay na gusto mo!