תוכן עניינים:

אורות סיבים אופטיים בהדפס קנבס: 5 שלבים
אורות סיבים אופטיים בהדפס קנבס: 5 שלבים

וִידֵאוֹ: אורות סיבים אופטיים בהדפס קנבס: 5 שלבים

וִידֵאוֹ: אורות סיבים אופטיים בהדפס קנבס: 5 שלבים
וִידֵאוֹ: IT Ninjas: Mastering Network Troubleshooting in Windows 2024, נוֹבֶמבֶּר
Anonim
Image
Image
אורות סיבים אופטיים בהדפס קנבס
אורות סיבים אופטיים בהדפס קנבס

פרויקט זה מוסיף סיבוב ייחודי על הדפס קנבס סטנדרטי. תכננתי ב -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: אורות סיבים אופטיים

Image
Image
אורות סיבים אופטיים
אורות סיבים אופטיים
אורות סיבים אופטיים
אורות סיבים אופטיים

לאחר ניסוי וטעייה בסופו של דבר מצאתי דרך טובה להעביר את החוטים הסיבים אופטיים דרך הבד.

  1. השתמש במחט התפירה הגדולה ביותר שיש לך כדי לתקוע חור בחזית הבד ולוח הקצף. אני ממליץ לתקוע כל חור שאתה רוצה כבר בהתחלה כדי שתוכל להפוך אותו ולראות היכן אתה יכול/לא יכול לשים את קטעי ארגון הכבלים שלך
  2. קח זוג צבת עם מחט ותפס את החוט הסיב אופטי פחות מסנטימטר מהקצה
  3. תקע את חוט הסיבים האופטיים דרך החור שיצרת בעזרת מחט
  4. נתב את הגדיל באמצעות קליפס פלסטיק שונים למקום בו הוא מעט ארוך מהצורך - נחתוך אותו מאוחר יותר
  5. עם אקדח הדבק החם שלך על הגדרת הטמפרטורה הנמוכה (אם יש לו אפשרות כזו) שים טיפת דבק חם על הגדיל הסיב אופטי שבו הוא חודר דרך לוח הקצף. לחילופין אתה יכול להשתמש בדברים הכחולים הכחולים האלה. הדבק החם אכן מעוות מעט את הגדיל אך לא נראה שהוא מתעסק יותר מדי באיכויות האופטיות
  6. חותכים את הגדיל מעט מן הבד בעזרת חותכי תיל.

כדי להאיץ את התהליך אתה יכול לדקור סיבים רבים ברציפות לפני שאתה עושה את הדבק החם. הם בדרך כלל צריכים להישאר במקום בעצמך.

היזהר לא לשבור או למעוך את חוטי הסיבים האופטיים על השולחן - הם יישברו ואם זה הופך את הגדיל לקצר מדי אז תהיה עצוב ותצטרך לבצע אותו מחדש. השתמש בחבילת הסוללות כמשקל נגד, כך שתוכל להשאיר את מסגרת התמונה פחות מחצי על השולחן.

מכיוון שהשתמשתי בלוח קצף לבן במקום בשחור, הרבה אור זרם כשהנורות היו דולקות. כתיקון הדבקתי איזה נייר אלומיניום בין האורות לבד.

השתמש בצינורות כיווץ חום כדי לשמור על כל צרור של גדילי סיבים אופטיים יחד.

  1. חותכים את החוטים לצרור בערך באותו אורך
  2. שים את החלק דרך צינורות כיווץ חום
  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: מוצר סופי

מוצר סופי
מוצר סופי
מוצר סופי
מוצר סופי
מוצר סופי
מוצר סופי

טא-דה! אני מקווה שהמדריך הזה נותן השראה למישהו אחר ליצור פרויקט דומה משלו. זה באמת לא היה קשה והופתעתי שאף אחד לא עשה את זה וכתב על זה עדיין הוראה יסודית.

מוּמלָץ: