Sadržaj:
- Supplies
- Korak 1: Uspimo
- Korak 2: Priprema materijala
- Korak 3: Rezanje akrila
- Korak 4: Napravite stranu pomoću 3D štampača
- Korak 5: Snimanje
- Korak 6: Pričvrstite LED traku + LED traku za lemljenje (NeoPixel) žicama
- Korak 7: Taktni prekidač za lemljenje žicama
- Korak 8: Montaža -Umetnite vijak sa strane = ①
- Korak 9: Prikačite Ⓛⓣ na Ⓒ = ②
- Korak 10: Sklapanje -Upotrijebite a Ⓦ i Ⓝ za kombiniranje ① i ② = ③
- Korak 11: Montaža -Pričvrstite Ⓐⓔ i ③ Korištenjem akrilne veze = ④
- Korak 12: Prikačite Ⓢ na Ⓓ = ⑤
- Korak 13: Sklapanje -kombinirajte ④ i ⑤ pomoću Ⓦ i Ⓝ = ⑥
- Korak 14: Potpuna montaža komada
- Korak 15: Radni izgled projekta
- Korak 16: NeoPixel, ožičenje konektora
- Korak 17: NeoPixel i Arduino ožičenje
- Korak 18: Programirajte Arduino
- Korak 19:
- Korak 20: Uzorci
Video: Osvijetli me!: 20 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
članovi projektnog tima
(Hyewon Shin, Eunjeong Ko, Junsung Yi)
Šta ako biste mogli dodirnuti i dizajnirati svjetlo? Kako biste se osjećali da imate prekrasan uzorak svjetla koji ste sami dizajnirali sa zanimljivom animacijom? Light me up će biti zanimljiva skica koja dodiruje i dizajnira samu svjetlost i stvara zanimljive uzorke! Ovaj projekt ima nekoliko trokuta koji tvore šesterokutnog oblika. Tako možete stvoriti stereoskopske uzorke prema načinu na koji osmišljavate svjetlo! Samo pritisnite svaki komad i različite boje će biti preusmjerene, a kada boja koju želite izađete, samo pritisnite ruku koju ste pritisnuli i ona će nastaviti lijepo svijetliti sa bojom koju ste htjeli! Projekt je koristio oko 312 trokuta, ali mogao bi stvoriti lijepo svjetlo koje dobro radi sa 6 trokuta. Sada ću vam pokazati kako to napraviti sa šest trokuta. Slijedite korake i imat ćete svoje divno djelo!
Supplies
Hardver: Arduino (koristio sam arduino mega 2560), akril (prozirno, bijelo), LED traka (NeoPixel), film za difuzor, dugme, 4 -pinski konektor, žica, ploča, napajanje
Alati: Mašina za rezanje sa laserskim navođenjem, 3D štampač
Korak 1: Uspimo
Napravimo ovaj slatki šesterokutni komad sa mnom!
Light Me Up napravljen je pomoću 312 trokuta, ali čak 6 trokuta može dizajnirati predivno svjetlo. Ako ga želite napraviti u većem obimu, to možete učiniti tako što ćete pogledati dolje priloženu datoteku.
Korak 2: Priprema materijala
Korak 3: Rezanje akrila
Laserskim rezačem izrežite prednji i stražnji dio svakog dijela. Boja akrila na stražnjoj strani može biti što god želite, ali svakako upotrijebite prozirni akril jer prednja strana mora biti zatamnjena! Ako koristite akril u boji koji nije proziran, nećete dobro vidjeti svjetlo.
Korak 4: Napravite stranu pomoću 3D štampača
Sada je vrijeme da napravite stranice svakog komada. Učinimo to! Datoteke 3D modeliranja sa strane nalaze se ispod. Koristili smo PLA za izradu bočnih strana. PLA je jača i ima manje kontrakcije od ABS -a, pa se preporučuje korištenje filamenata za upotrebu s PLA -om.
Korak 5: Snimanje
Sada stavimo svjetlosni difuzijski film na akril na prednjoj strani. Ako na njega stavite film, on će se raširiti i zasjati ljepše. Prvo izrežite film u obliku trokuta. (Bolje da izrežete film veći od izrezanog akrila) Lako je staviti film, na primjer, zaštitnu foliju na telefon. Ako želite dati napojnicu ovdje, možete je upotrijebiti da biste je gurnuli kako biste je mogli uredno zaglaviti!
Korak 6: Pričvrstite LED traku + LED traku za lemljenje (NeoPixel) žicama
Ako ste bili tako dobri u lemljenju LED trake, vrijeme je da stavite LED traku na stražnju stranu. Prvo pričvrstite pištolj za ljepilo ili dvostranu traku na stražnju stranu LED trake. I prvo uklonite žice s obje strane žice za lemljenje kroz rupe na obje strane. Na kraju, pričvrstite LED traku na stražnji akril i gotovo!
Vrijeme je za lemljenje! pripremite LED trake, 4-pinske konektore (konektor ili žice) i ono što vam je potrebno za lemljenje. Koristio sam LED diode u tri jedinice. Možete koristiti jednu ili dvije LED diode ako želite, ali preporučujem korištenje tri. Kada su svi materijali spremni, lemite žice u oba podatkovna voda, 5v vodove i uzemljenje LED trake.
Korak 7: Taktni prekidač za lemljenje žicama
Korak 8: Montaža -Umetnite vijak sa strane = ①
Sada je to zaista lak dio! Postavite po jedan vijak na svaku od tri 3D štampane strane. Razlog zašto ćete moći upotrijebiti gumb s vijcima, poput konstrukcijskih vijaka i matica. Kad komad bude gotov, stavit ću komad u kućište i završiti ga maticom.
Korak 9: Prikačite Ⓛⓣ na Ⓒ = ②
Korak 10: Sklapanje -Upotrijebite a Ⓦ i Ⓝ za kombiniranje ① i ② = ③
Korak 11: Montaža -Pričvrstite Ⓐⓔ i ③ Korištenjem akrilne veze = ④
Ako stavite vijak sa strane, stavit ćemo ga sa strane i sprijeda. Prednji dio je akril, pa ga morate staviti namjenskom akrilnom vezom. Ako akril pričvrstite na običnu vezu, ostavit će trag.
Korak 12: Prikačite Ⓢ na Ⓓ = ⑤
Korak 13: Sklapanje -kombinirajte ④ i ⑤ pomoću Ⓦ i Ⓝ = ⑥
Korak 14: Potpuna montaža komada
Korak 15: Radni izgled projekta
Korak 16: NeoPixel, ožičenje konektora
Korak 17: NeoPixel i Arduino ožičenje
Korak 18: Programirajte Arduino
vanjski hlapivi nepotpisani dugi tajmer0_millis;
#include
#define MODEBTNNUM 3 int ani_mode = 0; nepotpisani dugi preM1, preM2, preM3;
void setup () {
Wire.begin (); za (int i = 0; i <MODEBTNNUM; i ++) {pinMode (i+2, INPUT_PULLUP); } //Serial.begin(9600); }
void loop () {{100} {101}
za (int i = 0; i <MODEBTNNUM; i ++) {if (! digitalRead (i + 2)) ani_mode = i + 1; } za (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 ("poništavanje timera"); for (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}
Korak 19:
vanjski hlapivi nepotpisani dugi tajmer0_millis;
#include
#include #define PIN 12 #define NUMPIXELS 162 Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); const int broj = NUMPIXELS / 3; const int slaveNum = 1; int boje [broj] [3]; int hue [num]; int sat [broj]; int bright [broj]; int pNumber = 0; int gValue [broj] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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 [broj] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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; nepotpisani dugi preMillis1; nepotpisani dugi preM; int ani_mode = 0; int ani2_Counter = 0; int brojač = 0; /////////////////////////////////////////////// void setup () {Wire. begin (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (receiveEvent); za (int i = 0; i <broj; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } /////////////////////////////////////////////////
void loop () {{100} {101}
if (f_v == 1) {for (int i = 0; i <broj; i ++) {nijansa = 50; sat = 95; svijetlo = 100; } f_v = 0; } ////////////////////////////////////////// // 버튼 입력 체크: 멈춤 신호 보내기 btnMode = false; for (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); ////////////////////////////////////////// switch (ani_mode) {slučaj 0: ani0 (); break; slučaj 1: ani1 (); ani_mode = 0; ani2_Counter = 0; break; slučaj 2: ani2_Counter = 1; ani_mode = 0; break; slučaj 3: ani3 (); ani_mode = 0; ani2_Counter = 0; break; default: readyState (); break; } if (ani2_Counter == 1) {ani2 (); } setPixels (broj); }
///////////////////////////////////////////
void receiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println ("primljeno 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } /////////////////////////////////////////////// void requestEvent () {
if (btnMode == true) {
Wire.write (5); // Serial.println ("5 poena"); } else {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; gVrednost = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; for (int a = 0; a <2; a ++) {nijansa [a1 [a] = 100; sat [a1 [a] = 95; svijetlo [a1 [a] = 100; } za (int b = 0; b <2; b ++) {nijansa [b1 = 200; sat [b1 = 95; svijetlo [b1 = 100; } za (int c = 0; c <2; c ++) {nijansa [c1 [c] = 300; sat [c1 [c] = 95; svijetlo [c1 [c] = 100; } // Serial.println ("0"); } else if (pNumber == 1) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 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 ++) {nijansa [a2 [a] = 26; sat [a2 [a] = 95; svijetlo [a2 [a] = 100; } za (int d = 0; d <4; d ++) {nijansa [d2 [d] = 63; sat [d2 [d] = 95; svijetlo [d2 [d] = 100; } // Serial.println ("1"); } else if (pNumber == 2) {// gigantski uzorak kocke za (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // žuto 06 za (int a = 0; a <6; a ++) {nijansa [a14 [a] = 35; sat [a14 [a] = 95; svijetlo [a14 [a] = 100; }} else if (pNumber == 3) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // žuto za (int a = 0; a <6; a ++) {nijansa [a3 [a] = 53; sat [a3 [a] = 95; svijetlo [a3 [a] = 100; }} else if (pNumber == 4) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int a4 = {34, 35}; // žuti int b4 = {47}; // plavi int c4 = {48}; // ljubičasta
for (int a = 0; a <2; a ++) {nijansa [a4 [a] = 53; sat [a4 [a] = 95; svijetlo [a4 [a] = 100; }
za (int b = 0; b <1; b ++) {nijansa [b4 = 210; sat [b4 = 95; svijetlo [b4 = 100; } za (int c = 0; c <1; c ++) {nijansa [c4 [c] = 307; sat [c4 [c] = 95; svijetlo [c4 [c] = 100; }} else if (pNumber == 5) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int a5 = {34, 35, 46, 47, 48, 49};
for (int a = 0; a <6; a ++) {nijansa [a5 [a] = 100; sat [a5 [a] = 95; svijetlo [a5 [a] = 100; }} else if (pNumber == 6) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // žuto za (int a = 0; a <6; a ++) {nijansa [a6 [a] = 53; sat [a6 [a] = 95; svijetlo [a6 [a] = 100; }} else if (pNumber == 7) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // ljubičasta za (int c = 0; c <6; c ++) {nijansa [c7 [c] = 307; sat [c7 [c] = 95; svijetlo [c7 [c] = 100; }} else if (pNumber == 8) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // ljubičasta za (int c = 0; c <6; c ++) {nijansa [c8 [c] = 307; sat [c8 [c] = 95; svijetlo [c8 [c] = 100; }} else if (pNumber == 9) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // ljubičasta za (int c = 0; c <6; c ++) {nijansa [c9 [c] = 307; sat [c9 [c] = 95; svijetlo [c9 [c] = 100; }} else if (pNumber == 10) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // ljubičasta za (int c = 0; c <6; c ++) {nijansa [c10 [c] = 307; sat [c10 [c] = 95; svijetlo [c10 [c] = 100; }} else if (pNumber == 11) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // ljubičasta za (int c = 0; c <6; c ++) {nijansa [c11 [c] = 307; sat [c11 [c] = 95; svijetlo [c11 [c] = 100; }} else if (pNumber == 12) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // ljubičasta za (int c = 0; c <6; c ++) {nijansa [c12 [c] = 307; sat [c12 [c] = 95; svijetlo [c12 [c] = 100; }} else if (pNumber == 13) {for (int i = 0; i <num; i ++) {bright = 0; gVrednost = 1; } int a13 = {34, 35}; // žuti int b13 = {47}; // plavi int c13 = {48}; // ljubičasta za (int a = 0; a <2; a ++) {nijansa [a13 [a] = 53; sat [a13 [a] = 95; svijetlo [a13 [a] = 100; } za (int b = 0; b <1; b ++) {nijansa [b13 = 210; sat [b13 = 95; svijetlo [b13 = 100; } za (int c = 0; c <1; c ++) {nijansa [c13 [c] = 307; sat [c13 [c] = 95; svijetlo [c13 [c] = 100; }} pBroj = pBroj + 1;
if (pNumber == 14) {
pNumber = 0; }}
void ani2 () {
// Serial.println ("2"); nepotpisani dugi curM = millis ();
if (curM - preM> = 10) {
preM = curM; for (int i = 0; i <num; i ++) {if (hue = 360) {gValue = -1; } nijansa = nijansa + gVrednost ; } counter ++; if (brojač == 360) {// Serial.print ("brojač:"); // Serial.println (brojač); // Serial.println (curM); brojač = 0; ani2_Counter = 0; }}}
void ani3 () {
// Serial.println ("3"); } /////////////////////////////////////////////// void readyState () {/ / Serial.println ("spremno"); } /////////////////////////////////////////////// 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; za (int i = 0; i = 360) {hueV = -1; } else if (hue <= 0) {hueV = 1; } hue = hue + hueV ; svijetlo = 100; }}}} /////////////////////////////////////////////// void setPixels (int k) {for (int i = 0; i <k; i ++) {H2R_HSBtoRGB (nijansa , sat , svijetla , boje ); int broj1 = i * 3; strip.setPixelColor (broj1, boje [0], boje [1], boje [2]); strip.setPixelColor (broj1 + 1, boje [0], boje [1], boje [2]); strip.setPixelColor (broj1 + 2, boje [0], boje [1], boje [2]); } strip.show (); }
Korak 20: Uzorci
Ovaj projekt ima nekoliko trokuta koji tvore šesterokutni oblik. Tako možete stvoriti stereoskopske uzorke prema načinu na koji osmišljavate svjetlo! Samo pritisnite svaki komad i različite boje će biti preusmjerene, a kad boja koju želite izađete, samo pritisnite ruku koju ste pritisnuli i ona će nastaviti lijepo svijetliti sa bojom koju želite!
Preporučuje se:
Kako: Instaliranje Raspberry PI 4 bez glave (VNC) sa Rpi-imagerom i slikama: 7 koraka (sa slikama)
Kako: Instaliranje Raspberry PI 4 Headless (VNC) s Rpi-imagerom i slikama: Planiram koristiti ovaj Rapsberry PI u hrpi zabavnih projekata na svom blogu. Slobodno provjerite. Htio sam se vratiti korištenju svog Raspberry PI -a, ali nisam imao tipkovnicu ili miš na novoj lokaciji. Prošlo je dosta vremena od postavljanja maline
Osvijetli LED karticu u papiru: 12 koraka
Light Light Paper Circuit LED Card: Ovo je vodič koji sam slijedio kako bih ovo napravio: https://www.instructables.com/id/Light-Up-LED-Card…Međutim, postoji nekoliko varijacija, budući da nisam imam bakrenu traku, ovo je moj način da isprobam različite načine da to zaobiđem. Ovo je
Osvijetli tamnu ogrlicu: 6 koraka (sa slikama)
Zapalite tamnu ogrlicu: Zamislite da nosite ogrlicu koja se automatski pali kad padne mrak i kada ima dovoljno svjetla da postane normalan dragulj. Relativno lagan i zabavan projekt posebno za one koji žele nositi dragulj koji doslovno sjaji! Uzmi
Igra prijestolja osvijetli kartu: 4 koraka (sa slikama)
Game of Thrones Light Up Map: Spojler! Zima definitivno dolazi. Ali učinite da ova cool Game of Thrones osvijetli kartu za proljetni projekt. Mapa zasvijetli efektom plamena koji otkriva signal preostale kuće na vlasti. Šta ja znam, neka to bude sa sigilom vašeg favorita
Osvijetli okvir za sliku: 11 koraka (sa slikama)
Light Up Picture Box: Htjela sam svojim prijateljima prirediti poseban poklon nakon njihovog vjenčanja ove godine, i činilo mi se da je kutija prikladna. Mogli su unutra staviti uspomene na svoju vezu ili vjenčanje. Jedna od njihovih vjenčanih usluga bila je bojanka ispunjena crtežima bri