विषयसूची:

एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर: 5 कदम
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर: 5 कदम

वीडियो: एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर: 5 कदम

वीडियो: एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर: 5 कदम
वीडियो: How To Make A Led Mirror Just In 3 Minutes #greatbathvanitycompany 2024, नवंबर
Anonim
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर
एलसीडी और आईआर सेंसर के साथ इन्फिनिटी मिरर

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

आपूर्ति

1. एक छाया बॉक्स ($50)

2. 1-वे मिरर फिल्म ($17)

3. एक आरजीबी एलईडी लाइट स्ट्रिप ($ 30)

4. अरुडिनो ($35)

5. एक दर्पण ($10)

वैकल्पिक:

1. आईआर सेंसर और रिमोट ($20)

2. एक एलसीडी ($20)

3. 7 महिला से पुरुष कनेक्टर

4. 3 पुरुष से पुरुष कनेक्टर

उपकरण

1. सोल्डरिंग आयरन

2. वायर कटर और स्ट्रिपर

3. दर्पण को काटने के लिए कुछ

*ध्यान दें कि सीएडी में सभी मूल्य और आकार आपके द्वारा उपयोग किए जाने वाले बॉक्स पर निर्भर करेगा।

चरण 1: मिरर और मिरर फिल्म स्थापित करना

मिरर और मिरर फिल्म स्थापित करना
मिरर और मिरर फिल्म स्थापित करना
मिरर और मिरर फिल्म स्थापित करना
मिरर और मिरर फिल्म स्थापित करना

पहली बात यह है कि उस दर्पण को स्थापित करना है जो छाया बॉक्स के पीछे होगा। आप या तो सही आकार का एक प्राप्त करना चाहते हैं या एक बड़ा प्राप्त करना चाहते हैं और फिर उसे काट देना चाहते हैं। लेकिन इसके लिए, आपको एक दर्पण का उपयोग करना होगा, न कि फिल्म का क्योंकि हम चाहते हैं कि सभी प्रकाश वापस परावर्तित हो जाएं, दर्पण फिल्म उस सामग्री के पैटर्न पर भी ले सकती है जिस पर वह कांच नहीं है।

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

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

चरण 2: एलईडी पट्टी की स्थापना

एलईडी पट्टी की स्थापना
एलईडी पट्टी की स्थापना
एलईडी पट्टी की स्थापना
एलईडी पट्टी की स्थापना

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

मैंने केबल को बॉक्स के बाहर तक डालने के लिए एक छोटा सा छेद बनाया, जो एल ई डी मेरे पास थे वे 3 पिन एड्रेसेबल एल ई डी थे इसलिए मेरे पास पावर, ग्राउंड और डेटा कनेक्टर थे। मैंने डेटा कनेक्टर के लिए डिजिटल पिन 3 का उपयोग किया है, यह सुनिश्चित करने के लिए अपने एलईडी स्ट्रिप्स का परीक्षण करना सुनिश्चित करें कि वे उन्हें फ्रेम से चिपकाने से पहले काम करते हैं और सुनिश्चित करें कि मेरे लिए केवल अनुशंसित वोल्टेज का उपयोग 5 - 6 वी है।

चरण 3: IR सेंसर और LCD को माउंट करना (वैकल्पिक)

IR सेंसर और LCD को माउंट करना (वैकल्पिक)
IR सेंसर और LCD को माउंट करना (वैकल्पिक)
IR सेंसर और LCD को माउंट करना (वैकल्पिक)
IR सेंसर और LCD को माउंट करना (वैकल्पिक)
IR सेंसर और LCD को माउंट करना (वैकल्पिक)
IR सेंसर और LCD को माउंट करना (वैकल्पिक)

मैंने प्रकाश प्रभाव को बदलने और उपयोग करने के लिए एक आईआर सेंसर और रिमोट का उपयोग करना चुना और उपयोगकर्ता को प्रभावों के लिए उनके पास विकल्प दिखाने के लिए एक एलसीडी का उपयोग किया।

एलसीडी और आईआर सेंसर को माउंट करने के लिए मैं एक गर्म गोंद बंदूक का उपयोग करूंगा और उन्हें फ्रेम के शीर्ष पर चिपका दूंगा और सब कुछ पीछे की ओर तार कर दूंगा लेकिन मैं नहीं चाहता था कि उन्हें ठीक किया जाए क्योंकि मुझे परियोजना के बाद उन्हें उतारना पड़ सकता है। पूरा हो गया है।

LCD और IR रिसीवर को जोड़ने के लिए मैंने पुरुष से महिला कनेक्टर्स का उपयोग किया जो डेटा के साथ-साथ ग्राउंड और पावर के लिए Arduino में प्लग करते हैं। सब कुछ तार करने के लिए मैंने आईआर सेंसर के लिए डेटा पिन पर 2 केΩ प्रतिरोधी के साथ पिन 12 का उपयोग किया, एलसीडी के एससीएल के लिए एलसीडी और एनालॉग पिन 5 के एसडीए के लिए एनालॉग पिन ए 4।

चरण 4: कोड

इस परियोजना के लिए, मैं कुछ पुस्तकालयों का उपयोग करता हूं जिन्हें उपयोग करने के लिए आपको डाउनलोड करना होगा। मैं उन्हें यहां रखने जा रहा हूं, ध्यान रखें कि मैं विंडोज़ पर हूं ताकि यदि आप मैक या लिनक्स पर हैं तो इसका असर हो सकता है।

आपके पास एल ई डी की संख्या के आधार पर आपको पिक्सेल की संख्या को बदलना होगा। मैंने एक सीरियल मॉनिटर इंटरफ़ेस भी बनाया है ताकि यदि आप IR सेंसर का उपयोग नहीं कर रहे हैं तो आप इसके साथ उस तरह से इंटरफ़ेस कर सकते हैं।

// पुस्तकालय

#शामिल करें IRrecv irrecv (RECV_PIN); decode_results परिणाम; अहस्ताक्षरित लंबा key_value = 0; कॉन्स्ट इंट NUMPIXELS = 27;

Adafruit_NeoPixel पिक्सेल = Adafruit_NeoPixel(NUMPIXELS, 3);

लिक्विड क्रिस्टल_आई2सी एलसीडी (0x27, 2, 1, 0, 4, 5, 6, 7, 3, पॉज़िटिव);// वेरिएबल्स इंट IRNumb; इंट IRNumb2; इंट इंद्रधनुष = 0; uint32_t इंद्रधनुष रंग = पिक्सेल। रंग (0, 0, 0); चार इनपुट = 0; चार इनपुट2 = 0; इंट आर; इंट जी; इंट बी; इंट ब्रेककंडीशन = 0; शून्य सेटअप () {// उन तत्वों को इनिशियलाइज़ करता है जिन्हें दोहराने की आवश्यकता नहीं है। LCD.begin(16, 2);//LCD डिस्प्ले के 16 कॉलम और 2 पंक्तियों को परिभाषित करना LCD.backlight();//बैकलाइट चालू करने के लिए Serial.begin(9600); पिक्सल। शुरू (); ircv.enableIRIn (); Serial.println ("लाइट बंद करने के लिए 0 दर्ज करें"); // शुरुआती निर्देश Serial.println ("एल ई डी को सफेद करने के लिए 1 दर्ज करें"); Serial.println ("विभिन्न रंगों के माध्यम से एलईडी चक्र रखने के लिए 2 दर्ज करें"); Serial.println ("एलईडी रंगों को मैन्युअल रूप से अनुकूलित करने के लिए 3 दर्ज करें"); } शून्य लूप () {IRNumb = 10; आईआरएसकेन (); मुख्य विकल्प (); अगर (सीरियल.उपलब्ध ()> 0) {// चेक करता है कि कोई कैरेक्टर उपलब्ध है या नहीं? इनपुट = (चार) सीरियल.रीड (); } // अलग-अलग विकल्प चुनता है अगर (इनपुट == '1' || IRNumb == 1) {इंद्रधनुष रंग = रंग बदलें (255, 255, 255); // सफेद सेटऑल (इंद्रधनुष रंग); // एल ई डी को अपडेट करता है } और अगर (इनपुट == '0' || IRNumb == 0) {इंद्रधनुष रंग = रंग परिवर्तन (0, 0, 0); // ऑफ सेटऑल (इंद्रधनुष रंग); // एल ई डी को अपडेट करता है } और अगर (इनपुट == '2' || IRNumb == 2) {ब्रेककंडीशन = 0; आर = 0; जी = 0; बी = 0;

Serial.println ("कुछ भी दर्ज करें जो इस प्रभाव से बाहर निकलने के लिए 2 नहीं है, फिर नए प्रभाव के लिए पिछले विकल्पों में से कोई भी।");

एलसीडी.क्लियर (); // स्क्रीन को साफ करें LCD.setCursor (0, 0); LCD.print ("किसी भी का उपयोग करके बाहर निकलें-"); LCD.setCursor(0, 1); LCD.print ("नंब दैट! = 2"); for(int i = 0; i = ४८ && इनपुट <= ५७) || ब्रेककंडीशन == 1 || IRNumb != 2){ // जाँचता है कि क्या प्रभाव से बाहर निकलने की आवश्यकता है इंद्रधनुष रंग = colorChange(0, 0, 0); सेट ऑल (इंद्रधनुष रंग); ब्रेककंडीशन = 1; टूटना; } इंद्रधनुष रंग = रंग बदलें (i, 0, 0); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); देरी (100); } for(int i = 0; i = 48 && इनपुट <= 57) || ब्रेककंडीशन == 1 || IRNumb != 2){ // जाँचता है कि क्या प्रभाव से बाहर निकलने की आवश्यकता है इंद्रधनुष रंग = colorChange(0, 0, 0); सेट ऑल (इंद्रधनुष रंग); ब्रेककंडीशन = 1; टूटना; } जी++; इंद्रधनुष रंग = रंग बदलें (i, g, 0); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); देरी (100); } के लिए (इंट जी = 0; जी = 48 && इनपुट <= 57) || ब्रेककंडीशन == 1 || IRNumb != 2){ // जाँचता है कि क्या प्रभाव से बाहर निकलने की आवश्यकता है इंद्रधनुष रंग = colorChange(0, 0, 0); सेट ऑल (इंद्रधनुष रंग); ब्रेककंडीशन = 1; टूटना; } आर+= 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, 0); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); देरी (100); } for(int b = 0; b = 48 && इनपुट <= 57) || ब्रेककंडीशन == 1 || IRNumb != 2){ // जाँचता है कि क्या प्रभाव से बाहर निकलने की आवश्यकता है इंद्रधनुष रंग = colorChange(0, 0, 0); सेट ऑल (इंद्रधनुष रंग); ब्रेककंडीशन = 1; टूटना; } आर+= 2; जी+= 5; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); देरी (100); } मुख्य विकल्प (); } और अगर (इनपुट == '3' || IRNumb == 3) {आर = 0; जी = 0; बी = 0;

Serial.println ("बाहर निकलने के लिए n दर्ज करें");

Serial.println ("लाल रंग को बढ़ाने या घटाने के लिए w और s का उपयोग करें"); Serial.println ("हरे रंग को बढ़ाने या घटाने के लिए r और f का उपयोग करें"); Serial.println ("नीले रंग को बढ़ाने या घटाने के लिए y और h का उपयोग करें"); LCD.clear();// स्क्रीन को साफ करें LCD.setCursor(0, 0); एलसीडी.प्रिंट ("बाहर निकलें: 0, 4/7: +/- लाल"); LCD.setCursor(0, 1); LCD.print ("5/8: हरा, 6/9: नीला");

जबकि (इनपुट2!= 'एन' || IRNumb2!= 0){

अगर (सीरियल.उपलब्ध ()> 0) {// एक वर्ण उपलब्ध है? इनपुट २ = (चार) सीरियल.रीड (); } // Serial.println (IRNumb2); IRNumb2 = 10; IRScan2 ();

अगर (IRNumb2 == 0) {

टूटना; } अगर (input2 == 'w' || IRNumb2 == 4){ r+= 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); } और अगर (input2 == 's' || IRNumb2 == 7){ r-= 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); } और अगर (input2 == 'r' || IRNumb2 == 5){ g+= 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); } और अगर (input2 == 'f' || IRNumb2 == 8){ g-= 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); }

और अगर (इनपुट2 == 'वाई' || IRNumb2 == 6){

बी+= 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); }

और अगर (इनपुट2 == 'एच' || IRNumb2 == 9){

बी- = 2; इंद्रधनुष रंग = रंग बदलें (आर, जी, बी); सेट ऑल (इंद्रधनुष रंग); शोस्ट्रिप (); } } मुख्य विकल्प (); } सेटऑल (इंद्रधनुष रंग); शोस्ट्रिप (); } शून्य शोस्ट्रिप () {पिक्सेल। शो (); } void setAll(uint32_t color) { for(int i = 0; i < NUMPIXELS; i++) { pixels.setPixelColor(i, color); } } // रंग मान प्राप्त करने के लिए 0 से 255 तक मान इनपुट करें। uint32_t colorChange (int r, int g, int b) {रिटर्न पिक्सल। कलर (आर, जी, बी); } शून्य mainOptions (){// मुख्य प्रभाव विकल्प को Sjow करता है LCD.clear();//स्क्रीन को साफ करें LCD.setCursor(0, 0); LCD.print ("0 लाइट बंद के लिए"); LCD.setCursor(0, 1); LCD.print ("1: व्हाइट लाइट"); देरी (1000); LCD.clear();// स्क्रीन को साफ करें LCD.setCursor(0, 0); LCD.print ("2: रंग प्रभाव"); LCD.setCursor(0, 1); LCD.print ("3: मैनुअल"); देरी (1000); } शून्य IRScan (){ अगर (irrecv.decode(&results)){

अगर (results.value == 0XFFFFFFFF)

परिणाम। मूल्य = key_value; अन्य {//Serial.println (परिणाम। मूल्य, हेक्स); अगर (results.value == 0xFF6897 || results.value == 0xC101E57B){ IRNumb = 0; // सीरियल.प्रिंट्लन ("0"); } और अगर (results.value == 0x9716BE3F || results.value == 0xFF30CF){ IRNumb = 1; // सीरियल.प्रिंट्लन ("1"); } और अगर (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7){ IRNumb = 2; // सीरियल.प्रिंट्लन ("2"); } और अगर (results.value == 0xFF7A85 || results.value == 0x6182021B){ IRNumb = 3; // सीरियल.प्रिंट्लन ("3"); } और अगर (results.value == 0x8C22657B || results.value == 0xFF10EF){ IRNumb = 4; // सीरियल.प्रिंट्लन ("4"); } और अगर (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb = 5; // सीरियल.प्रिंट्लन ("5"); } और अगर (results.value == 0x449E79F || results.value == 0xFF5AA5){ IRNumb = 6; // सीरियल.प्रिंट्लन ("6"); } और अगर (results.value == 0xFF42BD || results.value == 0x32C6FDF7){ IRNumb = 7; // सीरियल.प्रिंट्लन ("7"); } और अगर (results.value == 0x1BC0157B || results.value ==0xFF4AB5){ IRNumb = 8; // सीरियल.प्रिंट्लन ("8"); } और अगर (results.value == 0xFF52AD || results.value == 0x3EC3FC1B){ IRNumb = 9; // सीरियल.प्रिंट्लन ("9"); } } key_value = results.value; इरेकव। फिर से शुरू (); } } शून्य IRScan2 (){ अगर (irrecv.decode(&results)){

अगर (results.value == 0XFFFFFFFF)

परिणाम। मूल्य = key_value; अन्य {// Serial.println (results.value, HEX); अगर (results.value == 0xFF6897 || results.value == 0xC101E57B){ IRNumb2 = 0; // सीरियल.प्रिंट्लन ("0"); } और अगर (results.value == 0x9716BE3F || results.value == 0xFF30CF){ IRNumb2 = 1; // सीरियल.प्रिंट्लन ("1"); } और अगर (results.value == 0x3D9AE3F7 || results.value == 0xFF18E7){ IRNumb2 = 2; // सीरियल.प्रिंट्लन ("2"); } और अगर (results.value == 0xFF7A85 || results.value == 0x6182021B){ IRNumb2 = 3; // सीरियल.प्रिंट्लन ("3"); } और अगर (results.value == 0x8C22657B || results.value == 0xFF10EF){ IRNumb2 = 4; // सीरियल.प्रिंट्लन ("4"); } और अगर (results.value == 0xFF38C7 || results.value == 0x488F3CBB) {IRNumb2 = 5; // सीरियल.प्रिंट्लन ("5"); } और अगर (results.value == 0x449E79F || results.value == 0xFF5AA5){ IRNumb2 = 6; // सीरियल.प्रिंट्लन ("6"); } और अगर (results.value == 0xFF42BD || results.value == 0x32C6FDF7){ IRNumb2 = 7; // सीरियल.प्रिंट्लन ("7"); } और अगर (results.value == 0x1BC0157B || results.value ==0xFF4AB5){ IRNumb2 = 8; // सीरियल.प्रिंट्लन ("8"); } और अगर (results.value == 0xFF52AD || results.value == 0x3EC3FC1B){ IRNumb2 = 9; // सीरियल.प्रिंट्लन ("9"); } } key_value = results.value; अपरिवर्तनीय। फिर से शुरू (); } }

चरण 5: बढ़ते

बढ़ते
बढ़ते

Arduino को फ्रेम में माउंट करने के लिए मैं बस इसे और ब्रेडबोर्ड को गोंद कर दूंगा जिसे मैंने फ्रेम के पीछे इस्तेमाल किया था और इसे अच्छा दिखने के लिए केबलों को कवर/छिपाने की कोशिश करता था।

सिफारिश की: