विषयसूची:

कैनवास प्रिंट में फाइबर-ऑप्टिक लाइट्स: 5 कदम
कैनवास प्रिंट में फाइबर-ऑप्टिक लाइट्स: 5 कदम

वीडियो: कैनवास प्रिंट में फाइबर-ऑप्टिक लाइट्स: 5 कदम

वीडियो: कैनवास प्रिंट में फाइबर-ऑप्टिक लाइट्स: 5 कदम
वीडियो: Photo Frames Manufacturer, Aadinath Collection Jaipur.9887870066/7877469990 Manish Jain 2024, जुलाई
Anonim
Image
Image
कैनवास प्रिंट में फाइबर-ऑप्टिक लाइट्स
कैनवास प्रिंट में फाइबर-ऑप्टिक लाइट्स

यह प्रोजेक्ट एक मानक कैनवास प्रिंट पर एक अद्वितीय स्पिन जोड़ता है। मैंने 4 अलग-अलग लाइटिंग मोड में प्रोग्राम किया लेकिन आप आसानी से और जोड़ सकते हैं। हर बार जब आप फ्रेम को नुकसान कम करने के लिए एक अलग बटन रखने के बजाय इसे बंद और वापस चालू करते हैं तो मोड बदल जाता है। बैटरी 50+ घंटे के उपयोग के लिए चलनी चाहिए - मुझे वास्तव में यकीन नहीं है, लेकिन मैंने एक दोस्त के लिए एक समान परियोजना बनाई है और यह 5x के रूप में कई रोशनी का उपयोग करता है और बैटरी के एक सेट पर 20+ घंटे तक चलता है।

सामग्री

  • व्यावहारिक स्थान के साथ कैनवास प्रिंट - मैंने https://www.easycanvasprints.com से मेरा ऑर्डर दिया क्योंकि उनके पास अच्छी कीमतें और खुली पीठ थी। मोटा 1.5" फ्रेम एकदम सही था और इसने मुझे फाइबर ऑप्टिक स्ट्रैंड को मोड़ने के लिए बहुत जगह दी। इसके अतिरिक्त आप एक ऐसी तस्वीर चाहते हैं जो आपको बैटरी पैक और माइक्रोकंट्रोलर और एलईडी स्ट्रिप्स के लिए 3 "बाय 8" काम करने योग्य जगह दे।
  • एलईडी पट्टी रोशनी - मैंने पता करने योग्य WS2812 एलईडी स्ट्रिप्स का उपयोग किया। डरो मत, वे FastLED या Neopixel पुस्तकालयों के साथ उपयोग करना वास्तव में आसान हैं! आप किसी भी मानक एलईडी पट्टी का भी उपयोग कर सकते हैं, आप बहुत अधिक तारों के बिना प्रत्येक प्रकाश अनुभाग को व्यक्तिगत रूप से नियंत्रित करने में सक्षम नहीं होंगे।
  • माइक्रोकंट्रोलर - मैंने एक Arduino Uno का उपयोग किया है, लेकिन आप इस प्रोजेक्ट के लिए लगभग किसी भी चीज़ का उपयोग कर सकते हैं।
  • बैटरी पैक - मैंने इसे ईबे (चीन से) से मंगवाया था और इसका शीर्षक "6 x 1.5V AA 2A सेल बैटरी बैटरी धारक" था।
  • फाइबर ऑप्टिक स्ट्रैंड्स - एक बार फिर, ईबे पर चीन से ऑर्डर किया गया - "पीएमएमए प्लास्टिक फाइबर ऑप्टिक केबल एंड ग्रो एलईडी लाइट DIY डेकोर" या "स्टार सीलिंग लाइट किट के लिए पीएमएमए एंड ग्लो फाइबर ऑप्टिक केबल"। मैंने आकार 1 मिमी और 1.5 मिमी का उपयोग किया, मैं वास्तव में उससे छोटे का उपयोग करने की सलाह देता हूं।
  • ऑन/ऑफ स्विच - "एसपीडीटी ऑन/ऑन 2 पोजीशन मिनिएचर टॉगल स्विच"
  • तार संगठन क्लिप - ये फाइबर ऑप्टिक स्ट्रैंड को अच्छा और साफ रखने में मदद करते हैं।
  • फोम बोर्ड, ठोस कोर कनेक्टर तार, गर्मी हटना टयूबिंग

उपकरण

  • Dremel - पिक्चर फ्रेम में ऑन / ऑफ स्विच को नेस्ट करने के लिए इस्तेमाल किया जाता है। यह शायद एक ड्रिल और वास्तव में एक बड़ा सा पूरा किया जा सकता है, लेकिन मैं इसकी अनुशंसा नहीं करता।
  • टांका लगाने वाला लोहा - तारों को एलईडी पट्टी से जोड़ना
  • हॉट ग्लू गन - वस्तुतः इस परियोजना का हर चरण
  • बड़ी सिलाई सुई - रोशनी के लिए कैनवास और फोम बोर्ड के माध्यम से छेद पोक करने के लिए

चरण 1: फोम बोर्ड, बैटरी पैक और चालू/बंद स्विच

फोम बोर्ड, बैटरी पैक और चालू/बंद स्विच
फोम बोर्ड, बैटरी पैक और चालू/बंद स्विच
फोम बोर्ड, बैटरी पैक और चालू/बंद स्विच
फोम बोर्ड, बैटरी पैक और चालू/बंद स्विच

कुछ और करने से पहले आपको कैनवास प्रिंट के पीछे फोम बोर्ड का एक टुकड़ा संलग्न करना होगा। यह हमें बाकी सब कुछ संलग्न करने के लिए एक अच्छी ठोस सतह देता है और फाइबर ऑप्टिक स्ट्रैंड को जगह में रखने में मदद करता है। फोम बोर्ड के एक टुकड़े को सही आकार में काटने के लिए बस एक सटीक चाकू या बॉक्स कटर का उपयोग करें और इसे कई जगहों पर गर्म गोंद दें। मैं ब्लैक फोम बोर्ड का उपयोग करने की सलाह देता हूं ताकि यह अधिक से अधिक प्रकाश को बहने न दे।

मैंने डरमेल बिट का उपयोग किया है जो एक सामान्य ड्रिल बिट की तरह दिखता है लेकिन वास्तव में सामग्री को हटाने के लिए बहुत अच्छा है। यह उन बिट्स में से एक है जो किसी भी डरमेल के साथ आना चाहिए। डरमेल से किसी भी चूरा से छुटकारा पाने के लिए संपीड़ित हवा की कैन का उपयोग करें।

गर्म गोंद सब कुछ जगह में। सुनिश्चित करें कि बैटरी पैक बहुत अच्छी तरह से जुड़ा हुआ है क्योंकि इसमें बैटरी डालने/निकालने के लिए बहुत अधिक बल की आवश्यकता होती है और आप नहीं चाहते कि बैटरी धारक कहीं भी जाए।

चरण 2: माइक्रोकंट्रोलर और सर्किट

माइक्रोकंट्रोलर और सर्किट
माइक्रोकंट्रोलर और सर्किट
माइक्रोकंट्रोलर और सर्किट
माइक्रोकंट्रोलर और सर्किट
माइक्रोकंट्रोलर और सर्किट
माइक्रोकंट्रोलर और सर्किट

मैंने पावर स्विच को Arduino UNO के सामने रखा ताकि जब आप स्विच को चालू करें तो बैटरी पैक से बिजली का उपयोग कुछ भी नहीं हो रहा है। इससे बैटरी को यथासंभव लंबे समय तक चलने में मदद मिलनी चाहिए जब प्रोजेक्ट चालू न हो। Arduino बोर्ड बिजली प्रबंधन में कुख्यात रूप से खराब हैं - यदि वे सक्रिय रूप से कुछ भी नहीं कर रहे हैं तो भी वे चालू होने पर बहुत अधिक वर्तमान का उपयोग करते हैं।

बैटरी पैक के सकारात्मक सिरे को माइक्रोकंट्रोलर के VIN (वोल्टेज इनपुट) में प्लग करें ताकि वह वोल्टेज को 5V तक कम करने के लिए नियंत्रक के अंतर्निर्मित वोल्टेज नियामक का उपयोग करे। यदि हम अधिक रोशनी देते हैं तो हमें उनके लिए अपने स्वयं के वोल्टेज नियामक का उपयोग करने की आवश्यकता हो सकती है, लेकिन यूएनओ को 5 एलईडी को संभालने में सक्षम होना चाहिए।

मैंने सिग्नल को सुचारू करने के लिए डेटा आउटपुट और एलईडी पट्टी के बीच एक अवरोधक का उपयोग किया - बिना अवरोधक के आपको पिक्सेल की यादृच्छिक चमक मिल सकती है। रोकनेवाला का आकार वास्तव में मायने नहीं रखता है, 50Ω और 400Ω के बीच कुछ भी काम करना चाहिए।

चरण 3: फाइबर-ऑप्टिक लाइट्स

Image
Image
फाइबर-ऑप्टिक लाइट्स
फाइबर-ऑप्टिक लाइट्स
फाइबर-ऑप्टिक लाइट्स
फाइबर-ऑप्टिक लाइट्स

कुछ परीक्षण और त्रुटि के बाद मुझे अंततः कैनवास के माध्यम से फाइबर ऑप्टिक किस्में प्राप्त करने का एक अच्छा तरीका मिल गया।

  1. कैनवास और फोम बोर्ड के सामने से छेद करने के लिए आपको सबसे बड़ी सिलाई सुई का उपयोग करें। मैं आपको शुरुआत में ही हर छेद को पोक करने की सलाह देता हूं ताकि आप इसे फ्लिप कर सकें और देख सकें कि आप अपने केबल संगठन क्लिप कहां रख सकते हैं/नहीं कर सकते हैं
  2. सुई-नाक वाले सरौता की एक जोड़ी लें और अंत से एक सेंटीमीटर से कम फाइबर ऑप्टिक स्ट्रैंड को पकड़ें
  3. आपके द्वारा सुई से बनाए गए छेद के माध्यम से फाइबर ऑप्टिक स्ट्रैंड को पोक करें
  4. विभिन्न प्लास्टिक क्लिप के माध्यम से स्ट्रैंड को रूट करें जहां यह आवश्यकता से थोड़ा लंबा है - हम इसे बाद में काट देंगे
  5. कम तापमान सेटिंग पर अपनी गर्म गोंद बंदूक के साथ (यदि उसके पास वह विकल्प है) फाइबर ऑप्टिक स्ट्रैंड पर गर्म गोंद की एक बूंद डालें जहां यह फोम बोर्ड के माध्यम से पोक करता है। वैकल्पिक रूप से आप उस नीली टैकी सामान का उपयोग कर सकते हैं। गर्म गोंद स्ट्रैंड को थोड़ा विकृत करता है लेकिन यह ऑप्टिकल गुणों के साथ बहुत अधिक गड़बड़ नहीं करता है
  6. तार कटर का उपयोग करके स्ट्रैंड को कैनवास से थोड़ा दूर काटें।

प्रक्रिया को तेज करने के लिए आप गर्म गोंद करने से पहले एक पंक्ति में कई तंतुओं के माध्यम से प्रहार कर सकते हैं। उन्हें आम तौर पर अपने स्थान पर रहना चाहिए।

सावधान रहें कि टेबल पर फाइबर ऑप्टिक स्ट्रैंड को तोड़ें या निचोड़ें नहीं - वे टूट जाएंगे और यदि यह स्ट्रैंड को बहुत छोटा कर देता है तो आप दुखी होंगे और इसे फिर से करना होगा। बैटरी पैक को काउंटरवेट के रूप में उपयोग करें ताकि आपके पास डेस्क पर आधे से भी कम पिक्चर फ्रेम हो।

क्योंकि मैंने काले रंग के बजाय सफेद फोम बोर्ड का इस्तेमाल किया था, जब एल ई डी चालू थे तो बहुत सारी रोशनी चमक रही थी। एक फिक्स के रूप में मैंने रोशनी और कैनवास के बीच कुछ एल्यूमीनियम पन्नी में टेप किया।

फाइबर ऑप्टिक स्ट्रैंड के प्रत्येक बंडल को एक साथ रखने के लिए हीट सिकुड़ ट्यूबिंग का उपयोग करें।

  1. बंडल के लिए स्ट्रैंड्स को लगभग समान लंबाई में काटें
  2. अनुभाग को हीट सिकुड़ ट्यूबिंग के माध्यम से रखें
  3. इसे सिकोड़ने के लिए हीट गन या सोल्डरिंग आयरन का इस्तेमाल करें। यदि आप सोल्डरिंग आयरन का उपयोग कर रहे हैं, तो बस लोहे के किनारे को ट्यूबिंग को हल्के से छूने दें और यह सिकुड़ जाएगा। इसे टयूबिंग को पिघलाना नहीं चाहिए क्योंकि इसे थोड़ी गर्मी के लिए डिज़ाइन किया गया है।

आखिरकार मैंने बंडल के अंत को प्रत्येक एलईडी लाइट से जोड़ने के लिए गर्म गोंद का उपयोग किया। मैंने बहुत सारे गर्म गोंद का उपयोग किया ताकि फाइबर वास्तव में प्रकाश में प्रत्येक लाल/हरे/नीले डायोड से प्रकाश प्राप्त कर सकें - जब फाइबर वास्तव में प्रकाश के करीब एक "सफेद" रंग (जो वास्तव में लाल और हरा और नीला होता है) तो कुछ तंतु सिर्फ लाल होंगे और कुछ हरे होंगे, सभी सफेद होने के बजाय। इसे फैलाने के लिए कागज के टुकड़े या कुछ और का उपयोग करके इसे बेहतर बनाया जा सकता है, लेकिन गर्म गोंद ने मेरे लिए काफी अच्छा काम किया।

चरण 4: प्रोग्रामिंग

प्रोग्रामिंग में मैंने तीन पुस्तकालयों का इस्तेमाल किया

FastLED - WS2812 एलईडी स्ट्रिप्स (और कई अन्य पता योग्य एलईडी स्ट्रिप्स) को नियंत्रित करने के लिए एक महान पुस्तकालय -

Arduino Low Power - मुझे नहीं पता कि यह वास्तव में कितनी बिजली बचाता है, लेकिन इसे लागू करना बहुत आसान था और इसे केवल सफेद रोशनी और फिर हमेशा के लिए देरी करने वाले फ़ंक्शन पर थोड़ी सी शक्ति बचाने में मदद करनी चाहिए।

EEPROM - प्रोजेक्ट के वर्तमान मोड को पढ़ने / संग्रहीत करने के लिए उपयोग किया जाता है। यह प्रोजेक्ट को हर बार जब आप इसे बंद और वापस चालू करते हैं, तो रंग मोड को बढ़ाने की अनुमति देता है, जो मोड को बदलने के लिए एक अलग बटन की आवश्यकता को समाप्त करता है। जब भी आप Arduino IDE इंस्टॉल करते हैं तो EEPROM लाइब्रेरी इंस्टॉल हो जाती है।

मैंने रोशनी को टिमटिमाने के लिए एक स्केच का भी इस्तेमाल किया जिसे किसी और ने स्थापित किया था। यह बेतरतीब ढंग से एक पिक्सेल को बेस कलर से पीक कलर तक रोशन करता है और फिर बैक डाउन करता है। https://gist.github.com/kriegsman/88954aae22b03a66… (यह FastLED लाइब्रेरी का भी उपयोग करता है)

मैंने विजुअल स्टूडियो के लिए vMicro प्लगइन का भी उपयोग किया - यह Arduino IDE का एक उन्नत संस्करण है। इसमें एक टन उपयोगी स्वत: पूर्ण कार्य हैं और इसे संकलित किए बिना आपके कोड में समस्याओं को हाइलाइट करता है। इसकी कीमत $15 है, लेकिन यदि आप एक से अधिक Arduino प्रोजेक्ट बनाने जा रहे हैं, तो यह इसके लायक है, और यह आपको Visual Studio के बारे में जानने के लिए मजबूर करेगा जो कि एक सुपर शक्तिशाली प्रोग्राम है।

(मैं कोड.ino फ़ाइल भी संलग्न कर रहा हूँ क्योंकि Github Gist की इंस्ट्रक्शनल होस्टिंग फ़ाइल में बहुत सारे रिक्त स्थान को नष्ट कर देती है)

FastLED लाइब्रेरी का उपयोग करते हुए कुछ WS2812B LED स्ट्रिप लाइट के लिए Arduino UNO पर 4 रंग मोड चलाने वाला Arduino कोड

#शामिल
#शामिल
#शामिल
// फास्टलेड सेटअप
#defineNUM_LEDS4
#definePIN3//LED पट्टी के लिए डेटा पिन
सीआरजीबी एलईडी[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 = एक बार में बहुत सारे पिक्सेल चमकते हैं।
#defineCHANCE_OF_TWINKLE2
एनम {स्टीडीडिम, गेटिंग ब्राइटर, गेटिंगडिमरअगेन};
uint8_t पिक्सेलस्टेट[NUM_LEDS];
बाइट रनमोड;
बाइट ग्लोबलब्राइट = १५०;
बाइट ग्लोबलडेल = 20; // टिमटिमाते समय देरी की गति
बाइट पता = 35; // रन मोड को स्टोर करने का पता
व्यर्थ व्यवस्था()
{
FastLED.addLeds(LEDs, NUM_LEDS);
FastLED.setCorrection (विशिष्टLEDStrip);
// FastLED.setMaxPowerInVoltsAndMilliamps(5, maxMilliamps);
FastLED.setBrightness (वैश्विक ब्राइट);
// चलाने के लिए मोड प्राप्त करें
रनमोड = EEPROM.read (पता);
// रनमोड को 1. से बढ़ाएं
EEPROM.लिखें (पता, रनमोड + 1);
}
शून्य लूप ()
{
स्विच (रनमोड)
{
// ठोस सफेद
case1: fill_solid(leds, NUM_LEDS, CRGB::White);
FastLED.शो ();
देरी हमेशा के लिए ();
टूटना;
// ट्विंकल थोड़े धीरे-धीरे
केस 2: FastLED.setBrightness (255);
वैश्विक विलंब = 10;
ट्विंकलमैपपिक्सल ();
टूटना;
// जल्दी से टिमटिमाना
केस 3: FastLED.setBrightness (150);
ग्लोबलडेले = 2;
ट्विंकलमैपपिक्सल ();
टूटना;
//इंद्रधनुष
केस4:
रनरेनबो ();
टूटना;
// इंडेक्स सीमा से बाहर है, इसे 2 पर रीसेट करें और फिर मोड 1 चलाएं।
// जब आर्डिनो पुनरारंभ होता है तो यह मोड 2 चलाएगा, लेकिन अभी के लिए मोड 1 चलाएं
चूक जाना:
EEPROM.लिखें (पता, 2);
रनमोड = 1;
टूटना;
}
}
शून्य रनइंद्रधनुष ()
{
बाइट * सी;
uint16_t मैं, जे;
जबकि (सच)
{
के लिए (जे = 0; जे <256; जे ++) {// पहिया पर सभी रंगों का 1 चक्र
के लिए (i = 0; मैं <NUM_LEDS; i++) {
सी = व्हील (((i * 256 / NUM_LEDS) + जे) और 255);
सेट पिक्सेल (i, *c, *(c + 1), *(c + 2));
}
FastLED.शो ();
देरी (वैश्विक विलंब);
}
}
}
बाइट * व्हील (बाइट व्हीलपॉस) {
स्थिर बाइट सी [3];
अगर (व्हीलपॉस <85) {
सी [0] = व्हीलपॉस * 3;
सी [1] = २५५ - व्हीलपोस * ३;
सी [२] = ०;
}
एल्सिफ़ (व्हीलपॉज़ <१७०) {
व्हीलपोस - = 85;
सी [0] = 255 - व्हीलपॉस * 3;
सी [1] = 0;
सी [२] = व्हीलपोस * ३;
}
अन्यथा {
व्हीलपोस - = १७०;
सी [0] = 0;
सी [1] = व्हीलपोस * 3;
सी [२] = २५५ - व्हीलपॉस * ३;
}
वापसी ग;
}
voidTwinkleMapPixels ()
{
InitPixelStates ();
जबकि (सच)
{
के लिए (uint16_t i = 0; i < NUM_LEDS; i++) {
अगर (पिक्सेलस्टेट == स्टेडीडिम) {
// यह पिक्सेल वर्तमान में है: SteadyDim
// इसलिए हम बेतरतीब ढंग से इसे उज्जवल बनाने पर विचार करते हैं
अगर (random8() < CHANCE_OF_TWINKLE) {
पिक्सेलस्टेट = गेटिंग ब्राइटर;
}
}
अन्य (पिक्सेलस्टेट == गेटिंगब्राइटर) {
// यह पिक्सेल वर्तमान में है: GetBrighter
// इसलिए यदि यह चरम रंग पर है, तो इसे फिर से मंद होने के लिए स्विच करें
अगर (एलईडी > = PEAK_COLOR) {
पिक्सेलस्टेट = डिमर अगेन प्राप्त करना;
}
अन्यथा {
// अन्यथा, बस इसे रोशन करते रहें:
एल ई डी += DELTA_COLOR_UP;
}
}
और {// फिर से धुंधला हो जाना
// यह पिक्सेल वर्तमान में है: GetDimmerAgain
// इसलिए यदि यह मूल रंग में वापस आ गया है, तो इसे स्थिर मंद पर स्विच करें
अगर (एलईडी <= BASE_COLOR) {
एल ई डी = BASE_COLOR; // सटीक आधार रंग पर रीसेट करें, अगर हम ओवरशॉट करते हैं
पिक्सेलस्टेट = स्टेडीडिम;
}
अन्यथा {
// अन्यथा, बस इसे कम करते रहें:
एल ई डी -= DELTA_COLOR_DOWN;
}
}
}
FastLED.शो ();
FastLED.delay (वैश्विक विलंब);
}
}
voidInitPixelStates ()
{
मेमसेट (पिक्सेलस्टेट, आकार (पिक्सेलस्टेट), स्टेडीडिम); // सभी पिक्सल को SteadyDim में इनिशियलाइज़ करें।
फिल_सॉलिड (एलईडी, NUM_LEDS, BASE_COLOR);
}
शून्य देरी हमेशा के लिए ()
{
जबकि (सच)
{
देरी (100);
LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
}
voidshowStrip() {
FastLED.शो ();
}
voidsetPixel (इंट पिक्सेल, बाइट रेड, बाइट ग्रीन, बाइट ब्लू) {
// फास्टलेड
एल ई डी [पिक्सेल]। आर = लाल;
एल ई डी [पिक्सेल]। जी = हरा;
एल ई डी [पिक्सेल]। बी = नीला;
}

देखें rawFiberOptic_ClemsonPic.ino GitHub द्वारा ❤ के साथ होस्ट किया गया

चरण 5: अंतिम उत्पाद

अंतिम उत्पाद
अंतिम उत्पाद
अंतिम उत्पाद
अंतिम उत्पाद
अंतिम उत्पाद
अंतिम उत्पाद

टा-दा! मुझे आशा है कि यह निर्देशयोग्य किसी और को अपना समान प्रोजेक्ट बनाने के लिए प्रेरित करता है। यह वास्तव में करना कठिन नहीं था और मुझे आश्चर्य हुआ कि किसी ने भी ऐसा नहीं किया था और इसके बारे में अभी तक पूरी तरह से निर्देश योग्य नहीं लिखा था।

सिफारिश की: