विषयसूची:

दस्तकारी अरुडिनो-संचालित आरजीबी मूडलैम्प: 7 कदम
दस्तकारी अरुडिनो-संचालित आरजीबी मूडलैम्प: 7 कदम

वीडियो: दस्तकारी अरुडिनो-संचालित आरजीबी मूडलैम्प: 7 कदम

वीडियो: दस्तकारी अरुडिनो-संचालित आरजीबी मूडलैम्प: 7 कदम
वीडियो: arduino for kids how to make your own hand sanitizer machine using arduino 2024, जुलाई
Anonim
दस्तकारी Arduino- संचालित RGB मूडलैम्प
दस्तकारी Arduino- संचालित RGB मूडलैम्प
दस्तकारी Arduino- संचालित RGB मूडलैम्प
दस्तकारी Arduino- संचालित RGB मूडलैम्प

यह निर्देश 5 भागों में विभाजित है: - निर्माण की योजना बनाना (चरण 1) - हस्तनिर्मित छाया (चरण 2 + 3) - ATmega8 नियंत्रक के साथ 3W एलईडी चलाने के लिए इलेक्ट्रॉनिक सर्किट (चरण 4) - कोड (चरण 5) - इसे कैसे प्राप्त करें स्टैंड-अलोन (PonyProg के साथ Arduino बूटलोडर को फ्लैश करें और स्केच को बर्न करें) (Step6) जल्द ही आ रहा है Vid: कुछ इंप्रेशन

de.youtube.com/watch?v=apZ9NpaUG84 Pic1: मूडलैम्प Pic2: एक शक्तिशाली 3W एलईडी

चरण 1: निर्माण की योजना बनाना:

निर्माण की योजना बनाना
निर्माण की योजना बनाना
निर्माण की योजना बनाना
निर्माण की योजना बनाना

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

चरण 2: हस्तनिर्मित छाया

हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया

सामग्री इकट्ठा करना: छाया: मुझे स्टोर पर 30 मिल प्लास्टिक की 3 फुट x 3 फुट की शीट मिली (Pic1-3)। इसे काटने के लिए एक तेज चाकू का उपयोग करें। मैंने सैंडपेपर (Pic4-6) का उपयोग करके प्लास्टिक को फ्रॉस्ट किया। एक चिकना सिलेंडर प्राप्त करें मैंने सही छेद (Pic7-8) ड्रिल करने के बाद इसे एक साथ खराब कर दिया। थ्रेडेड पीतल के समर्थन पर प्लास्टिक के रंगों को माउंट करें। यह अच्छी तरह से दिखता है और इसे प्राप्त करना और संभालना आसान है। मैंने 1/8 वीं थ्रेडेड बार (Pic9-10) से मिलान करने के लिए छेदों को ड्रिल और टैप किया। इस बीच, मैंने 3W एलईडी को ठंडा करने और एक ठोस आधार रखने के लिए एक हीटसिंक बनाया। शाफ्ट से बहुत अधिक रंग नहीं प्राप्त करने के लिए, मैं वेल्डिंग रॉड से एक छोटे से पिंजरे का निर्माण करता हूं, जिसके ऊपर M8 नट होता है (Pic12)। समाप्त होने पर मैंने सभी को एक साथ इकट्ठा किया। छोटे पेंच और नट थोड़े मुश्किल थे, लेकिन 30 मिनट बाद मैंने इसे पूरा कर लिया।

चरण 3: हस्तनिर्मित छाया

हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया
हस्तनिर्मित छाया

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

चरण 4: इलेक्ट्रिक सर्किट:

इलेक्ट्रिक सर्किट
इलेक्ट्रिक सर्किट
इलेक्ट्रिक सर्किट
इलेक्ट्रिक सर्किट
इलेक्ट्रिक सर्किट
इलेक्ट्रिक सर्किट

पहली तस्वीर में आप मेरी योजना देख सकते हैं। और ये रहा एक और वीडियो:https://de.youtube.com/watch?v=xkiYzQAYf_A&NR=1

चरण 5: कोड:

कोड
कोड
कोड
कोड
कोड
कोड

तस्वीरों पर आप Arduino के साथ मेरी प्रक्रिया देखते हैं। सबसे पहले मैंने अपने स्वयं के बने प्रोटोशील्ड, एक बैटरी पैक और कुछ प्रकार के एल ई डी के साथ कोशिश की। मैंने कुछ महीने पहले टोडेकर्ट द्वारा "स्पूकी प्रोजेक्ट्स" और "बायोनिकअर्डिनो" के साथ शुरुआत की। https://todbot.com/blog/spookyarduino/My कोड है उनके प्रोजेक्ट कोड का एक मुश्किल संयोजन। "RGBMoodlight", "RGBPotMixer" और कुछ एक्सटेंशन। मोड स्विच के रूप में तीन एनालॉग-इन और एक डिजिटल-इन (इंटरप्ट-रूटीन के लिए Ju. का धन्यवाद:)। एलईडी जुड़े हुए हैं D9, D10 और D11 के लिए जो PulseWithModulation का समर्थन करते हैं। यदि आप चाहें, तो मैं स्केच प्रकाशित कर सकता हूं, लेकिन यह वास्तव में इन दो महान कोडों का एक बहुत ही दुर्लभ संयोजन है। दीपक का मेरा मूल कोड यहां है। यह थोड़ा गन्दा लग रहा है, क्योंकि यह मेरा था प्रोग्रामिंग में बहुत प्रारंभिक चरण … लेकिन अगर आप इसे कॉपी करते हैं, तो इसे बहुत अच्छा काम करना चाहिए। "पॉटकोलरमिक्सर", "आरजीबीफैडिंग फंक्शन" और मोड-स्विच के लिए इंटरप्ट-रूटीन जैसी अच्छी शांति हैं।/* nejo June2008

क्ले शिर्की द्वारा "डिमिंगएलईडी" पर आधारित मेरे "मूडलैंप" के लिए कोड

*नेजो सितम्बर 2008

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

*नेजो अक्टूबर2008

  • मूडलैम्प के लिए ध्वनि-विस्तार:
  • एक छोटा LM368 Amp, एक पुनरावर्तक और एक RC-लो-पास-फ़िल्टर के साथ एक कंडेनसर माइक्रोफ़ोन
  • एक अन्य एनालॉग इनपुट के साथ मैं माइक-सिग्नल प्राप्त करके रंग बदलने के लिए RGBPotMixer-function का उपयोग करता हूं।

* * *पीडब्लूएम का उपयोग करते हुए 3 एल ई डी, लाल, हरा और नीला, या एक तिरंगा एलईडी के लिए कोड

  • कार्यक्रम धीरे-धीरे लाल से हरे, हरे से नीले और नीले से लाल रंग में बदल जाता है
  • डिबगिंग कोड Arduino 0004 मानता है, क्योंकि यह नए Serial.begin()-style फ़ंक्शन का उपयोग करता है
  • क्ले शिर्की द्वारा मूल रूप से "डिमिंगएलईडी"

*

  • आरजीबी लुप्त होती गति को बदलने के लिए पिन ए0 पर एनालॉग रीड सक्षम है
  • रंग बदलने के लिए पिन A2 पर AnalogRead सक्षम किया गया हैRGB रंग

* * */#शामिल करें // आउटपुट लेडपिन = 13; // डिबगिंग के लिए कंट्रोलपिन रेडपिन = 9; // लाल एलईडी, डिजिटल पिन 9int ग्रीनपिन = 10 से जुड़ा; // ग्रीन एलईडी, डिजिटल पिन से जुड़ा 10int ब्लूपिन = 11; // ब्लू एलईडी, डिजिटल पिन से जुड़ा 11int dimredPin = 3; // ट्रांजिस्टर ड्राइवर से जुड़े एनालॉग डिमिंग वैल्यू के लिए पिन, डिमग्रीनपिन = 5; इंट डिमब्लूपिन = 6; // इनपुटिंट स्विचपिन = 2; // स्विच पिन D2int वैल = 0 से जुड़ा है; // पिन स्टेटसिंट बटनस्टेट पढ़ने के लिए चर; // वेरिएबल बटन को होल्ड करने के लिए स्टेटिंट बटनप्रेस = 0; // 3 प्रेस जाने के लिए! int potPin0 = 0; // मूडलैम्प में लुप्त होने के बीच देरी को समायोजित करने के लिए पॉट; इंट पॉटपिन२ = २; // ह्यूआरजीबी कलरिंट पॉटवैल = 0 को बदलने के लिए पोटेंशियोमीटर आउटपुट; // पोटेंशियोमीटरिंट मैक्सवैल = 0 से इनपुट को स्टोर करने के लिए वैरिएबल; // डिमिंग फैक्टर डिफॉल्ट को बचाने के लिए मान 255 है, अगर कोई पॉट जुड़ा नहीं है, तो डिमपिन = 4; // ब्राइटनेस को कम करने के लिए A4 से जुड़ा पॉट // प्रोग्राम वेरिएबल्सint redVal = 255; // पिन्सिंट ग्रीनवैल = 1 को भेजने के लिए मूल्यों को संग्रहीत करने के लिए चर; // प्रारंभिक मान रेड फुल, ग्रीन और ब्लू ऑफिंट ब्लूवैल = 1;int i = 0; // लूप काउंटर इंट वेट;// = 15; // 50ms (.05 सेकंड) देरी; तेज़ फ़ेडसिंट k = 0 के लिए छोटा करें; // ब्लिंक-फंक्शन में कंट्रोल एलईडी के लिए मान DEBUG = 0; // डीबग काउंटर; यदि 1 पर सेट किया जाता है, तो सीरियलिंट एलसीडी = 0 के माध्यम से मान वापस लिखेंगे; // एलसीडी काउंटर; यदि 1 पर सेट किया जाता है, तो सीरियलवॉइड सेटअप () {पिनमोड (ledPin, OUTPUT) के माध्यम से मान वापस लिखेंगे; पिनमोड (रेडपिन, आउटपुट); // पिन को आउटपुट पिनमोड (ग्रीनपिन, OUTPUT) के रूप में सेट करता है; पिनमोड (ब्लूपिन, आउटपुट); पिनमोड (dimredPin, OUTPUT); पिनमोड (डिमग्रीनपिन, आउटपुट); // पिन को आउटपुट पिनमोड (dimbluePin, OUTPUT) के रूप में सेट करता है; पिनमोड (पोटपिन 2, इनपुट); // पिनमोड (potPin0, INPUT); // पिनमोड (डिमपिन, इनपुट); // पिनमोड (स्विचपिन, इनपुट); // स्विच पिन को इनपुट अटैचइंटरप्ट (0, isr0, RISING) के रूप में सेट करें; if (DEBUG) {// यदि हम डिबगिंग के लिए पिन मान देखना चाहते हैं… Serial.begin(9600); // … 0004 स्टाइल पर सीरियल आउटपुट सेट करें}}// मेन प्रोग्रामवॉइड लूप () {अगर (बटनप्रेस == 0) {मूडलैंप (); // मूडलाइट फ़ंक्शन को कॉल करता है} अगर (बटनप्रेस == 1) {RGBPotMixer (); // मैनुअल मिक्स फंक्शन को कॉल करता है} अगर (बटनप्रेस == 2) {व्हाइट (); // यहां सब सफेद है } अगर (बटनप्रेस == 3) { } // मूडलैम्प (); // RGBPotMixer (); //सफेद(); मॉनिटर (); मंद ();} शून्य मॉनिटर () {// राज्य को मॉनिटर को भेजें अगर (DEBUG) {// यदि हम आउटपुट DEBUG + = 1 पढ़ना चाहते हैं; // DEBUG काउंटर बढ़ाएँ अगर (DEBUG> 10) {// हर 10 लूप DEBUG = 1 प्रिंट करें; // काउंटर सीरियल को रीसेट करें। प्रिंट (i); // 0004 स्टाइल में सीरियल कमांड Serial.print("\t"); // एक टैब प्रिंट करें Serial.print("R:"); // इंगित करें कि आउटपुट लाल मान Serial.print(redVal) है; // प्रिंट लाल मान सीरियल.प्रिंट ("\ t"); // एक टैब प्रिंट करें Serial.print("G:"); // हरे और नीले रंग के लिए दोहराएं … सीरियल.प्रिंट (ग्रीनवैल); सीरियल.प्रिंट ("\ t"); सीरियल.प्रिंट ("बी:"); सीरियल.प्रिंट (ब्लूवैल); // println, कैरिज रिटर्न Serial.print("\t"); के साथ समाप्त करने के लिए; सीरियल.प्रिंट ("डिमवैल्यू:"); सीरियल.प्रिंट (मैक्सवैल); // println, कैरिज रिटर्न Serial.print("\t"); के साथ समाप्त करने के लिए; सीरियल.प्रिंट ("प्रतीक्षा करें:"); सीरियल.प्रिंट (प्रतीक्षा); // मॉनिटर सीरियल.प्रिंट ("\ t") के लिए potPin0 का मान लिखता है; सीरियल.प्रिंट ("ह्यूआरजीबी वैल्यू"); सीरियल.प्रिंट (पोटवैल); // मॉनिटर सीरियल.प्रिंट ("\ t") के लिए potPin0 का मान लिखता है; सीरियल.प्रिंट ("बटनस्टेट:"); सीरियल.प्रिंट (बटनस्टेट); // मॉनिटर सीरियल.प्रिंट ("\ t") के लिए potPin0 का मान लिखता है; सीरियल.प्रिंट ("बटनप्रेस:"); Serial.println (बटनप्रेस); // मॉनिटर को बटन प्रेस का मान लिखता है } }} शून्य डिम () // व्हाइट डिमिंग के लिए फंक्शन // शायद बाद में सभी मोड के लिए {maxVal = analogRead (dimPin); मैक्सवैल / = 4; // 0..1024 से एनालॉग रेंज 0..255 मान एनालॉगवाइट (dimredPin, maxVal) को कम करने के लिए बहुत अधिक है; AnalogWrite (dimgreenPin, maxVal); AnalogWrite (dimbluePin, maxVal);} शून्य मूडलैम्प () {प्रतीक्षा = एनालॉग रीड (पोटपिन 0); // potPin0 से मान की तलाश करें; // यदि कोई पॉट जुड़ा नहीं है: 255 i + = 1 प्रतीक्षा करें; // वेतन वृद्धि काउंटर // i = i - maxVal; अगर (i <255) // फीका का पहला चरण { redVal -= 1; // रेड डाउन ग्रीनवैल + = 1; // ग्रीन अप ब्लूवैल = 1; // नीला कम } और अगर (i <509) // फीका का दूसरा चरण {redVal = 1; // लाल कम हरा वैल - = 1; // ग्रीन डाउन ब्लूवैल + = 1; // ब्लू अप} और अगर (i <763) // फीका का तीसरा चरण {रेडवैल + = 1; // रेड अप ग्रीनवैल = 1; // ग्रीन लो२ ब्लूवैल -= १; // ब्लू डाउन } और // काउंटर को फिर से सेट करें, और फेड को फिर से शुरू करें {i = 1;) // एलईडी पिन एनालॉग्राइट (ग्रीनपिन, 255 - ग्रीनवैल) के लिए वर्तमान मान लिखें; एनालॉगवर्इट (ब्लूपिन, 255 - ब्लूवैल); /* dimredVal =min(redVal - maxVal, 255); // डिमिंग डिमरेडवैल = मैक्स (रेडवैल - मैक्सवेल, 0); डिमग्रीनवैल = मिनट (ग्रीनवैल - मैक्सवैल, 255); डिमग्रीनवैल = मैक्स (ग्रीनवैल - मैक्सवेल, 0); dimbblueVal =min(blueVal - maxVal, 255); dimbblueVal =max(blueVal - maxVal, 0); एनालॉगवर्इट (रेडपिन, 255 - डिमरेडवैल); // एलईडी पिन एनालॉग्राइट (ग्रीनपिन, 255 - डिमग्रीनवैल) के लिए वर्तमान मान लिखें; एनालॉगवर्इट (ब्लूपिन, 255 - डिमब्लूवैल); */ प्रतीक्षा करें /=4; देरी (प्रतीक्षा); // लूप को फिर से शुरू करने से पहले 'प्रतीक्षा' मिलीसेकंड के लिए रोकें} RGBPotMixer () को शून्य करें {potVal = analogRead (potPin2); // इनपुट पिन पर पोटेंशियोमीटर मान पढ़ें potVal = potVal / 4; // 0-1023 से 0-255 ह्यू_टो_आरजीबी (पोटवैल) में बदलें; // पॉटवैल को ह्यू के रूप में मानें और आरजीबी वैल में कनवर्ट करें // "255-" क्योंकि हमारे पास कॉमन-एनोड एलईडी हैं, न कि कॉमन-कैथोड एनालॉगवाइट (रेडपिन, 255-रेडवैल); // एलईडी पिन एनालॉग्राइट (ग्रीनपिन, 255-ग्रीनवैल) के लिए मान लिखें; एनालॉगवर्इट (ब्लूपिन, 255-ब्लूवैल); } शून्य सफेद () {एनालॉगवाइट (रेडपिन, मैक्सवैल); // एलईडी पिन एनालॉग्राइट (ग्रीनपिन, मैक्सवेल) के लिए मान लिखें; एनालॉगवर्इट (ब्लूपिन, मैक्सवैल); }/*

  • एक परिवर्तनीय रंग 'एच' दिया गया है, जो 0-252 से है,
  • RGB रंग मान उचित रूप से सेट करें।
  • अधिकतम मान्य संतृप्ति और अधिकतम मूल्य (चमक) मानता है
  • विशुद्ध रूप से पूर्णांक गणित करता है, कोई फ़्लोटिंग पॉइंट नहीं।

*/शून्य ह्यू_टो_आरजीबी (बाइट ह्यू) { अगर (ह्यू> 252) ह्यू = 252; // २५२ पर वापस लौटें !! नेजो बाइट एचडी = ह्यू / 42; // ३६ == २५२/७, २५२ == एच_मैक्स बाइट हाय = एचडी% ६; // 0-5 बाइट f = ह्यू% 42 देता है; बाइट एफएस = एफ * 6; स्विच (हाय) {केस 0: रेडवैल = 252; ग्रीनवैल = एफएस; ब्लूवैल = 0; टूटना; केस 1: रेडवैल = २५२-एफएस; ग्रीनवैल = २५२; ब्लूवैल = 0; टूटना; केस 2: रेडवैल = 0; ग्रीनवैल = २५२; ब्लूवैल = एफएस; टूटना; केस 3: रेडवैल = 0; ग्रीनवैल = २५२-एफएस; ब्लूवैल = २५२; टूटना; केस 4: रेडवैल = एफएस; ग्रीनवैल = 0; ब्लूवैल = २५२; टूटना; केस 5: रेडवैल = २५२; ग्रीनवैल = 0; ब्लूवैल = २५२-एफएस; टूटना; } } शून्य isr0 () { Serial.println ("\ n / n निष्क्रिय / n"); बटनस्टेट = डिजिटलरेड (स्विचपिन); // प्रारंभिक राज्य देरी माइक्रोसेकंड (100000) पढ़ें; // अगर (वैल! = बटनस्टेट) {// बटन की स्थिति बदल गई है! // अगर (बटनस्टेट == हाई) {// जांचें कि क्या बटन अब बटन दबाया गया है या नहीं। // } // वैल = बटनस्टेट; // हमारे वेरिएबल में नया स्टेट सेव करें if (buttonPresses == 3) {//zur cksetzen buttonPresses = 0; } } // }अगले चरण में ट्रांजिस्टर-चालक थे। मैंने 3 एम्पियर पर अधिकतम करंट वाले 3 पीएनपी ट्रांजिस्टर का उपयोग किया। फॉरवर्ड-करंट और वोल्टेज को विनियमित करने के बाद, एलईडीमीटर ने पूरी तीव्रता के साथ बहुत अच्छा काम किया।

चरण 6: इसे पोनीप्रोग-बर्न बूटलोडर के साथ स्टैंडअलोन प्राप्त करें

इसे पोनीप्रोग-बर्न बूटलोडर के साथ स्टैंडअलोन प्राप्त करें
इसे पोनीप्रोग-बर्न बूटलोडर के साथ स्टैंडअलोन प्राप्त करें

arduino पर्यावरण के साथ एक सस्ते रिक्त चिप का उपयोग करने के लिए ATmega168 या ATmega8 पर arduino बूटलोडर को जलाने के लिए अपने पैरेलल पोर्ट का उपयोग कैसे करें। जल्द ही आ रहा है….. /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

चरण 7: तो वह मेरा Arduino मूडलैम्प है

तो वह मेरा Arduino मूडलैम्प है
तो वह मेरा Arduino मूडलैम्प है

अगर आपको यह पसंद आया तो कृपया मुझे रेट करें।

सिफारिश की: