विषयसूची:
- चरण 1: इस परियोजना में प्रयुक्त चीजें
- चरण 2: हार्डवेयर कनेक्शन
- चरण 3: सॉफ्टवेयर प्रोग्रामिंग
- चरण 4: ऑपरेशन
वीडियो: क्रिसमस संगीत जयकार लाइट: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
क्रिसमस की बधाई! क्या आप एक क्रिसमस ट्री रखना चाहते हैं जो आपके साथ बातचीत कर सके?
चरण 1: इस परियोजना में प्रयुक्त चीजें
हार्डवेयर घटक
- सीडुइनो वी4.2
- बेस शील्ड V2
- ग्रोव - एडजस्टेबल पीर मोशन सेंसर
- ग्रोव - लाउडनेस सेंसर
- ग्रोव - WS2813 RGB LED स्ट्रिप वाटरप्रूफ - 60 LED/m - 1m
सॉफ़्टवेयर ऐप्स और ऑनलाइन सेवाएं
अरुडिनो आईडीई
चरण 2: हार्डवेयर कनेक्शन
पीर सेंसर, लाउडनेस सेंसर और एलईडी स्ट्रिप को बेस शील्ड के पोर्ट D2, A0 और D6 से अलग से कनेक्ट करें। सीडुइनो में प्लग बेस शील्ड, सब हो गया।
चरण 3: सॉफ्टवेयर प्रोग्रामिंग
प्रोग्रामिंग से पहले निम्नलिखित पुस्तकालयों को स्थापित करने की आवश्यकता है, कृपया उन्हें अपने Arduino IDE में मैन्युअल रूप से डाउनलोड और आयात करें:
- एलईडी स्ट्रिप
- एमएसटाइमर2
- Arduino_वेक्टर
कोड को अधिक संक्षिप्त बनाने के लिए, हमने इसे पैक किया है। चीयरलाइट वर्ग इस परियोजना का अनुप्रयोग वर्ग है।
कक्षा आवेदन:: चीयरलाइट
: सार्वजनिक अनुप्रयोग:: इंटरफ़ेस:: Iapplication {सार्वजनिक: शून्य सेटअप (शून्य); शून्य लूप (शून्य); शून्य सेटPIRSensorPin (uint8_t पिन); शून्य सेट लाउडनेस सेंसरपिन (uint8_t पिन); शून्य माप सेंसर (शून्य); शून्य परिवर्तनएनीमेशन (शून्य * तर्क); शून्य परिवर्तन गति (शून्य * तर्क); शून्य परिवर्तन रंग (शून्य * तर्क); स्थिर अनुप्रयोग:: चीयरलाइट * getInstance (शून्य); संरक्षित: ड्राइवर:: LEDStrip _ledStrip; ड्राइवर::PIRSensor _pirSensor; ड्राइवर:: लाउडनेस सेंसर _loudnessSensor; uint8_t _एनीमेशन; मिडलवेयर:: प्रतिनिधि _detectedDelegate; मिडलवेयर:: प्रतिनिधि _absoluteLoudnessDelegate; मिडलवेयर:: डेलिगेट _relativeLoudnessDelegate; चीयरलाइट (शून्य); स्थिर अनुप्रयोग:: चीयरलाइट _instance; };
CheerLight वर्ग को सिंगलटन पैटर्न द्वारा डिज़ाइन किया गया था, जिसका अर्थ है कि इसके लिए केवल एक उदाहरण है, आप उस उदाहरण के लिए CheerLight::getInstance() को कॉल कर सकते हैं। यदि आपके सेंसर का कनेक्शन हार्डवेयर कनेक्शन से भिन्न है, तो आप उन्हें setPIRSensorPin() और setLoudnessSensorPin() विधियों को कॉल करके बदल सकते हैं।
हम सेंसर को समय पर मापने के लिए टाइमर इंटरप्ट में कॉल मेजर सेंसर () विधि की सलाह देते हैं, लेकिन चेंजएनीमेशन (), चेंजस्पीड () या चेंजकलर () विधियों को मैन्युअल रूप से कॉल करना आवश्यक नहीं है। सेंसर मापे जाने पर उन्हें डेलिगेट्स के माध्यम से बुलाया जाएगा।
एक प्रतिनिधि क्या है?
जैसा कि हम सभी जानते हैं, हम एक फ़ंक्शन पॉइंटर घोषित कर सकते हैं और इसे C में किसी फ़ंक्शन को इंगित कर सकते हैं:
शून्य func1 (शून्य);
शून्य (*pFunc)(शून्य) = func1;
और उस फ़ंक्शन को कॉल करने के लिए इसका उपयोग करें जो इसे इंगित करता है
पीएफएनसी ();
लेकिन सी ++ में अंतर हैं, यदि आप नीचे दिए गए कोड को संकलित करने का प्रयास करते हैं:
कक्षा {
सार्वजनिक: शून्य func1 (शून्य); }; शून्य (*pFunc)(शून्य) = &A::func1;
संकलक एक प्रकार की रूपांतरण त्रुटि की रिपोर्ट करेगा, यहाँ सही उदाहरण है:
शून्य (ए:: * पीफनक) (शून्य) = और ए:: func1;
जब हम उस विधि को कॉल करने के लिए इसका उपयोग करने का प्रयास करते हैं, तो त्रुटि फिर से होती है। उस त्रुटि का कारण यह है कि किसी ऑब्जेक्ट द्वारा ऑब्जेक्ट-विधि को कॉल किया जाना चाहिए। इसलिए हम इसे कॉल करने के लिए एक ऑब्जेक्ट बनाते हैं:
ए ए;
ए। * पीफनक ();
इस बार कोई दिक्कत नहीं है। तो Delegate.h में प्रतिनिधि वर्ग है।
टेम्पलेट
क्लास मिडलवेयर:: प्रतिनिधि: सार्वजनिक मिडलवेयर:: इंटरफ़ेस:: आईडीलेगेट {सार्वजनिक: प्रतिनिधि (टी * ऑब्जेक्ट, शून्य (टी:: * विधि) (शून्य *)); शून्य आह्वान (शून्य * तर्क); संरक्षित: टी * _ऑब्जेक्ट; शून्य (टी:: * _ विधि) (शून्य *); }; टेम्पलेट इनलाइन मिडलवेयर:: प्रतिनिधि:: प्रतिनिधि (टी * वस्तु, शून्य (टी:: * विधि) (शून्य *)): _ वस्तु (वस्तु), _ विधि (विधि) { } टेम्पलेट इनलाइन शून्य मिडलवेयर:: प्रतिनिधि:: आह्वान (शून्य * args) {(_object->*_method)(args); }
क्योंकि प्रतिनिधि वर्ग एक टेम्पलेट वर्ग है, जिसका अर्थ है कि प्रतिनिधि प्रतिनिधि के लिए अंतर है, उन्हें सूचक द्वारा कैसे इंगित किया जाए, एक ही प्रकार है? उत्तर इंटरफ़ेस है, इसलिए IDelegate.h में IDelegate इंटरफ़ेस है।
क्लास मिडलवेयर:: इंटरफ़ेस:: आईडीलेगेट {
सार्वजनिक: आभासी शून्य आह्वान (शून्य * तर्क) = 0; };
पीर सेंसर और लाउडनेस सेंसर की कक्षा में, _delegates नाम का एक वेरिएबल होता है जिसका उपयोग डेलिगेट्स के पॉइंटर को स्टोर करने के लिए किया जाता है, और एक विधि होती है जिसका नाम invokeAllDelegates() होता है जिसका उपयोग _delegates में सभी डेलिगेट्स को इनवाइट करने के लिए किया जाता है, इसे माप () विधि में कहा जाएगा।
नोट: डेलिगेट विधियाँ, जैसे कि चेंजएनीमेशन (), चेंजस्पीड () और चेंजकलर () को टाइमर २ इंटरप्ट में कहा जाएगा, इसलिए इसमें देरी () या अन्य इंटरप्ट-आधारित फ़ंक्शन का उपयोग न करें।
सिफारिश की:
क्रिसमस लाइट शो संगीत के साथ सिंक्रनाइज़!: 4 कदम
क्रिसमस लाइट शो संगीत के लिए सिंक्रनाइज़ !: इस निर्देश में, मैं आपको दिखाने जा रहा हूं कि आरजीबी पिक्सेल का उपयोग करके क्रिसमस संगीत के लिए क्रिसमस लाइट शो को कैसे सिंक्रनाइज़ किया जाए। उस नाम को आपको डराने मत दो! यह कैसे करना है यह सीखना बहुत कठिन नहीं है। हालांकि मैं आपको चेतावनी दूंगा कि यह काफी हो सकता है
DIY स्वचालित संगीत क्रिसमस लाइट्स (MSGEQ7 + Arduino): 6 कदम (चित्रों के साथ)
DIY स्वचालित संगीत क्रिसमस लाइट्स (MSGEQ7 + Arduino): इसलिए हर साल मैं कहता हूं कि मैं ऐसा करने जा रहा हूं और इसे करने के लिए कभी भी आस-पास नहीं हूं क्योंकि मैं बहुत विलंब करता हूं। 2020 बदलाव का साल है इसलिए मैं कहता हूं कि यह ऐसा करने का साल है। तो आशा है कि आप पसंद करेंगे और अपनी खुद की संगीतमय क्रिसमस लाइट्स बनाएंगे। यह एक एस होने जा रहा है
ब्रीदिंग क्रिसमस ट्री - अरुडिनो क्रिसमस लाइट कंट्रोलर: 4 कदम
ब्रीदिंग क्रिसमस ट्री - अरुडिनो क्रिसमस लाइट कंट्रोलर: यह अच्छी खबर नहीं है कि क्रिसमस से पहले मेरे 9-फीट प्री-लिट कृत्रिम क्रिसमस ट्री का कंट्रोल बॉक्स टूट गया, और निर्माता प्रतिस्थापन भागों को प्रदान नहीं करता है। यह अचूक दिखाता है कि कैसे अपने खुद के एलईडी लाइट ड्राइवर और नियंत्रक का उपयोग Ar
हॉल इफेक्ट सेंसर: क्रिसमस संगीत बॉक्स: 4 कदम
हॉल इफेक्ट सेंसर: क्रिसमस म्यूजिक बॉक्स: यह एक म्यूजिक बॉक्स है जो एक बार ओपन होने पर म्यूजिक बजाता है (वीडियो देखें!) अपने किसी खास व्यक्ति के लिए अपने उपहारों को लपेटने का यह शानदार, विशेष और अनूठा तरीका है! यह जांचने के लिए हॉल इफेक्ट सेंसर का उपयोग करता है कि चुंबकीय क्षेत्र की कमी से ढक्कन खोला गया है या नहीं
क्रिसमस-बॉक्स: Arduino/ioBridge इंटरनेट नियंत्रित क्रिसमस लाइट्स और संगीत शो: 7 कदम
क्रिसमस-बॉक्स: Arduino/ioBridge इंटरनेट नियंत्रित क्रिसमस लाइट्स और संगीत शो: मेरे क्रिसमस-बॉक्स प्रोजेक्ट में एक इंटरनेट नियंत्रित क्रिसमस लाइट्स और संगीत शो शामिल हैं। एक क्रिसमस गीत का ऑनलाइन अनुरोध किया जा सकता है जिसे बाद में एक कतार में रखा जाता है और उस क्रम में बजाया जाता है जिस क्रम में इसका अनुरोध किया गया था। संगीत एक FM स्टेट पर प्रसारित होता है