विषयसूची:

टिमटिमाता मोमबत्ती पुल: 6 कदम (चित्रों के साथ)
टिमटिमाता मोमबत्ती पुल: 6 कदम (चित्रों के साथ)

वीडियो: टिमटिमाता मोमबत्ती पुल: 6 कदम (चित्रों के साथ)

वीडियो: टिमटिमाता मोमबत्ती पुल: 6 कदम (चित्रों के साथ)
वीडियो: तारे क्यों टिमटिमाते हैं | Tare kyu timtimate hain | Why do stars twinkle | atmospheric refraction 2024, नवंबर
Anonim
Image
Image

यह निर्देशयोग्य दिखाता है कि कैसे टिमटिमाती रोशनी, टिमटिमाती, तरंग पैटर्न और क्या नहीं के अंतहीन बदलावों के साथ एक साधारण मोमबत्ती पुल को स्थिर प्रकाश के साथ एक अच्छी चमकती मूड रोशनी में बदलना है। मैंने आफ्टर क्रिसमस सेल्स से 8 € में एक कैंडल ब्रिज खरीदा। इसमें 7 एलईडी लाइट्स और कुछ 33 V 3 W वॉल एडॉप्टर हैं। यह एक चमकीले और गर्म सफेद रंग के साथ चमकता है और इस परियोजना के लिए एकदम सही होगा, जहां मैं मोमबत्तियों को झिलमिलाने के लिए एक Arduino डालूंगा। सबसे लोकप्रिय Arduino Arduino Uno है। इस परियोजना में, मैं एक Arduino Mega 2560 का उपयोग करूँगा।

मैं ३० वी बिजली की आपूर्ति को खत्म करने जा रहा हूं और बिजली की आपूर्ति के रूप में मोबाइल फोन के लिए एक साधारण ५ वी पावर बैंक का उपयोग करूंगा।

पावर बैंक के बारे में जानने वाली एक अच्छी बात यह है कि इनमें एक इनर सर्किट होता है, जो बैटरी को 3.7 V से 5 V में बदल देता है। क्योंकि इस प्रक्रिया में कुछ शक्ति का उपयोग होता है, यदि इसका उपयोग नहीं किया जाता है, तो पावर बैंक अपने आप बंद हो जाता है। यदि पावर बैंक का उपयोग Arduino आधारित DIY गैजेट्स के लिए किया जाता है, तो गैजेट स्वयं को केवल बिजली बचाने वाली नींद में नहीं डाल सकता है और कुछ मिनटों के बाद फिर से शुरू हो सकता है। इससे पावर बैंक बंद हो जाएगा। इस टिमटिमाते कैंडल ब्रिज में स्लीप मोड नहीं है। यह लगातार बिजली का उपयोग करता है, पावर बैंक को तब तक सक्रिय रखता है, जब तक कि पावर केबल को हटा नहीं दिया जाता।

वीडियो में कैंडल ब्रिज को स्टैटिक मोड में और पूरी तरह टिमटिमाते हुए दिखाया गया है। पूर्ण झिलमिलाहट वास्तव में आंखों के लिए काफी कष्टप्रद है, जबकि वीडियो इसे थोड़ा चिकना करता है। हार्डवेयर को ठीक करने के बाद, केबल काटने, नए कनेक्शनों को मिलाने और कुछ घटकों को जोड़ने सहित, सभी वांछित प्रकाश पैटर्न Arduino के लिए कोड लिखकर बनाए जाते हैं। इस निर्देश में मेरे द्वारा शामिल किए गए पैटर्न हैं:

  • असली मोमबत्तियों की नकल करने वाली 4 अलग-अलग टिमटिमाती रोशनी
  • 2 अलग टिमटिमाना (अन्यथा स्थिर रोशनी की यादृच्छिक चमकती)
  • 2 अलग तरंग पैटर्न
  • साधारण स्थिर प्रकाश

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

आपूर्ति

  • 7 बल्बों के साथ 1 एलईडी कैंडल ब्रिज। सुनिश्चित करें कि यह एक कम वोल्टेज डीसी मॉडल है, या तो बैटरी के साथ या वॉल माउंट पावर स्रोत के साथ, जो घातक 110 - 240 वी एसी को कुछ 6 - 30 वी डीसी में बदल देता है। इसलिए कैंडल ब्रिज को हैक करना पूरी तरह से सुरक्षित है।
  • 1 Arduino मेगा (कोई अन्य माइक्रोकंट्रोलर करेगा, बस सुनिश्चित करें कि आप इसे प्रोग्राम कर सकते हैं)
  • 1 प्रोटोटाइप ब्रेडबोर्ड
  • जम्पर तार और अन्य तार
  • सोल्डरिंग टूल
  • मल्टीमीटर
  • 7 प्रतिरोधक, 120
  • 1 पुश बटन (मैं दिखाऊंगा कि आप इसके बजाय एक Arduino पर अंतर्निहित बटन का उपयोग कैसे कर सकते हैं)
  • 7 ट्रांजिस्टर के लिए एक डार्लिंगटन ट्रांजिस्टर आईसी, ULN2803AP करेगा (यदि आप एक Arduino Uno या Meaga का उपयोग करते हैं, तो आपको वास्तव में इसकी आवश्यकता नहीं है)
  • मोबाइल फोन के लिए एक 5 वी पावर बैंक

चरण 1: जांच करें कि आपको क्या मिला

आपको जो मिला है उसकी जांच करें
आपको जो मिला है उसकी जांच करें
आपको जो मिला है उसकी जांच करें
आपको जो मिला है उसकी जांच करें

पता करें कि प्रत्येक एलईडी किस वोल्टेज से संचालित होती है और कितनी धारा प्रवाहित होती है।

  1. मोमबत्ती पुल के नीचे खोलें। एक मोमबत्ती में जाने वाले दो तार ज्ञात कीजिए।
  2. तांबे के तारों को काटे बिना तांबे के तारों को प्रकट करने वाले केबलों से कुछ इन्सुलेशन हटा दें।
  3. रोशनी चालू करें (आराम करें, यह केवल कुछ वोल्ट है) और प्रकट तांबे के तारों पर वोल्टेज को मापें।
  4. किसी एक माप बिंदु पर केबल को काटें (इस बिंदु पर रोशनी निश्चित रूप से बंद हो जाती है), दोनों सिरों पर कुछ इन्सुलेशन (3 - 4 मिमी) को हटा दें। से गुजरने वाले करंट को मापें। आप क्या करते हैं कि आप अपने मल्टीमीटर के साथ कट केबल को फिर से कनेक्ट करते हैं, जिससे आपके मल्टीमीटर के माध्यम से सभी वर्तमान प्रवाह होते हैं, जो अब आपको वर्तमान की मात्रा बताता है।

मेरी रीडिंग

एक मोमबत्ती पर वोल्टेज (चरण 3): ३.१ V

ध्यान दें कि मोमबत्ती पुल के लिए शक्ति स्रोत 33 वी था। इसलिए सात गुना 3.1 वी केवल 21.7 वी है। कुछ मोमबत्तियों पर एक अतिरिक्त प्रतिरोधी होना चाहिए। अगर मैंने उस मोमबत्ती वोल्टेज को मापा होता, तो यह लगभग ११ वी होना चाहिए था।

मोमबत्ती की रोशनी में प्रवाहित होने वाली धारा (चरण 4): 19 mA

मैं 5 वी 2 ए बैटरी पैक के साथ सब कुछ पावर करने जा रहा हूं। मोमबत्तियों के लिए, मुझे वोल्टेज को 5 वी से 3 वी तक गिराने की जरूरत है। मुझे एक अवरोधक की आवश्यकता है, जो वोल्टेज 2 वी को 19 एमए करंट पर गिरा देगा।

2 वी / 0.019 ए = 105

शक्ति अपव्यय है:

2 वी * 19 एमए = 38 मेगावाट

यह नगण्य है। रोकनेवाला को और भी बहुत कुछ उड़ा सकता है। फिर भी, १०५ रोकनेवाला के बिना मैं एलईडी को उड़ा सकता हूं। मेरे पास १०० और १२० प्रतिरोधक हैं। मैं 120 के साथ जाता हूं। यह अधिक सुरक्षा देता है।

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

तो अब मुझे पता है कि मैं जो भी शक्ति स्रोत का उपयोग करता हूं, जो भी वोल्टेज है, मुझे वोल्टेज को 3 वी तक गिराना होगा जिससे 19 एमए गुजर सके।

यदि मैं एलईडी तकनीक से अधिक परिचित होता, तो मैं उपयोग किए जाने वाले एलईडी के प्रकार को पहचान लेता और मुझे पता होता कि इसके लिए 3 वी की आवश्यकता होती है।

चरण 2: कुछ सोल्डरिंग

कुछ सोल्डरिंग
कुछ सोल्डरिंग
कुछ सोल्डरिंग
कुछ सोल्डरिंग

इस चरण में मैं 5 मोमबत्तियों से सभी सकारात्मक (+) तारों को एक तार से जोड़ता हूं। फिर मैं प्रत्येक मोमबत्ती के लिए एक अलग नकारात्मक (-) तार जोड़ता हूं। एक एलईडी लाइट तभी जलती है जब '+' और '-' दाईं ओर जाते हैं। चूंकि आपके पास प्रत्येक मोमबत्ती से केवल दो समान केबल समाप्त होते हैं, इसलिए आपको यह जांचना होगा कि कौन सा '+' है और कौन सा '-' है। इसके लिए आपको 3 V पावर सोर्स की जरूरत है। मेरे पास दो एएए बैटरी सहित एक छोटा बैटरी पैकेज था। परीक्षण के लिए भी एक 3 वी सिक्का बैटरी बहुत अच्छा काम करती है।

कैंडल ब्रिज को Arduino और ब्रिज के बीच चलने के लिए 8 केबल की जरूरत होती है। यदि आपको 8 इंसुलेटेड तारों वाली केबल मिल जाए, तो यह बहुत अच्छा होगा। एक तार में 120 mA होना चाहिए, बाकी में अधिकतम 20 mA ही होना चाहिए। मैंने 4 डबल वायर केबल का उपयोग करना चुना, जो मेरे पास हुआ।

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

दूसरी छवि '-' तारों को दिखाती है जिनकी प्रत्येक मोमबत्ती को आवश्यकता होती है। आम '+' तार सीधे Arduino (या शायद ब्रेडबोर्ड के माध्यम से) के 5 V पिन पर जाता है। प्रत्येक '-' तार ट्रांजिस्टर आईसी के अपने पिन पर जाता है (फिर से, शायद ब्रेडबोर्ड के माध्यम से)।

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

चरण 3: कनेक्शन

कनेक्शन
कनेक्शन
कनेक्शन
कनेक्शन
कनेक्शन
कनेक्शन
कनेक्शन
कनेक्शन

इस पृष्ठ से लिए गए Arduinos के बारे में:

  • कुल अधिकतम वर्तमान प्रति इनपुट/आउटपुट पिन: 40mA
  • सभी इनपुट/आउटपुट पिनों में से धाराओं का योग संयुक्त: 200mA

मेरी मोमबत्तियाँ 19 mA खींचती हैं, जब 3 V द्वारा संचालित होती हैं। उनमें से सात हैं, जो 133 mA बनाती हैं। इसलिए मैं उन्हें सीधे आउटपुट पिन से पावर दे सकता था। हालाँकि, मेरे पास कुछ अतिरिक्त डार्लिंगटन ट्रांजिस्टर IC हैं। तो मैंने सोचा, क्यों नहीं। मेरा सर्किट सही तरीके से काम करता है: डेटा पिन केवल सिग्नल के लिए होते हैं, पावर के लिए नहीं। इसके बजाय मैं एलईडी लाइट्स को पावर देने के लिए Arduino पर 5 V पिन का उपयोग करता हूं। जब परीक्षण चल रहा होता है, तो मेरे पास मेरा लैपटॉप Arduino से जुड़ा होता है। सब कुछ लैपटॉप USB से संचालित होता है, जो 5 V देता है। Arduino Mega का अपना एक फ्यूज होता है, जो कंप्यूटर की सुरक्षा के लिए 500 mA पर चलता है। मेरी मोमबत्तियाँ सबसे अधिक 133 mA खींचती हैं। Arduino शायद बहुत कम। लैपटॉप द्वारा संचालित होने पर सब कुछ ठीक चलता है, इसलिए Arduino के USB पोर्ट से जुड़े 5 V बैटरी पैक का उपयोग करना ठीक है।

डेटा पिन D3 - D9 IC ULN2803APGCN पर जाता है। एल ई डी 3 वी पर काम करते हैं। प्रत्येक बल्ब 5 वी स्रोत से जुड़ा होता है और आगे 120 Ω प्रतिरोधी से जुड़ा होता है। आईसी के एक चैनल के आगे, जो अंत में आईसी में एक डार्लिंगटन ट्रांजिस्टर के माध्यम से सर्किट को जमीन से जोड़ता है।

कुछ उपयोगकर्ता क्रिया को सक्षम करने के लिए सर्किट में एक पुश बटन जोड़ा जाता है। इस प्रकार मोमबत्ती पुल में कुछ उपयोगकर्ता चयन योग्य कार्यक्रम हो सकते हैं।

सर्किट में पुश बटन RESET और GND से जुड़ा होता है। यह वही है जो बिल्ट इन रीसेट बटन करता है। चूंकि मैं प्लास्टिक के मामले में सब कुछ समाहित नहीं करता, इसलिए मैं प्रोग्राम को नियंत्रित करने के लिए Arduino पर रीसेट बटन का उपयोग कर रहा हूं। इमेज के अनुसार बटन जोड़ने से ठीक बोर्ड रीसेट बटन की तरह काम करेगा। प्रोग्राम यह याद करके काम करता है कि पिछली बार प्रोग्राम चलने पर किस लाइट प्रोग्राम का इस्तेमाल किया गया था। इस प्रकार, प्रत्येक रीसेट अगले प्रकाश कार्यक्रम के लिए आगे बढ़ेगा।

तस्वीरें दिखाती हैं कि पुल से नए केबल कैसे निकलते हैं, कैसे मैंने ब्रेडबोर्ड पर ट्रांजिस्टर आईसी और प्रतिरोधों को रखा और कैसे जम्पर तार अरुडिनो मेगा से जुड़ते हैं। मैंने 4 पुरुष-पुरुष जम्पर तारों को 8 आधे तारों में काटा, जिसे मैंने कैंडल ब्रिज से निकलने वाली 8 केबलों में मिला दिया। इस तरह मैं सिर्फ केबल को ब्रेडबोर्ड में चिपका सकता हूं।

ट्रांजिस्टर के बिना वैकल्पिक

पिछले चरण में, मैंने मोमबत्तियों के लिए एक सामान्य '+' तार तैयार किया और अलग '-' तार तैयार किए, जो ट्रांजिस्टर आईसी के माध्यम से जमीन पर जाते हैं। जब एक डेटा पिन ऊंचा हो जाता है, तो संबंधित '-' तार उसके ट्रांजिस्टर और एलईडी लाइट्स के माध्यम से ग्राउंड हो जाता है।

Arduino के डेटा पिन से सीधे '-' तारों को जोड़ने से भी काम चल जाएगा, लेकिन हमेशा ध्यान रखें कि डेटा पिन कितना चालू हो सकता है! इस दृष्टिकोण को मेरे कार्यक्रम में बदलाव की आवश्यकता होगी। मोमबत्तियों को चालू करने के लिए डेटा पिन को कम करने की आवश्यकता होगी। मेरे प्रोग्राम को यथावत उपयोग करने के लिए, आपको मोमबत्तियों में '+' और '-' स्विच करना होगा। मोमबत्तियों के लिए एक सामान्य '-' तार रखें, जो Arduino पर GND में जाता है। और अलग-अलग तार मोमबत्ती के '+' तार और Arduino के डेटा पिन के बीच चलते हैं।

चरण 4: प्रकाश कार्यक्रम

मेरा कार्यक्रम, जिसे मैं अगले चरण में प्रस्तुत करता हूं, 9 प्रकाश कार्यक्रमों से होकर गुजरता है। बटन दबाने से एक सेकंड के लिए रोशनी काली हो जाएगी, फिर निम्न प्रकाश कार्यक्रम शुरू होता है। कार्यक्रम इस प्रकार हैं:

  1. जोरदार टिमटिमाना। मोमबत्तियाँ बेतरतीब ढंग से टिमटिमाती हैं। जब आप उन्हें करीब से देखते हैं तो यह बहुत कष्टप्रद लगता है, लेकिन दूर से और शायद एक ठंढी अटारी खिड़की के पीछे से अच्छा लग सकता है। हालाँकि, आपका पड़ोसी फायर ब्रिगेड को बुला सकता है।
  2. नरम टिमटिमाना। बहुत अच्छा लग रहा है। मसौदे के बिना कमरे में असली मोमबत्तियों की तरह।
  3. टिमटिमाते हुए। मोमबत्तियाँ लगभग 30 सेकंड के अंतराल में मजबूत और नरम टिमटिमाते हुए आसानी से वैकल्पिक होती हैं।
  4. टिमटिमाते हुए। #3 की तरह, लेकिन प्रत्येक मोमबत्ती की गति 30 सेकंड और 60 सेकंड के बीच भिन्न होती है।
  5. तेज टिमटिमाना। मोमबत्तियाँ स्थिर मंद स्तर पर चमकती हैं और बेतरतीब ढंग से टिमटिमाती हैं। औसतन हर सेकेंड में एक टिमटिमाती है।
  6. धीमी टिमटिमाना। #5 की तरह, लेकिन बहुत धीमी गति से।
  7. मध्य शीर्ष मोमबत्ती से निचले वाले तक तेज लहर।
  8. मध्य शीर्ष मोमबत्ती से निचले वाले तक धीमी लहर।
  9. स्थिर उज्ज्वल प्रकाश। मुझे इसे शामिल करना था, मूल कार्य से छुटकारा नहीं पाना चाहता था।

चरण 5: कोड

/*

फ़्लिकरिंग कैंडल ब्रिज *///// राज्य को होल्ड करने के लिए मोड वेरिएबल घोषित करें // रीसेट ऑपरेशन के माध्यम से _attribute_((section(.noinit”))) unsigned int mode; // जब प्रोग्राम रीसेट के बाद शुरू होता है, तो मेमोरी का यह टुकड़ा // इनिशियलाइज़ नहीं होता है, लेकिन मान रखता है // यह रीसेट से पहले था। पहली बार // प्रोग्राम चलाया जाता है, यह एक यादृच्छिक मान रखता है। /* * मोमबत्ती वर्ग में * एक टिमटिमाती मोमबत्ती के लिए प्रकाश स्तर की गणना के लिए आवश्यक सभी चीजें होती हैं। */ क्लास कैंडल {निजी: लॉन्ग मैक्सटाइम; लंबे समय तक; लंबी मैक्सलाइट; लंबी मिनीलाइट; लंबा मतलबी; लंबे समय तक मूल अधिकतम समय; लंबा मूल समय; लंबी ऑरिग्मैक्सलाइट; लंबी उत्पत्ति; लंबी मूलमीनलाइट; लंबा डेल्टामैक्सटाइम; लंबा डेल्टा समय; लंबी डेल्टामैक्सलाइट; लंबी डेल्टामिनलाइट; लंबी डेल्टामेनलाइट; लंबे समय तक फोरेट; लंबी शाम; लंबी शुरुआत; लंबा लक्ष्य; फ्लोट फैक्टर; लंबा लक्ष्य समय; लंबी शुरुआत; लंबा डेल्टाटाइम; शून्य नया लक्ष्य (शून्य); लंबा एक लक्ष्य (शून्य); सार्वजनिक: मोमबत्ती (लंबी चटाई, लंबी मिट, लंबी मल, लंबी मिल, लंबी मेल, लंबी ईओ); लंबा स्तर अब (शून्य); शून्य initlfo(लंबी डेल्टामैट, लंबी डेल्टामिट, लंबी डेल्टामल, लंबी डेल्टामिल, लंबी डेल्टा, लंबी दर); शून्य सेटल्फो (शून्य); }; मोमबत्ती:: मोमबत्ती (लंबी चटाई, लंबी एमआईटी, लंबी मल, लंबी मिल, लंबी मेल, लंबी ईओ): मैक्सटाइम (चटाई), मिंटटाइम (एमआईटी), मैक्सलाइट (माल), मिनलाइट (मिल), मीनलाइट (मेल), इवनआउट (ईओ), ऑरिगमैक्सटाइम (मैट), ऑरिग्मिनटाइम (मिट), ऑरिग्मैक्सलाइट (माल), ऑरिग्मिनलाइट (मिल), ऑरिग्मेनलाइट (मेल) {टारगेट = मीनलाइट; नया लक्ष्य (); } /* * levelnow() मोमबत्ती का प्रकाश स्तर अभी लौटाता है। * फ़ंक्शन एक नए यादृच्छिक प्रकाश स्तर को परिभाषित करने का ध्यान रखता है और * उस स्तर तक पहुंचने में लगने वाला समय। परिवर्तन रैखिक नहीं है, * लेकिन एक सिग्मॉइड वक्र का अनुसरण करता है। जब नए * स्तर को परिभाषित करने का समय नहीं होता है, तो फ़ंक्शन केवल प्रकाश स्तर लौटाता है। */ लंबी मोमबत्ती:: लेवलनो (शून्य) { लंबी मदद, अब; फ्लोट टी 1, टी 2; अब = मिली (); अगर (अब> = लक्ष्य समय) {सहायता = लक्ष्य; नया लक्ष्य (); वापसी सहायता; } और {// मदद = लक्ष्य * (मिली () - स्टार्टटाइम) / डेल्टाटाइम + स्टार्ट * (टारगेटटाइम - मिलिस ()) / डेल्टाटाइम; t1 = फ्लोट (लक्ष्य समय - अभी) / डेल्टाटाइम; t2 = 1. - t1; // यह सिग्मॉइड गणना सहायता = t1*t1*t1*start + t1*t1*t2*start*3 + t1*t2*t2*target*3 + t2*t2*t2*target; वापसी सहायता; } } शून्य मोमबत्ती:: नया लक्ष्य (शून्य) { लंबी राशि; योग = 0; के लिए (लंबे i = 0; i <समाप्ति; i++) योग += onetarget (); प्रारंभ = लक्ष्य; लक्ष्य = योग / शाम; प्रारंभ समय = मिली (); लक्ष्य समय = प्रारंभ समय + यादृच्छिक (न्यूनतम समय, अधिकतम समय); डेल्टाटाइम = लक्ष्य समय - प्रारंभ समय; } लंबी मोमबत्ती::onetarget(void) { अगर (यादृच्छिक (0, 10) लास्टचेक + 100) { लास्टचेक = अब; /* * टिमटिमाने के लिए अल्गो "आफ्टर रेट मिलीसेकंड": * रेट / 2 मिलीसेकंड के बाद चेक करना शुरू करें * रेट / 2 मिलीसेकंड की अवधि के दौरान, * ट्विंकल की संभावना 50% करें। * यदि दर 10000 ms है, तो 5000 ms के दौरान सिक्का * 50 बार फ़्लिप किया जाता है। * १/५० = ०.०२ * यदि यादृच्छिक (१००००) प्रारंभ समय + दर / २) {अगर (यादृच्छिक (दर) लक्ष्य समय) कम रोशनी लौटाएं; रिटर्न (स्टार्ट - लोलाइट) * (टारगेटटाइम - अब) / (टारगेटटाइम - स्टार्टटाइम) + लोलाइट; } शून्य ट्विंकलर:: ट्विंक (शून्य) {स्टार्टटाइम = मिली (); लक्ष्य समय = यादृच्छिक (न्यूनतम समय, अधिकतम समय) + प्रारंभ समय; प्रारंभ = यादृच्छिक (मिनलाइट, मैक्सलाइट); } शून्य सेटअप () {इंट एलईडी; // मैजिक मोड वेरिएबल पढ़ें, जो बताना चाहिए // पिछली बार कौन सा लाइट प्रोग्राम चलाया गया था, इसे बढ़ाएं // और ओवरफ्लो होने पर शून्य पर रीसेट करें। मोड++; मोड% = 9; // यह जो कुछ भी मूल्य का ख्याल रखता है // पहली बार Arduino // ने इस कार्यक्रम को चलाया था। /* *महत्वपूर्ण नोट* ============== * * इस कार्यक्रम के लिए जो आवश्यक चीज है वह है पीडब्लूएम * सिग्नल को एलईडी लाइट्स पर आउटपुट करना। यहां मैंने पिन 3 से 9 से * आउटपुट मोड पर सेट किया है। एक Arduino Mega2560 पर, ये पिन आउटपुट * अच्छी तरह से PWM सिग्नल। यदि आपके पास एक अन्य Arduino है, तो जांचें कि आप कौन से पिन (और कितने) का उपयोग कर सकते हैं। यदि आपका Arduino * पर्याप्त हार्डवेयर PWM पिन प्रदान नहीं कर सकता है, तो आप सॉफ़्टवेयर PWM का उपयोग करने के लिए हमेशा * कोड को फिर से लिख सकते हैं। * */ पिनमोड (3, OUTPUT); पिनमोड (4, आउटपुट); पिनमोड (5, आउटपुट); पिनमोड (6, आउटपुट); पिनमोड (7, आउटपुट); पिनमोड (8, आउटपुट); पिनमोड (9, आउटपुट); पिनमोड (LED_BUILTIN, OUTPUT); एनालॉगवर्इट (LED_BUILTIN, 0); // बस Arduino मोमबत्ती पर लगे कष्टप्रद लाल को बंद करें * कर सकते हैं [7]; // टिमटिमाती मोमबत्तियों का उपयोग करने के लिए तैयार रहें, चाहे आप उनका उपयोग करें या न करें * ट्विंकल [7]; // टिमटिमाती मोमबत्तियों का उपयोग करने के लिए तैयार करें … अगर (मोड == 8) {के लिए (int i = 3; i <10; i ++) एनालॉगराइट (i, 255); जबकि (सच); // हर बार जब यह प्रोग्राम चलता है, तो यह // इस तरह के अंतहीन लूप में चला जाता है, जब तक कि रीसेट // बटन दबाया नहीं जाता है। } अगर (मोड < 2) // झिलमिलाहट {लंबा अधिकतम समय_; लंबे समय तक_; लंबी मैक्सलाइट_; लंबे minlite_; लंबे माध्यलाइट_; लंबा सम_; अगर (मोड == 0) {अधिकतम_ = २५०; न्यूनतम_ = ५०; मैक्सलाइट_ = 256; मिनिलाइट_ = 0; माध्यलाइट_ = 128; सम_ = 1; } अगर (मोड == 1) {maxtime_ = ४००; न्यूनतम समय_ = १५०; मैक्सलाइट_ = 256; मिनिलाइट_ = १००; माध्यलाइट_ = २००; सम_ = 1; } के लिए (int i = 0; i <7; i++) { can = नई मोमबत्ती(maxtime_, mintime_, maxlite_, minlite_, meanlite_,even_); } जबकि (सच) // टिमटिमाती मोमबत्तियों के लिए अंतहीन लूप { के लिए (int i = 0; i levelnow ()); } } अगर (मोड <4) // झिलमिलाहट में जोड़ा गया {if (मोड == 2) // सभी मोमबत्तियों के लिए समान lfo (30 s) { for (int i = 0; i initlfo (75, 50, 0, ५०, ३६, ३००००); } } अगर (मोड == ३) // अलग-अलग lfo:s मोमबत्तियों के लिए { for (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); can[1]->initlfo(75, 50, 0, 50, 36, 25000); can[2]->initlfo(75, 50, 0, 50, 36, 30000); can[3]->initlfo(75, 50, 0, 50, 36, 35000); कर सकते हैं [4] -> initlfo (75, 40, 0, 50, 36, 40000); कर सकते हैं [5] -> initlfo (75, 30, 0, 50, २६, ४५०००); कर सकते हैं [६] -> initlfo (७५, २०, ०, ५०, १६, ५००००); कर सकते हैं [७] -> initlfo (७५, १०, ०, ५०, ६, ५५०००); } जबकि (सच) // एक एलएफओ के साथ टिमटिमाती मोमबत्तियों के लिए अंतहीन लूप {लंबी लास्टक्लॉक = 0; के लिए (int i = 0; i levelnow ()); अगर (मिलिस ()> लास्टक्लॉक + 4000) {lastclock = मिलिस (); के लिए (int i = 0; i setlfo (); } }} if (मोड <6) // टिमटिमाती मोमबत्तियां {इंट स्पीडो; अगर (मोड == 4) स्पीडो = 6000; अन्य स्पीडो = 22000; के लिए (int i = 0; i <7; i++) ट्विंक = नया ट्विंकलर (३००, २९५, २५५, २५०, स्पीडो); जबकि (सच) { के लिए (int i = ०; मैं लेवल नाउ ()); } } // लहर की। // यह खंड घुंघराले कोष्ठक से शुरू होता है // यह सुनिश्चित करने के लिए कि कोई परस्पर विरोधी चर नाम नहीं हैं। // कोष्ठक की कोई अन्य आवश्यकता नहीं है, जाँच की कोई आवश्यकता नहीं है // मोड का मूल्य।{इंट लोलाइट = 2; इंट हिलाइट = २५५; अंतर मतलब; इंट एम्पलीफायर; फ्लोट फासेडेल्टा = २.५; फ्लोट फेस; इंट लम्बा; फ्लोट फैक्टर; लंबी अवधि; माध्य = (लोलाइट + हिलाइट) / 2; एएमपीएल = हिलाइट - माध्य; अगर (मोड == 6) अवधि = 1500; अन्य अवधि = 3500; फ़ैक्टर = ६.२८३१८५३०७१८ / अवधि; जबकि (सच) {fase = phactor * (मिलिस ()% अवधि); लम्बा = माध्य + amp * पाप (फसे); एनालॉगराइट (7, लम्बा); एनालॉगवाइट (9, लम्बा); फ़ेस = फ़ैक्टर * ((मिली () + अवधि / 4)% अवधि); लम्बा = माध्य + amp * पाप (फसे); एनालॉगवाइट (3, लम्बा); एनालॉगवर्इट (8, लम्बा); फ़ेस = फ़ैक्टर * ((मिली () + अवधि / 2)% अवधि); लम्बा = माध्य + amp * पाप (फसे); एनालॉगवर्इट (4, लम्बा); एनालॉगवर्इट (5, लम्बा); फ़ेस = फ़ैक्टर * ((मिली () + 3 * अवधि / 4)% अवधि); लम्बा = माध्य + amp * पाप (फसे); एनालॉगवर्इट (6, लम्बा); } // मोमबत्ती के तारों को Arduino से जोड़ते समय, // मैंने उन्हें मिलाया और उन्हें कभी क्रम में नहीं मिला। // तरंग पैटर्न बनाने के लिए आदेश महत्वपूर्ण है, // इसलिए मैंने अभी मेरे लिए यह छोटी तालिका लिखी है: // // मोमबत्ती # पुल में: 2 3 5 4 7 6 1 // Arduino पर डेटा पिन: 3 4 5 ६ ७ ८ ९ } } शून्य लूप () {// चूंकि प्रत्येक प्रकाश कार्यक्रम का अपना अनंत लूप होता है, // मैंने सभी छोरों को प्रारंभ () खंड // में लिखा और इस लूप () खंड के लिए कुछ भी नहीं छोड़ा। }

चरण 6: पीडब्लूएम के बारे में

3 वी के साथ संचालित होने पर एलईडी उज्ज्वल चमकते हैं। केवल 1.5 वी का उपयोग करके वे बिल्कुल भी प्रकाश नहीं करते हैं। एलईडी लाइटें लुप्त होती वोल्टेज के साथ अच्छी तरह से फीकी नहीं पड़तीं, जैसे गरमागरम रोशनी करती हैं। इसके बजाय उन्हें पूरे वोल्टेज के साथ चालू करना होगा, फिर बंद कर देना चाहिए। जब यह प्रति सेकंड ५० बार होता है, तो वे ५०% चमक के साथ अच्छी तरह से चमकते हैं, कम या ज्यादा। अगर उन्हें केवल 5 एमएस और 15 एमएस से दूर रहने की अनुमति है, तो वे 25% चमक के साथ चमक सकते हैं। यह तकनीक एलईडी लाइट को मंद करने योग्य बनाती है। इस तकनीक को पल्स चौड़ाई मॉडुलन या पीडब्लूएम कहा जाता है। Arduino जैसे माइक्रोकंट्रोलर में आमतौर पर डेटा पिन होते हैं, जो सिग्नल को चालू/बंद कर सकते हैं। कुछ डेटा पिनों ने PWM के लिए क्षमताओं का निर्माण किया है। लेकिन अगर पीडब्लूएम में निर्मित पर्याप्त पिन नहीं हैं, तो आमतौर पर "सॉफ्टवेयर पीडब्लूएम पिन" बनाने के लिए समर्पित प्रोग्रामिंग लाइब्रेरी का उपयोग करना संभव है।

अपने प्रोजेक्ट में, मैंने एक Arduino Mega2560 का उपयोग किया है, जिसमें पिन 3 - 9 पर हार्डवेयर PWM है। यदि आप Arduino UNO का उपयोग करते हैं, तो आपके पास केवल छह PWM पिन हैं। उस स्थिति में, यदि आपको 7वीं (या इससे भी अधिक) मोमबत्ती की आवश्यकता है, तो मैं ब्रेट हैगमैन के सॉफ़्टवेयर PWM लाइब्रेरी की अनुशंसा कर सकता हूं, जिसे आप यहां पा सकते हैं।

सिफारिश की: