תוכן עניינים:
- אספקה
- שלב 1: בואו נגמור
- שלב 2: הכנת חומרים
- שלב 3: חיתוך אקריליק
- שלב 4: צרו צדדים עם מדפסות תלת מימד
- שלב 5: צילום
- שלב 6: צרף רצועת LED + רצועת LED הלחמה (NeoPixel) עם חוטים
- שלב 7: מתג טאקט הלחמה עם חוטים
- שלב 8: הרכבה -הכנס בורג בצד = ①
- שלב 9: חבר את Ⓛⓣ ל- Ⓒ = ②
- שלב 10: הרכבה -השתמש ב- Ⓦ ו- Ⓝ לשילוב ① ו- ② = ③
- שלב 11: הרכבה -הצמד Ⓐⓔ ו- ③ באמצעות חיבור אקרילי = ④
- שלב 12: חבר את Ⓢ ל- Ⓓ = ⑤
- שלב 13: הרכבה -שלב ④ ו- ⑤ באמצעות Ⓦ ו- Ⓝ = ⑥
- שלב 14: הרכבת חלקה מלאה
- שלב 15: מראה העבודה של פרויקט
- שלב 16: NeoPixel, חיווט מחברים
- שלב 17: חיווט NeoPixel ו- Arduino
- שלב 18: תכנת את הארדואינו
- שלב 19:
- שלב 20: דפוסים
וִידֵאוֹ: להאיר אותי !: 20 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
חברי צוות הפרויקט
(Hyewon Shin, Eunjeong Ko, Junsung Yi)
מה אם היית יכול לגעת ולעצב את האור? איך היה מרגיש אם היה לך דפוס אור יפהפה שעיצבת בעצמך באנימציה מעניינת? תאיר אותי יהיה ספר רישומים מעניין שנוגע ומעצב את האור עצמו ויוצר דפוסים מעניינים! לפרויקט זה יש כמה משולשים היוצרים צורה משושה. כך שתוכל ליצור דפוסים סטריאוסקופיים בהתאם לאופן שבו אתה מעצב אור! כל שעליך לעשות הוא ללחוץ על כל יצירה והצבעים השונים יהיו מדורגים, וכאשר הצבע שאתה רוצה יוצא, פשוט לחץ על היד שלחצת עליה והיא תמשיך לזרוח יפה עם הצבע שרצית! הפרויקט השתמש בכ- 312 משולשים, אך הוא יכול ליצור אור נחמד שעובד היטב עם 6 משולשים. עכשיו תן לי להראות לך איך לעשות את זה עם שישה משולשים. בצע את השלבים ותהיה לך עבודה נפלאה משלך!
אספקה
חומרה: Arduino (השתמשתי ב- arduino mega 2560), אקריליק (שקוף, לבן), רצועת LED (NeoPixel), סרט מפזר, כפתור, מחבר 4 פינים, חוט, לוח מעגלים, ספק כוח
כלים: מכונת חיתוך מונחית לייזר, מדפסת תלת מימד
שלב 1: בואו נגמור
בואו להכין איתי את הקטע המשושה החמוד הזה!
ה- Light Me Up מיוצר באמצעות 312 משולשים, אך אפילו 6 משולשים יכולים לעצב אור נפלא. אם אתה רוצה לעשות את זה בקנה מידה גדול יותר, אתה יכול לעשות את זה על ידי הפניה לקובץ המצורף להלן.
שלב 2: הכנת חומרים
שלב 3: חיתוך אקריליק
השתמש בחותך לייזר כדי לחתוך את החלק הקדמי והאחורי של כל חלק. צבע האקריליק בגב יכול להיות כל מה שתרצו, אך הקפידו להשתמש באקריליק שקוף כיוון שהחזית צריכה להיות מעומעמת! אם אתה משתמש בצבע אקרילי מלבד שקוף, לא תראה את האור היטב.
שלב 4: צרו צדדים עם מדפסות תלת מימד
עכשיו הגיע הזמן להכין את הצדדים של כל חלק. בואו נעשה את זה! קבצי הדוגמניות התלת מימדיות בצד מצורפות למטה. השתמשנו ב- PLA כדי ליצור צדדים ה- PLA חזק יותר ופחות התכווצויות מאשר ה- ABS, לכן מומלץ להשתמש בחוטים להשתמש ב- PLA.
שלב 5: צילום
עכשיו בואו לשים סרט דיפוזיה קל על האקריליק בחזית. אם אתה שם עליו סרט, הוא מתפשט וזוהר הרבה יותר יפה. ראשית, חתכו את הסרט לצורת משולש. (מוטב לחתוך את הסרט גדול יותר מהאקריליק החתוך) פשוט לשים סרט על סרט מגן בטלפון שלכם. אם אתה רוצה לתת טיפ כאן, אתה יכול להשתמש בכרטיס כדי לדחוף אותו כך שהוא יכול להיתקע בצורה מסודרת!
שלב 6: צרף רצועת LED + רצועת LED הלחמה (NeoPixel) עם חוטים
אם היית כל כך טוב בהלחמת רצועת הלד, הגיע הזמן לשים את רצועת הלד על הגב. ראשית, צרף אקדח דבק או סרט דו צדדי לחלק האחורי של רצועת הלד. ותחילה הסר את החוטים משני צידי חוט ההלחמה דרך החורים משני הצדדים. לבסוף, צרפו את רצועת הלד לאקריליק האחורי וזה נגמר!
הגיע זמן הלחמה! הכינו רצועות LED, מחברים 4 פינים (מחבר או חוטים) ואת מה שאתם צריכים להלחמה. השתמשתי בנורות LED בשלוש יחידות. אתה יכול להשתמש באחד או שניים נוריות אם אתה רוצה, אבל אני ממליץ להשתמש בשלושה. כאשר כל החומרים מוכנים, הלחם את החוטים בשני נתונים, קווי 5v וקווי קרקע של רצועת ה- LED.
שלב 7: מתג טאקט הלחמה עם חוטים
שלב 8: הרכבה -הכנס בורג בצד = ①
עכשיו זה חלק ממש קל! הנח בריח אחד על כל אחד משלושת הצדדים המודפסים בתלת מימד. הסיבה מדוע שימוש בכפתור הבריח כמו שימוש בברגים ואומים מבניים תוכל לבצע. בסיום היצירה אני אשים את החלק במארז ואגמור אותו עם אגוז.
שלב 9: חבר את Ⓛⓣ ל- Ⓒ = ②
שלב 10: הרכבה -השתמש ב- Ⓦ ו- Ⓝ לשילוב ① ו- ② = ③
שלב 11: הרכבה -הצמד Ⓐⓔ ו- ③ באמצעות חיבור אקרילי = ④
אם תניח בורג בצד, נניח אותו בצד ובחזית. החזית אקרילית, כך שעליך לשים אותה עם קשר אקרילי ייעודי. אם אתה מחבר אקריליק לקשר רגיל, זה ישאיר חותם.
שלב 12: חבר את Ⓢ ל- Ⓓ = ⑤
שלב 13: הרכבה -שלב ④ ו- ⑤ באמצעות Ⓦ ו- Ⓝ = ⑥
שלב 14: הרכבת חלקה מלאה
שלב 15: מראה העבודה של פרויקט
שלב 16: NeoPixel, חיווט מחברים
שלב 17: חיווט NeoPixel ו- Arduino
שלב 18: תכנת את הארדואינו
טיימר חיצוני נדיף חיצוני ארוך_0 מיליס;
#לִכלוֹל
#define MODEBTNNUM 3 int ani_mode = 0; preM1, preM2, preM3 לא חתום;
הגדרת בטל () {
Wire.begin (); for (int i = 0; i <MODEBTNNUM; i ++) {pinMode (i+2, INPUT_PULLUP); } //Serial.begin(9600); }
לולאת חלל () {
עבור (int i = 0; i <MODEBTNNUM; i ++) {if (! digitalRead (i + 2)) ani_mode = i + 1; } עבור (int i = 0; i <6; i ++) {Wire.requestFrom (i+1, 1); while (Wire.available ()) {int x = Wire.read (); // Serial.println (x); אם (x == 5) {ani_mode = 0; // Serial.println ("x = 5"); }}} /////////////////////////// /////// if (ani_mode == 0) {for (int i = 1; i 3000) {preM1 = current1; עבור (int i = 1; i 5000) {preM2 = current2; עבור (int i = 1; i 3000) {preM3 = current3; // טיימר0_מיליס = 0; // preM1 = 0; // preM2 = 0; // preM3 = 0; // Serial.println ("איפוס טיימר"); עבור (int i = 1; i <7; i ++) {Wire.beginTransmission (i); Wire.write (ani_mode); //Serial.println("3000 "); Wire.endTransmission (i); }}}}
שלב 19:
טיימר חיצוני נדיף חיצוני ארוך_0 מיליס;
#לִכלוֹל
#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 colors [num] [3]; int hue [num]; int sat [num]; int בהיר [מספר]; 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, 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]; 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 לא חתום ארוך; preM ארוך ללא חתימה; int ani_mode = 0; int ani2_Counter = 0; מונה int = 0; /////////////////////////////////////////////////>/ begin (slaveNum); Wire.onRequest (requestEvent); Wire.onReceive (ReceiveEvent); עבור (int i = 0; i <num; i ++) {pinMode (btnPin , INPUT_PULLUP); } //Serial.begin(9600); strip.begin (); } ////////////////////////////////////
לולאת חלל () {
אם (f_v == 1) {for (int i = 0; i <num; i ++) {hue = 50; ישב = 95; בהיר = 100; } f_v = 0; } ////////////////////////////////////////////// שֶׁקֶר; עבור (int i = 0; i <num; i ++) {if (! digitalRead (btnPin )) {btnMode = true; }} btnEvent (5); // Serial.println (ani_mode); //////////////////////////////////////////// switch (ani_mode) {case 0: ani0 (); לשבור; מקרה 1: ani1 (); ani_mode = 0; ani2_Counter = 0; לשבור; מקרה 2: ani2_Counter = 1; ani_mode = 0; לשבור; מקרה 3: ani3 (); ani_mode = 0; ani2_Counter = 0; לשבור; ברירת מחדל: readyState (); לשבור; } אם (ani2_Counter == 1) {ani2 (); } setPixels (num); }
///////////////////////////////////////////
void ReceiveEvent (int howMany) {int x = Wire.read (); if (x == 5) {// Serial.println ("קיבל 5"); ani_mode = 0; } ani_mode = x; // Serial.println (ani_mode); } /////////////////////////////
אם (btnMode == true) {
Wire.write (5); // Serial.println ("5 보냄"); } אחר {Wire.write (0); }
}
void ani0 () {
// Serial.println ("0"); }
void ani1 () {
// Serial.println ("1"); אם (pNumber == 0) {for (int i = 0; i <num; i ++) {בהיר = 0; gValue = 1; } int a1 = {25, 26}; int b1 = {39, 52}; int c1 = {40, 53}; עבור (int a = 0; a <2; a ++) {hue [a1 [a] = 100; ישב [a1 [a] = 95; בהיר [a1 [a] = 100; } עבור (int b = 0; b <2; b ++) {hue [b1 = 200; ישב [b1 = 95; בהיר [b1 = 100; } עבור (int c = 0; c <2; c ++) {hue [c1 [c] = 300; ישב [c1 [c] = 95; בהיר [c1 [c] = 100; } // Serial.println ("0"); } אחרת אם (pNumber == 1) {for (int i = 0; i <num; i ++) {בהיר = 0; gValue = 1; } int a2 = {21, 22, 34, 35, 37, 46, 47, 51}; // int b2 = {}; // int c2 = {}; int d2 = {36, 48, 49, 50}; עבור (int a = 0; a <8; a ++) {hue [a2 [a] = 26; ישב [a2 [a] = 95; בהיר [a2 [a] = 100; } עבור (int d = 0; d <4; d ++) {hue [d2 [d] = 63; ישב [d2 [d] = 95; בהיר [d2 [d] = 100; } // Serial.println ("1"); } אחרת אם (pNumber == 2) {// תבנית קוביות ענק עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a14 = {34, 35, 46, 47, 48, 49}; // צהוב 06 עבור (int a = 0; a <6; a ++) {hue [a14 [a] = 35; ישב [a14 [a] = 95; בהיר [a14 [a] = 100; }} אחרת אם (pNumber == 3) {עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a3 = {34, 35, 46, 47, 48, 49}; // צהוב עבור (int a = 0; a <6; a ++) {hue [a3 [a] = 53; ישב [a3 [a] = 95; בהיר [a3 [a] = 100; }} אחרת אם (pNumber == 4) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a4 = {34, 35}; // צהוב int b4 = {47}; // כחול int c4 = {48}; // סגול
עבור (int a = 0; a <2; a ++) {hue [a4 [a] = 53; ישב [a4 [a] = 95; בהיר [a4 [a] = 100; }
עבור (int b = 0; b <1; b ++) {hue [b4 = 210; ישב [b4 = 95; בהיר [b4 = 100; } עבור (int c = 0; c <1; c ++) {hue [c4 [c] = 307; ישב [c4 [c] = 95; בהיר [c4 [c] = 100; }} אחרת אם (pNumber == 5) {עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a5 = {34, 35, 46, 47, 48, 49};
עבור (int a = 0; a <6; a ++) {hue [a5 [a] = 100; ישב [a5 [a] = 95; בהיר [a5 [a] = 100; }} אחרת אם (pNumber == 6) {עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a6 = {34, 35, 46, 47, 48, 49}; // צהוב עבור (int a = 0; a <6; a ++) {hue [a6 [a] = 53; ישב [a6 [a] = 95; בהיר [a6 [a] = 100; }} אחרת אם (pNumber == 7) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c7 = {34, 35, 46, 47, 48, 49}; // סגול עבור (int c = 0; c <6; c ++) {hue [c7 [c] = 307; ישב [c7 [c] = 95; בהיר [c7 [c] = 100; }} אחרת אם (pNumber == 8) {עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c8 = {34, 35, 46, 47, 48, 49}; // סגול עבור (int c = 0; c <6; c ++) {hue [c8 [c] = 307; ישב [c8 [c] = 95; בהיר [c8 [c] = 100; }} אחרת אם (pNumber == 9) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c9 = {34, 35, 46, 47, 48, 49}; // סגול עבור (int c = 0; c <6; c ++) {hue [c9 [c] = 307; ישב [c9 [c] = 95; בהיר [c9 [c] = 100; }} אחרת אם (pNumber == 10) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c10 = {34, 35, 46, 47, 48, 49}; // סגול עבור (int c = 0; c <6; c ++) {hue [c10 [c] = 307; ישב [c10 [c] = 95; בהיר [c10 [c] = 100; }} אחרת אם (pNumber == 11) {for (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c11 = {34, 35, 46, 47, 48, 49}; // סגול עבור (int c = 0; c <6; c ++) {hue [c11 [c] = 307; ישב [c11 [c] = 95; בהיר [c11 [c] = 100; }} אחרת אם (pNumber == 12) {עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int c12 = {34, 35, 46, 47, 48, 49}; // סגול עבור (int c = 0; c <6; c ++) {hue [c12 [c] = 307; ישב [c12 [c] = 95; בהיר [c12 [c] = 100; }} אחרת אם (pNumber == 13) {עבור (int i = 0; i <num; i ++) {bright = 0; gValue = 1; } int a13 = {34, 35}; // צהוב int b13 = {47}; // כחול int c13 = {48}; // סגול עבור (int a = 0; a <2; a ++) {hue [a13 [a] = 53; ישב [a13 [a] = 95; בהיר [a13 [a] = 100; } עבור (int b = 0; b <1; b ++) {hue [b13 = 210; ישב [b13 = 95; בהיר [b13 = 100; } עבור (int c = 0; c <1; c ++) {hue [c13 [c] = 307; ישב [c13 [c] = 95; בהיר [c13 [c] = 100; }} pNumber = pNumber + 1;
אם (pNumber == 14) {
pNumber = 0; }}
void ani2 () {
// Serial.println ("2"); curM ארוך ללא סימן = millis ();
if (curM - preM> = 10) {
preM = curM; עבור (int i = 0; i <num; i ++) {if (hue = 360) {gValue = -1; } גוון = גוון + gValue ; } מונה ++; if (counter == 360) {// Serial.print ("counter:"); // Serial.println (מונה); // Serial.println (curM); מונה = 0; ani2_Counter = 0; }}}
void ani3 () {
// Serial.println ("3"); } /////////////////////////////// / Serial.println ("מוכן"); } ///////////////////////////////// {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; } אחרת אם (גוון <= 0) {hueV = 1; } גוון = גוון + hueV ; בהיר = 100; }}}} /////////////////////////////////// int k) {for (int i = 0; i <k; i ++) {H2R_HSBtoRGB (גוון , שבת , בהיר , צבעים ); int num1 = i * 3; strip.setPixelColor (num1, צבעים [0], צבעים [1], צבעים [2]); strip.setPixelColor (num1 + 1, צבעים [0], צבעים [1], צבעים [2]); strip.setPixelColor (num1 + 2, צבעים [0], צבעים [1], צבעים [2]); } strip.show (); }
שלב 20: דפוסים
לפרויקט זה מספר משולשים היוצרים צורה משושה. כך שתוכל ליצור דפוסים סטריאוסקופיים בהתאם לאופן שבו אתה מעצב אור! פשוט תלחץ על כל פיסה וצבעים שונים ידרגו, וכשהצבע הרצוי ייצא, פשוט לחץ על היד שלחצת עליה והיא תמשיך לזרוח יפה עם הצבע שרצית!
מוּמלָץ:
להדליק אותי! בקרת רצועות LED חוצה פלטפורמות בזמן אמת: 5 שלבים (עם תמונות)
להדליק אותי! בקרת רצועות LED חוצה פלטפורמות בזמן אמת: LightMeUp! היא מערכת שהמצאתי לשליטה על רצועת LED RGB בזמן אמת, תוך שמירה על עלות נמוכה וביצועים גבוהים. השרת כתוב ב- Node.js ולפיכך ניתן להצטלב בפלטפורמה. בדוגמה שלי, אני משתמש ב- Raspberry Pi 3B לשימוש ארוך טווח
תעיר אותי - שעון מעורר חכם: 6 שלבים
Wake Me Up - שעון מעורר חכם: להעיר אותי הוא שעון מעורר חכם שיכול לשמש גם כמנורה חכמה. רצועת הלד המובנית מדמה אור טבעי שנכנס לחדר שלך. זה מאפשר דרך רגועה וטבעית להתחיל את היום שלך. השעון המעורר מצויד גם במגוון 4*7
תיקון חתולים עצוב, צעצוע חתול לתפוס אותי - פרויקט בית ספר: 3 שלבים
תיקון חתולים עצוב, צעצוע חתול לתפוס אותי-פרויקט בית ספר: הנה המוצר שלנו, זהו עכבר צעצוע אינטראקטיבי: צעצוע Catch-Me Cat. להלן רשימה של בעיות שחתולים רבים בחברה שלנו מתמודדים איתם: חתולים הופכים בימים אלה לא פעילים ומדוכאים בלי מה לעשות רוב הבעלים עסוקים בעבודה או בלימודים ובמקרה שלך
להאיר את כרטיס הרובוט שלך: 7 שלבים (עם תמונות)
תאיר את כרטיס הרובוט שלך: שלום לכולם! לאחרונה זכיתי בתחרות מדריכים. הם שלחו לי חולצת רובוט של Instructables, ספר, מדבקות ותמונה של הרובוט Instructables. מצד שני, כשחשבתי על רעיונות פשוטים למעגלי נייר ורציתי לבנות
מישהו אוהב אותי שעון מיקום: 6 שלבים (עם תמונות)
מישהו אוהב אותי שעון מיקום: עם יקיריהם בחו"ל או מחוץ למדינה שום דבר לא אומר שאני חושב עליך טוב יותר מאשר תמיד לדעת מה השעה בשבילם! גיסי בדימוס התכוננו לשרת שליחות כנסייתית בברלין, גרמניה ואשתי הגיעה עם