Cuprins:
- Provizii
- Pasul 1: Hai să reușim
- Pasul 2: Pregătirea materialului
- Pasul 3: tăierea acrilului
- Pasul 4: Faceți părți cu imprimante 3D
- Pasul 5: Filmare
- Pasul 6: Atașați banda LED + banda LED de lipit (NeoPixel) cu fire
- Pasul 7: Comutator tactil de lipit cu fire
- Pasul 8: Asamblare -Introduceți șurubul pe lateral = ①
- Pasul 9: Atașați Ⓛⓣ la Ⓒ = ②
- Pasul 10: Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
- Pasul 11: Asamblarea -Atașați Ⓐⓔ și ③ Utilizând o legătură acrilică = ④
- Pasul 12: Atașați Ⓢ la Ⓓ = ⑤
- Pasul 13: Asamblarea -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
- Pasul 14: Completați ansamblul pieselor
- Pasul 15: Aspectul de lucru al unui proiect
- Pasul 16: NeoPixel, cablarea conectorului
- Pasul 17: Cablare NeoPixel și Arduino
- Pasul 18: Programați Arduino
- Pasul 19:
- Pasul 20: Modele
Video: Light Me Up !: 20 de pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
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
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
Pasul 3: 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
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
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
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
Pasul 8: Asamblare -Introduceți șurubul pe 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 Ⓒ = ②
Pasul 10: Asamblare -Utilizați Ⓦ și Ⓝ pentru a combina ① și ② = ③
Pasul 11: Asamblarea -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 Ⓓ = ⑤
Pasul 13: Asamblarea -Combinați ④ și ⑤ Folosind Ⓦ și Ⓝ = ⑥
Pasul 14: Completați ansamblul pieselor
Pasul 15: Aspectul de lucru al unui proiect
Pasul 16: NeoPixel, cablarea conectorului
Pasul 17: 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
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:
BookWorm Light-Up Book Light și Bookmark: 13 pași (cu imagini)
BookWorm Light-Up Book Light and Bookmark: Faceți acest marcaj distractiv pentru bookworm, care funcționează ca lumină de carte! Îl vom tipări, tăia, colora și decora, iar ei îl vor folosi pentru a lumina noaptea, astfel încât să puteți citi în întuneric. El este făcut cu doar câteva materiale și face un prim ci
Animated Mood Light și Night Light: 6 pași (cu imagini)
Animated Mood Light & Night Light: Având o fascinație care limitează obsesia cu lumina, am decis să creez o selecție de mici PCB modulare care ar putea fi utilizate pentru a crea afișaje de lumină RGB de orice dimensiune. După ce am realizat PCB-ul modular, am dat peste ideea de a le aranja într-un
Mystery Light Box (Night Light): 4 pași
Mystery Light Box (Night Light): Și acesta este un mic proiect distractiv, ușor de realizat, acest proiect este o referință de la https://www.instructables.com/id/Arduino-Traffic-L …, dar eu deja Am schimbat o mulțime de structuri ale site-ului original. Am adăugat mai multe leduri și folosesc cutia de pantofi pentru a o împacheta, s
Toy's Light Light Switch Box + Jocuri Remix: 19 pași (cu imagini)
Kid's Toy Light Switch Box + Jocuri Remix: Acesta este un remix pe care tocmai a trebuit să-l fac de când am văzut două instrumente minunate și nu m-am putut opri să mă gândesc la combinarea celor două! Acest mashup combină practic interfața Light Switch Box cu jocuri simple (Simon, Whack-a-Mole, etc …) pe t
Cum să dezasamblați un computer cu pași și imagini ușoare: 13 pași (cu imagini)
Cum să dezasamblați un computer cu pași și imagini ușoare: Aceasta este o instrucțiune despre cum să dezasamblați un computer. Majoritatea componentelor de bază sunt modulare și ușor de îndepărtat. Cu toate acestea, este important să fiți organizat în acest sens. Acest lucru vă va ajuta să nu vă pierdeți piese și, de asemenea, să faceți reasamblarea