תוכן עניינים:
- שלב 1: לוח קצף, מארז סוללה ומתג הפעלה/כיבוי
- שלב 2: מיקרו -בקר ומעגל
- שלב 3: אורות סיבים אופטיים
- שלב 4: תכנות
- שלב 5: מוצר סופי
וִידֵאוֹ: אורות סיבים אופטיים בהדפס קנבס: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
פרויקט זה מוסיף סיבוב ייחודי על הדפס קנבס סטנדרטי. תכננתי ב -4 מצבי תאורה שונים אך ניתן להוסיף בקלות יותר. המצב משתנה בכל פעם שאתה מכבה ומדליק אותו במקום שיהיה לך כפתור נפרד כדי למזער את הנזק למסגרת. הסוללות צריכות להחזיק מעמד 50+ שעות שימוש - אני לא ממש בטוח, אבל עשיתי פרוייקט דומה לחבר והוא השתמש פי 5 מנורות רבות ונמשך 20+ שעות על סט סוללות אחד.
חומרים
- הדפסת קנבס עם שטח מעשי - הזמנתי את שלי מ- https://www.easycanvasprints.com כי היו להם מחירים טובים וגב פתוח. המסגרת העבה יותר בגודל 1.5 אינץ 'הייתה מושלמת ונתנה לי הרבה מקום לכופף את החוטים הסיבים אופטיים. בנוסף אתה רוצה תמונה שנותנת לך 3 "על 8" שטח מעשי לאריזת הסוללות ולמיקרו -בקר ורצועות LED.
- אורות רצועות LED - השתמשתי ברצועות LED כתובות WS2812. אל תיבהל, הם ממש קלים לשימוש עם ספריות FastLED או Neopixel! אתה יכול גם להשתמש בכל רצועת LED רגילה, פשוט לא תוכל לשלוט בכל קטע תאורה בנפרד ללא הרבה יותר חיווט.
- מיקרו -בקר - השתמשתי ב- Arduino Uno אבל אתה יכול להשתמש כמעט בכל דבר לפרויקט הזה.
- מארז סוללות - הזמנתי את זה מ- eBay (מסין) ושמו היה "6 x 1.5V AA 2A Celler מחזיק סוללות"
- גדילי סיבים אופטיים - שוב, הוזמנו מסין ב- eBay - "PMMA פלסטיק סיבים אופטיים של כבל סיבים אופטיים גדלים אור לעיצוב DIY" או "כבל סיבים אופטיים של זוהר סוף PMMA לערכת תקרת כוכבים". השתמשתי במידות 1 מ"מ ו -1.5 מ"מ, אני בעצם ממליץ להשתמש בקטן מזה.
- מתג הפעלה/כיבוי - "SPDT הפעלה/הדלקה של 2 מצבי מיתוג מיניאטורים"
- קטעי ארגון חוטים - אלה עוזרים לשמור על קווצות הסיבים האופטיים נאים ומסודרים.
- לוח קצף, חוט מחבר ליבה מוצקה, צינורות כיווץ חום
כלים
- Dremel - משמש לקינון מתג ההפעלה/כיבוי במסגרת התמונה. אפשר אולי להשיג את זה בעזרת תרגיל וקצת גדול, אבל אני לא ממליץ על זה.
- מלחם - חיבור חוטים לפס הלד
- אקדח דבק חם - ממש כל שלב בפרויקט זה
- מחט תפירה גדולה - לחיטוט חורים דרך הבד ולוח הקצף לאורות
שלב 1: לוח קצף, מארז סוללה ומתג הפעלה/כיבוי
לפני כל דבר אחר עליך לצרף חתיכת לוח קצף לחלק האחורי של הדפס הבד. זה נותן לנו משטח מוצק נחמד לחבר אליו את כל השאר ועוזר להחזיק את קווצות הסיבים האופטיים במקומן. פשוט השתמש בסכין או חותך קופסא כדי לחתוך חתיכת לוח קצף בגודל הנכון ולהדביק אותו בהרבה מקומות. אני ממליץ להשתמש בלוח קצף שחור כך שהוא לא יאפשר לדמם של אור רב.
השתמשתי בביט הדרמל שנראה כמו מקדחה רגילה אך למעשה הוא נהדר להסרת חומר. זה אחד החלקים שצריכים להגיע עם כל דרמל. השתמש בפחית אוויר דחוס כדי להיפטר מכל נסורת מהדרמל.
דבק חם הכל במקום. וודא שמארז הסוללות מחובר היטב מכיוון שהוא דורש מעט כוח להכניס/להסיר סוללה ואתה לא רוצה שמחזיק הסוללה ילך לשום מקום.
שלב 2: מיקרו -בקר ומעגל
שמתי את מתג ההפעלה לפני ה- Arduino UNO כך שכאשר אתה מחליף את המתג אז שום דבר לא משתמש בחשמל מחבילות הסוללה. זה אמור לעזור לסוללות להחזיק מעמד זמן רב ככל האפשר כאשר הפרויקט אינו מופעל. לוחות Arduino גרועים לשמצה בניהול צריכת חשמל - הם משתמשים בהרבה זרם אם הם מופעלים גם אם הם לא עושים דבר באופן פעיל.
חבר את הקצה החיובי של מארז הסוללות ל- VIN (כניסת מתח) של המיקרו-בקר כך שישתמש בווסת המתח המובנה של הבקר כדי להוריד את המתח ל -5V הנדרש לו. אם היינו מפעילים יותר אורות ייתכן שנצטרך להשתמש בווסת המתח שלנו בשבילם, אך ה- UNO אמור להיות מסוגל להתמודד עם 5 נוריות LED.
השתמשתי בנגד בין פלט הנתונים לרצועת ה- LED כדי להחליק את האות - ללא הנגד אתה עלול לקבל הבזקים אקראיים של פיקסלים. גודל הנגד לא ממש משנה, כל דבר שבין 50Ω ל- 400Ω אמור לעבוד.
שלב 3: אורות סיבים אופטיים
לאחר ניסוי וטעייה בסופו של דבר מצאתי דרך טובה להעביר את החוטים הסיבים אופטיים דרך הבד.
- השתמש במחט התפירה הגדולה ביותר שיש לך כדי לתקוע חור בחזית הבד ולוח הקצף. אני ממליץ לתקוע כל חור שאתה רוצה כבר בהתחלה כדי שתוכל להפוך אותו ולראות היכן אתה יכול/לא יכול לשים את קטעי ארגון הכבלים שלך
- קח זוג צבת עם מחט ותפס את החוט הסיב אופטי פחות מסנטימטר מהקצה
- תקע את חוט הסיבים האופטיים דרך החור שיצרת בעזרת מחט
- נתב את הגדיל באמצעות קליפס פלסטיק שונים למקום בו הוא מעט ארוך מהצורך - נחתוך אותו מאוחר יותר
- עם אקדח הדבק החם שלך על הגדרת הטמפרטורה הנמוכה (אם יש לו אפשרות כזו) שים טיפת דבק חם על הגדיל הסיב אופטי שבו הוא חודר דרך לוח הקצף. לחילופין אתה יכול להשתמש בדברים הכחולים הכחולים האלה. הדבק החם אכן מעוות מעט את הגדיל אך לא נראה שהוא מתעסק יותר מדי באיכויות האופטיות
- חותכים את הגדיל מעט מן הבד בעזרת חותכי תיל.
כדי להאיץ את התהליך אתה יכול לדקור סיבים רבים ברציפות לפני שאתה עושה את הדבק החם. הם בדרך כלל צריכים להישאר במקום בעצמך.
היזהר לא לשבור או למעוך את חוטי הסיבים האופטיים על השולחן - הם יישברו ואם זה הופך את הגדיל לקצר מדי אז תהיה עצוב ותצטרך לבצע אותו מחדש. השתמש בחבילת הסוללות כמשקל נגד, כך שתוכל להשאיר את מסגרת התמונה פחות מחצי על השולחן.
מכיוון שהשתמשתי בלוח קצף לבן במקום בשחור, הרבה אור זרם כשהנורות היו דולקות. כתיקון הדבקתי איזה נייר אלומיניום בין האורות לבד.
השתמש בצינורות כיווץ חום כדי לשמור על כל צרור של גדילי סיבים אופטיים יחד.
- חותכים את החוטים לצרור בערך באותו אורך
- שים את החלק דרך צינורות כיווץ חום
- השתמשו באקדח חום או במגהץ כדי לכווץ אותו. אם אתה משתמש במגהץ, פשוט תן לדף המגהץ לגעת קלות בצינור והוא יתכווץ. זה לא אמור להמיס את הצינור כי זה מיועד לקצת חום.
בסופו של דבר השתמשתי בדבק חם כדי לחבר את קצה הצרור לכל מנורת LED. השתמשתי בהרבה דבק חם כדי שהסיבים אכן קיבלו אור מכל דיודה אדומה/ירוקה/כחולה באור - כשהסיבים ממש קרובים לאור יש צבע "לבן" (שהוא בעצם אדום וירוק וכחול) אז כמה סיבים פשוט יהיו אדומים וחלקם יהיו ירוקים, במקום שהם יהיו לבנים. ניתן לשפר זאת באמצעות פיסת נייר או משהו אחר כדי לפזר אותו, אך דבק חם עבד מספיק טוב בשבילי.
שלב 4: תכנות
בתכנות זה השתמשתי בשלושה ספריות
FastLED - ספרייה נהדרת לשליטה על רצועות LED WS2812 (ורצועות LED רבות אחרות שניתן להתייחס אליהן) -
Arduino Low Power - אני לא יודע כמה כוח זה בעצם חוסך, אבל זה היה סופר קל ליישום ואמור לעזור לחסוך מעט כוח בפונקציה שהיא רק נורות לבנות ואז להתעכב לנצח.
EEPROM - משמש לקריאה/אחסון של המצב הנוכחי של הפרויקט. זה מאפשר לפרויקט להגדיל את מצב הצבע בכל פעם שאתה מכבה אותו ומדליק אותו מחדש, מה שמבטל את הצורך בכפתור נפרד לשינוי המצב. ספריית EEPROM מותקנת בכל פעם שאתה מתקין את Arduino IDE.
השתמשתי גם בסקיצה להנצנץ את האורות שמישהו אחר הציב. הוא מאיר באקראי פיקסל מצבע בסיס לצבע שיא ואז חוזר למטה. https://gist.github.com/kriegsman/88954aae22b03a66… (הוא משתמש גם בספריית FastLED)
השתמשתי גם בתוסף vMicro עבור Visual Studio - זוהי גרסה מוגברת של ה- Arduino IDE. יש לו המון פונקציות מועילות להשלמה אוטומטית ומדגיש בעיות בקוד שלך מבלי שתצטרך לקמפל אותו. זה עולה 15 $ אבל זה כל כך שווה את זה אם אתה מתכוון לעשות יותר מפרויקט Arduino אחד, וזה יאלץ אותך ללמוד על Visual Studio שהיא תוכנית סופר עוצמתית.
(אני מצרף גם את קוד.ino כיוון שהאירוח הניתן להנחיה של Github Gist הורס הרבה מהמרווחים הריקים בקובץ)
קוד הארדואינו פועל 4 מצבי צבע ב- UNO Arduino עבור כמה נורות רצועות LED WS2812B באמצעות ספריית FastLED
#לִכלוֹל |
#לִכלוֹל |
#לִכלוֹל |
// הגדרת FastLED |
#הגדר NUM_LEDS4 |
#definePIN3 // סיכת נתונים לרצועת LED |
נוריות CRGB [NUM_LEDS]; |
// הגדרת נצנוץ |
#defineBASE_COLORCRGB (2, 2, 2) // צבע רקע בסיסי |
#definePEAK_COLORCRGB (255, 255, 255) // צבע שיא להנצנץ עד |
// כמות כדי להגדיל את הצבע בכל לולאה כשהיא מתבהרת: |
#defineDELTA_COLOR_UPCRGB (4, 4, 4) |
// סכום כדי להפחית את הצבע בכל לולאה כשהוא נהיה עמום יותר: |
#defineDELTA_COLOR_DOWNCRGB (4, 4, 4) |
// סיכוי שכל פיקסל יתחיל להתבהר. |
// 1 או 2 = כמה פיקסלים מבהירים בכל פעם. |
// 10 = הרבה פיקסלים מתבהרים בכל פעם. |
#הגדר CHANCE_OF_TWINKLE2 |
enum {SteadyDim, GettingBrighter, GettingDimmerAgain}; |
uint8_t PixelState [NUM_LEDS]; |
בתים runMode; |
בת globalBright = 150; |
בת globalDelay = 20; // מהירות עיכוב לנצנוץ |
כתובת בתים = 35; // כתובת לאחסון מצב ההפעלה |
הגדרת voids () |
{ |
FastLED.addLeds (leds, NUM_LEDS); |
FastLED.setCorrection (TypicalLEDStrip); |
//FastLED.setMaxPowerInVoltsAndMilliamps (5, maxMilliamps); |
FastLED.setBrightness (globalBright); |
// קבל את מצב ההפעלה |
runMode = EEPROM.read (כתובת); |
// הגדל את מצב הריצה ב- 1 |
EEPROM.write (כתובת, runMode + 1); |
} |
voidloop () |
{ |
מתג (runMode) |
{ |
// לבן אחיד |
case1: fill_solid (leds, NUM_LEDS, CRGB:: לבן); |
FastLED.show (); |
DelayForever (); |
לשבור; |
// מנצנץ די לאט |
case2: FastLED.setBrightness (255); |
globalDelay = 10; |
TwinkleMapPixels (); |
לשבור; |
// לנצנץ במהירות |
case3: FastLED.setBrightness (150); |
globalDelay = 2; |
TwinkleMapPixels (); |
לשבור; |
//קשת בענן |
מקרה 4: |
RunRainbow (); |
לשבור; |
// אינדקס מחוץ לטווח, אפס אותו ל -2 ולאחר מכן הפעל מצב 1. |
// כאשר הארדואינו יופעל מחדש הוא יפעיל מצב 2, אך לעת עתה הפעל מצב 1 |
בְּרִירַת מֶחדָל: |
EEPROM.write (כתובת, 2); |
runMode = 1; |
לשבור; |
} |
} |
voidRunRainbow () |
{ |
בייט *ג; |
uint16_t i, j; |
בעוד (נכון) |
{ |
עבור (j = 0; j <256; j ++) {// מחזור אחד של כל הצבעים בגלגל |
עבור (i = 0; i <NUM_LEDS; i ++) { |
c = גלגל (((i * 256 / NUM_LEDS) + j) & 255); |
setPixel (i, *c, *(c + 1), *(c + 2)); |
} |
FastLED.show (); |
עיכוב (globalDelay); |
} |
} |
} |
בייט * גלגל (בייט WheelPos) { |
בית סטטי c [3]; |
אם (WheelPos <85) { |
c [0] = WheelPos * 3; |
c [1] = 255 - WheelPos * 3; |
c [2] = 0; |
} |
elseif (WheelPos <170) { |
WheelPos -= 85; |
c [0] = 255 - WheelPos * 3; |
c [1] = 0; |
c [2] = WheelPos * 3; |
} |
אחר { |
WheelPos -= 170; |
c [0] = 0; |
c [1] = WheelPos * 3; |
c [2] = 255 - WheelPos * 3; |
} |
החזר ג; |
} |
voidTwinkleMapPixels () |
{ |
InitPixelStates (); |
בעוד (נכון) |
{ |
עבור (uint16_t i = 0; i <NUM_LEDS; i ++) { |
אם (PixelState == SteadyDim) { |
// הפיקסלים האלה הם כרגע: SteadyDim |
// כך שאנו שוקלים באופן אקראי לגרום לזה להתחיל להיות בהיר יותר |
אם (random8 () <CHANCE_OF_TWINKLE) { |
PixelState = GettingBrighter; |
} |
} |
elseif (PixelState == GettingBrighter) { |
// הפיקסלים האלה הם כרגע: GettingBrighter |
// אז אם הוא בשיא הצבע, העבר אותו שוב לעמעם |
אם (leds > = PEAK_COLOR) { |
PixelState = GettingDimmerAgain; |
} |
אחר { |
// אחרת, המשך להאיר אותו: |
leds += DELTA_COLOR_UP; |
} |
} |
אחרת {// שוב מתעמעם |
// הפיקסלים האלה נמצאים כרגע: GettingDimmerAgain |
// אז אם הוא חוזר לצבע הבסיס, העבר אותו לעמום קבוע |
אם (leds <= BASE_COLOR) { |
leds = BASE_COLOR; // אפס לצבע הבסיס המדויק, למקרה שגזמנו |
PixelState = SteadyDim; |
} |
אחר { |
// אחרת, פשוט המשך לעמעם אותו: |
leds -= DELTA_COLOR_DOWN; |
} |
} |
} |
FastLED.show (); |
FastLED.delay (globalDelay); |
} |
} |
voidInitPixelStates () |
{ |
memset (PixelState, sizeof (PixelState), SteadyDim); // אתחל את כל הפיקסלים ל- SteadyDim. |
fill_solid (leds, NUM_LEDS, BASE_COLOR); |
} |
voidDelayForever () |
{ |
בעוד (נכון) |
{ |
עיכוב (100); |
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); |
} |
} |
voidshowStrip () { |
FastLED.show (); |
} |
voidsetPixel (int Pixel, byte red, byte green, byte blue) { |
// FastLED |
leds [Pixel].r = אדום; |
leds [Pixel].g = ירוק; |
leds [Pixel].b = כחול; |
} |
הצג rawFiberOptic_ClemsonPic.ino המתארח אצל ❤ על ידי GitHub
שלב 5: מוצר סופי
טא-דה! אני מקווה שהמדריך הזה נותן השראה למישהו אחר ליצור פרויקט דומה משלו. זה באמת לא היה קשה והופתעתי שאף אחד לא עשה את זה וכתב על זה עדיין הוראה יסודית.
מוּמלָץ:
אורות פאב אנגליים על ידי כיפוף סיבים אופטיים, מוארים עם LED: 4 שלבים
אורות פאב באנגלית על ידי כיפוף סיבים אופטיים, מוארים עם נורית LED: אז נניח שאתה רוצה לגרום לסיב להתאים לצורת בית כדי להדליק עליו אורות חג המולד. או שאולי אתה רוצה לעלות על קיר חיצוני ולהתכופף בזווית ישרה לסיב. ובכן אתה יכול לעשות זאת בקלות רבה
התקנת תקרת כוכב סיבים אופטיים למוסיקה: 11 שלבים (עם תמונות)
התקנת תקרה של כוכב סיבים אופטיים של מוזיקה ריאקטיבית: רוצה פיסת גלקסיה בבית שלך? גלה כיצד הוא עשוי להלן! במשך שנים זה היה פרויקט החלומות שלי ולבסוף הוא הסתיים. זה לקח לא מעט זמן להשלים, אבל התוצאה הסופית הייתה כל כך מספקת שאני בטוח שזה היה שווה את זה. קצת
מאווררי לייזר סיבים אופטיים: 9 שלבים (עם תמונות)
מאווררי לייזר סיבים אופטיים: מה מגניב? סיבים אופטיים. מה יותר מגניב? לייזרים. מה מדהים? מעריצי אש. ההנחיה הזו נוצרה בהשראת חלק ממעריצי האש ובחלקה מהבלרינה הביונית. כל מאוורר עשוי מחמישה מוטות סיבים אופטיים, המוארים על ידי חיישן הטיה כדי להיות אדום או צהוב
כנפי סיבים אופטיים: 24 שלבים (עם תמונות)
כנפי סיבים אופטיים: עבר זמן מה מאז שנכנסתי לפרויקט בשרי, כך שכאשר ג'ואל מנמלים על מלון ביקש ממני להכין תחפושת להשקת מוצרי הסיבים האופטיים החדשים שלו, קיבלתי בשמחה. השתמשתי בפנס הדור הקודם שלו עבור סיבים אופטיים שלי
מנורת קישוט סיבים אופטיים: 11 שלבים
מנורת קישוט סיבים אופטיים: היי יצרתי את המנורה הדקורטיבית הזו מכמה סיבים אופטיים שקניתי באיביי לפני זמן מה לפרויקטים אפשריים בעתיד אז סוף סוף אני מצליח לעשות משהו ממנה