विषयसूची:

फैंसी एलईडी हैट: 5 कदम (चित्रों के साथ)
फैंसी एलईडी हैट: 5 कदम (चित्रों के साथ)

वीडियो: फैंसी एलईडी हैट: 5 कदम (चित्रों के साथ)

वीडियो: फैंसी एलईडी हैट: 5 कदम (चित्रों के साथ)
वीडियो: Pixel led Home Decoration || S टाइप और Z टाइप की छुट्टी//Creative GS 2024, नवंबर
Anonim
Image
Image
फैंसी एलईडी टोपी
फैंसी एलईडी टोपी

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

टोपी के साथ लक्ष्य निम्नलिखित था:

  1. रोशनी का एक सेट टोपी के केंद्र के सामने से पीछे की ओर ले जाएं, प्रत्येक तरफ एक प्रकाश
  2. टोपी के आगे से पीछे की ओर झुकाव द्वारा निर्धारित प्रकाश की यात्रा की गति को बदलें
  3. हैट बैंड को नीचे की ओर झुकाए जाने पर रोशनी को उलटने दें (यानी रोशनी पर गुरुत्वाकर्षण के प्रभाव का अनुकरण करें)
  4. बाएं से दाएं टोपी के झुकाव के आधार पर रंग बदलें
  5. झटके महसूस करें, और एक विशेष प्रभाव प्रदर्शित करें
  6. पहनने वाले को कताई महसूस करें, और एक विशेष प्रभाव प्रदर्शित करें
  7. क्या यह पूरी तरह से टोपी में समाहित है

चरण 1: आवश्यक भागों

भागों की जरूरत
भागों की जरूरत
भागों की जरूरत
भागों की जरूरत
भागों की जरूरत
भागों की जरूरत

मैंने निम्नलिखित प्रमुख घटकों का उपयोग किया (गैर-संबद्ध अमेज़ॅन लिंक शामिल हैं):

  • Teensy LC माइक्रोकंट्रोलर - मैंने इसे अपने छोटे आकार के कारण नियमित Arduino पर चुना है, और इसमें मेरे एल ई डी को नियंत्रित करने के साथ-साथ मजबूत पुस्तकालय और सामुदायिक समर्थन के लिए एक विशेष कनेक्शन है।
  • बॉश BNO055 आधारित स्थितीय सेंसर - ईमानदारी से पहले में से एक मुझे प्रलेखन मिला। बहुत कम खर्चीले विकल्प हैं, हालांकि एक बार जब आप बॉश का पता लगा लेते हैं तो यह आपके लिए बहुत कुछ करता है जो आपको कोड में करना होगा
  • WS2812 पता योग्य एलईडी पट्टी - मैंने 144 एल ई डी प्रति मीटर के साथ 1 मीटर लंबाई को चुना। उस घनत्व के होने से प्रकाश को और अधिक देखने में मदद मिलती है, जैसे कि वह अलग-अलग तत्वों को क्रम से प्रकाश में लाने के बजाय आगे बढ़ रहा है।

और निम्नलिखित मामूली घटक:

  • एक टोपी - हैटबैंड वाली कोई भी टोपी करेगी। यह एक स्थानीय स्टोर से $ 6 की टोपी है। यदि इसकी पीठ में एक सीवन है तो तारों को प्राप्त करना आसान होगा। इस बात पर ध्यान दें कि क्या हैट बैंड चिपका हुआ है क्योंकि इससे कुछ अतिरिक्त कठिनाई भी होगी। यह एक शीर्ष के साथ सिल दिया जाता है, लेकिन नीचे आसानी से ऊपर खींच लिया जाता है।
  • 4.7K ओम प्रतिरोधक
  • 3x AAA बैटरी केस - 3 AAA बैटरी का उपयोग करने से ठीक उसी सीमा में वोल्टेज निकलता है, जो इलेक्ट्रॉनिक्स चाहता है, जो चीजों को सरल करता है। एएए एए की तुलना में आसान टोपी में फिट बैठता है और अभी भी बहुत अच्छा रनटाइम है।
  • छोटे गेज के तार - मैंने पिछले एलईडी प्रोजेक्ट से कुछ ठोस तार बिछाए थे।
  • सोल्डरिंग आयरन और सोल्डर
  • कुछ स्पैन्डेक्स जो टोपी और धागे के अंदर के रंग से मेल खाते हैं

सुझाया गया, लेकिन वैकल्पिक:

  • बैटरी तारों के लिए त्वरित कनेक्टर
  • हेल्पिंग हैंड्स टूल, ये चीजें बहुत छोटी हैं और मिलाप के लिए कठिन हैं

चरण 2: हैट को संशोधित करें

टोपी को संशोधित करें
टोपी को संशोधित करें
टोपी को संशोधित करें
टोपी को संशोधित करें
टोपी को संशोधित करें
टोपी को संशोधित करें
टोपी को संशोधित करें
टोपी को संशोधित करें

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

जेबों को धागे से बोया गया था जो टोपी के रंग से मेल खाता था, सभी लंबी मुकुट रेखा। टोपी और सामग्री की शैली के आधार पर यह इस तकनीक के साथ वाईएमएमवी से बना है।

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

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

चरण 3: इसे तार दें

वायर इट अप
वायर इट अप

टेन्सी बोर्ड और एलईडी बिजली के लिए 3.3v से 5v तक कहीं भी काम करेंगे। यही कारण है कि मैंने 3 एएए बैटरी का उपयोग करना चुना, 4.5 वी का आउटपुट वोल्टेज उस सीमा में अच्छी तरह से है, और जिस तरह से मैंने एल ई डी को काम करने के लिए प्रोग्राम किया है, उसके लिए उनके पास बहुत सारे रनटाइम हैं। आपको 8 घंटे से अधिक समय तक चलने में सक्षम होना चाहिए।

तारों की शक्ति

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

यदि आप ऐसे कोड चलाने की योजना बना रहे हैं जिसमें एक ही समय में केवल कुछ एलईडी चालू हैं, तो आप 3.3v आउटपुट और GND का उपयोग करके, Teensy से ही LED को पावर दे सकते हैं, हालाँकि यदि आप बहुत अधिक शक्ति खींचने का प्रयास करते हैं तो आप कर सकते हैं बोर्ड को नुकसान। तो अपने आप को सबसे अधिक विकल्प देने के लिए एल ई डी को सीधे अपने बैटरी स्रोत पर तार करना सबसे अच्छा है।

एल ई डी तारों

मैंने इस प्रोजेक्ट के लिए टेन्सी एलसी को चुना क्योंकि इसमें एक पिन है जो एड्रेसेबल एल ई डी को वायर करना बहुत आसान बनाता है। बोर्ड के निचले भाग पर पिन जो बाएं दर्पण से दूसरे स्थान पर है पिन #17, लेकिन उस पर 3.3v भी है। इसे पुल-अप के रूप में संदर्भित किया जाता है, और अन्य बोर्डों पर आपको उस वोल्टेज को प्रदान करने के लिए एक रोकनेवाला में तार लगाना होगा। टेन्सी एलसी के मामले में आप उस पिन से सीधे अपने एल ई डी डेटा वायर पर तार कर सकते हैं।

स्थिति संवेदक तारों

उपलब्ध कुछ BNO055 बोर्ड वोल्टेज पर बहुत अधिक सख्त हैं और केवल 3.3v चाहते हैं। इस वजह से, मैंने टेन्सी पर समर्पित 3.3v आउटपुट से बीएनओ055 बोर्ड पर विन को तार दिया, जो कि दाईं ओर तीसरा पिन है। फिर आप BNO055 पर GND को Teensy पर किसी भी GND से जोड़ सकते हैं।

BNO055 स्थिति सेंसर, Teensy से बात करने के लिए I2c का उपयोग करता है। I2c को पुल-अप की आवश्यकता होती है, इसलिए मैंने दो 4.7K ओम रेसिस्टर्स को टेन्सी पर 3.3v आउटपुट से 18 और 19 को पिन करने के लिए वायर्ड किया। मैंने फिर पिन 19 को BNO055 बोर्ड पर SCL पिन और 18 SDA पिन को वायर्ड किया।

वायरिंग टिप्स / ट्रिक्स

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

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

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

अब जब सब कुछ इकट्ठा हो गया है तो आपको एक Arduino संगत प्रोग्रामिंग टूल की आवश्यकता होगी। मैंने वास्तविक Arduino IDE (लिनक्स, मैक और पीसी के साथ काम करता है) का उपयोग किया। आपको टेन्सी बोर्ड के साथ इंटरफेस करने के लिए टेन्सीडुइनो सॉफ्टवेयर की भी आवश्यकता होगी। यह परियोजना एल ई डी के रंग और स्थिति प्रोग्रामिंग करने के लिए फास्टलेड लाइब्रेरी का भारी उपयोग करती है।

औजार

पहली चीज जो आप करना चाहेंगे, वह है BNO055 के लिए क्रिस विनर के उत्कृष्ट GitHub रिपॉजिटरी में जाना और उसका BNO_055_Nano_Basic_AHRS_t3.ino स्केच डाउनलोड करना। सीरियल मॉनिटर के साथ उस कोड को स्थापित करें और यह आपको बताएगा कि क्या बीएनओ055 बोर्ड ठीक से ऑनलाइन आता है और अपने स्वयं के परीक्षण पास करता है। यह आपको BNO055 को कैलिब्रेट करने में भी मदद करेगा, जो आपको बाद में अधिक सुसंगत परिणाम देगा।

फैंसी एलईडी स्केच के साथ शुरुआत करना

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

लाइन 24: #परिभाषित करें NUM_LEDS 89 - इसे अपनी एलईडी पट्टी पर एलईडी की वास्तविक संख्या में बदलें

लाइन 28: #define SERIAL_DEBUG false - आप शायद इसे सच करना चाहेंगे, ताकि आप सीरियल मॉनिटर पर आउटपुट देख सकें

स्थिति का पता लगाने वाला कोड

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

  • पिच सिर हिला रही है
  • रोल आपके सिर को झुका रहा है, उदा. अपने कान को अपने कंधे से स्पर्श करें
  • यॉ कौन सी दिशा है। आप (उत्तर, पश्चिम, आदि) का सामना कर रहे हैं।

यदि आपका बोर्ड एक अलग अभिविन्यास में आरोहित है तो आपको पिच/रोल/यॉ को स्वैप करने की आवश्यकता होगी ताकि वे व्यवहार कर सकें कि आप कैसा चाहते हैं।

रोल सेटिंग्स को समायोजित करने के लिए आप निम्नलिखित #define मानों को बदल सकते हैं:

  • ROLLOFFSET: अपनी टोपी स्थिर रखते हुए और जितना केंद्र हो सकता है, यदि रोल 0 नहीं है, तो इसे अंतर से बदलें। अर्थात। यदि आप अपनी टोपी के बीच में -20 पर रोल देख रहे हैं, तो इसे 20 बनाएं।
  • ROLLMAX: रोल माप के लिए उपयोग किया जाने वाला अधिकतम मान। टोपी पहनकर और अपने दाहिने कान को अपने दाहिने कंधे की ओर ले जाकर ढूंढना सबसे आसान है। सीरियल मॉनीटर का उपयोग करते समय ऐसा करने के लिए आपको एक लंबी USB केबल की आवश्यकता होगी।
  • रोलमिन: रोल मापन के लिए उपयोग किया जाने वाला न्यूनतम मान, जब आप अपना सिर बाईं ओर झुकाते हैं

इसी तरह, पिच के लिए:

  • MAXPITCH - अधिकतम मूल्य जब आप ऊपर देख रहे हों
  • MINPITCH - न्यूनतम मूल्य जब आप नीचे देख रहे हों
  • PITCHCENTER - जब आप सीधे आगे देख रहे हों तो पिच मान

यदि आप फ़ाइल के शीर्ष पर SERIALDEBUG को सही पर सेट करते हैं, तो आपको इन मानों को ट्वीक करने में मदद करने के लिए सीरियल मॉनीटर पर रोल/पिच/यॉ आउटपुट के लिए वर्तमान मान देखना चाहिए।

अन्य पैरामीटर जिन्हें आप बदलना चाह सकते हैं

  • MAX_LED_DELAY 35 - एलईडी कण जितना धीमा चल सकता है। यह मिलीसेकंड में है। यह स्ट्रिंग में एक एलईडी से दूसरी एलईडी तक जाने में देरी है।
  • MIN_LED_DELAY 10 - वह उपवास जिससे एलईडी कण गति कर सकता है। ऊपर के रूप में यह मिलीसेकंड में है।

निष्कर्ष

यदि आप इतनी दूर चले गए हैं, तो आपके पास पूरी तरह से कार्य करना चाहिए, और मजेदार, एलईडी टोपी होनी चाहिए! यदि आप इसके साथ और अधिक करना चाहते हैं, तो अगले पृष्ठ में सेटिंग बदलने, और अपने स्वयं के कार्य करने के बारे में कुछ उन्नत जानकारी है। साथ ही मेरा बाकी कोड क्या कर रहा है, इसके बारे में कुछ स्पष्टीकरण।

चरण 5: उन्नत और वैकल्पिक: कोड के अंदर

प्रभाव और स्पिन का पता लगाना

इम्पैक्ट/स्पिन डिटेक्शन BNO055 के हाई-जी सेंसर फंक्शंस का उपयोग करके किया जाता है। आप initBNO055() में निम्न पंक्तियों के साथ इसकी संवेदनशीलता को बदल सकते हैं:

  • लाइन #316: BNO055_ACC_HG_DURATION - इवेंट को कितने समय तक चलना है
  • पंक्ति #317: BNO055_ACC_HG_THRESH - प्रभाव कितना कठिन होना चाहिए
  • लाइन #319: BNO055_GYR_HR_Z_SET - रोटेशन स्पीड थ्रेशोल्ड
  • लाइन #320: BNO055_GYR_DUR_Z - रोटेशन को कितने समय तक चलना है

दोनों मान 8 बिट बाइनरी हैं, वर्तमान में प्रभाव B11000000 पर सेट है, जो 255 में से 192 है।

जब एक प्रभाव या स्पिन का पता लगाया जाता है तो BNO055 एक मान सेट करता है जिसे कोड लूप की शुरुआत में देखता है:

// ट्रिगर किए गए किसी भी व्यवधान का पता लगाएं, यानी उच्च G बाइट intStatus = readByte (BNO055_ADDRESS, BNO055_INT_STATUS) के कारण; अगर (इंटस्टैटस> 8) {प्रभाव (); } और अगर (इंटस्टैटस> 0) {स्पिन (); }

प्रभाव पर व्यवहार को बदलने के लिए कोड में उपरोक्त शून्य प्रभाव () रेखा की तलाश करें, या स्पिन व्यवहार को बदलने के लिए शून्य स्पिन () देखें।

सहायकों

मैंने सभी एल ई डी को एक ही रंग में जल्दी से सेट करने के लिए एक साधारण सहायक फ़ंक्शन (शून्य सेटऑल लेड्स ()) बनाया है। उन सभी को बंद करने के लिए इसका उपयोग करें:

setAllLeds (सीआरजीबी:: ब्लैक);

या आप FastLED लाइब्रेरी द्वारा मान्यता प्राप्त कोई भी रंग चुन सकते हैं:

setAllLeds (सीआरजीबी:: रेड);

एक fadeAllLeds() फ़ंक्शन भी है जो सभी एल ई डी को 25% तक मंद कर देगा।

कण वर्ग

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

/* * एल ई डी के लिए चर और कंटेनर */ सीआरजीबी एलईडी [NUM_LEDS]; स्थिर अहस्ताक्षरित int curLedDelay = MAX_LED_DELAY; स्थिर इंट सेंटरलेड = NUM_LEDS / 2; स्थिर int maxLedPos = NUM_LEDS / 2; स्थिर बूल विषम Leds = 0; स्थिर बूल कणडिर = 1; स्थिर बूल स्पीडडिर = 1; अहस्ताक्षरित लंबी डीआईआरकाउंट; अहस्ताक्षरित लंबी ह्यूकाउंट;

और सेटअप में कुछ कोड ():

अगर (NUM_LEDS% 2 == 1) { विषम एलईडी = 1; मैक्सलेडपोस = NUM_LEDS/2; } और { ऑड लेड्स = 0; मैक्सलेडपोस = NUM_LEDS/2 - 1; }

यदि हमारे पास विषम संख्याएँ हैं, तो हम 1/2 बिंदु को मध्य के रूप में उपयोग करना चाहते हैं, अन्यथा हम 1/2 बिंदु - 1 चाहते हैं। यह 10 या 11 एलईडी के साथ देखना आसान है:

  • ११ एल ई डी: ११/२ पूर्णांकों के साथ ५ का मूल्यांकन करना चाहिए और कंप्यूटरों की गिनती ० से होनी चाहिए। तो ० - ४ एक आधा है, ६ - १० दूसरा आधा है, और ५ उनके बीच है। हम इस मामले में #5 का इलाज करते हैं जैसे कि यह दोनों का हिस्सा था, यानी यह एल ई डी के दोनों आभासी तारों के लिए # 1 है
  • 10 एल ई डी: 10/2 5 है। लेकिन चूंकि कंप्यूटर 0 से गिने जाते हैं, इसलिए हमें एक को हटाना होगा। फिर हमारे पास एक आधे के लिए 0 - 4 और दूसरे के लिए 5 - 9 है। पहली वर्चुअल स्ट्रिंग के लिए #1 4 होगी, और दूसरी वर्चुअल स्ट्रिंग के लिए #1 #5 होगी।

फिर हमारे कण कोड में हमें अपनी समग्र स्थिति से एलईडी स्ट्रिंग पर वास्तविक स्थिति तक कुछ गिनती करनी होगी:

if(oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } और {Pos1 = centerLed + currPos; Pos2 = (centerLed -1) - currPos; }

कोड में ऐसी स्थितियां भी होती हैं जहां कण दिशा बदल सकता है, इसलिए हमें इसे भी ध्यान में रखना होगा:

if(particleDir) { if((currPos == NUM_LEDS/2) &&odLeds){ currPos = 0; } और अगर ((currPos == NUM_LEDS/2 - 1) && (!oddLeds)){ currPos = 0; } और { currPos++; } } और { अगर ((currPos == 0) && विषम Leds) { currPos = centerLed; } और अगर((currPos == 0) && (!oddLeds)){ currPos = centerLed - 1; } और { currPos--; } }

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

एक बार जब हम यह सब समझ लेते हैं, तो हम अगली रोशनी को आवश्यकतानुसार प्रकाशित करते हैं:

if(particleDir) {if(oddLeds) {Pos1 = centerLed + currPos; Pos2 = centerLed - currPos; } और { Pos1 = centerLed + currPos; Pos2 = (centerLed -1) - currPos; } } और { अगर (oddLeds) { Pos1 = CenterLed - currPos; Pos2 = CenterLed + currPos; } और { Pos1 = centerLed - currPos; Pos2 = (centerLed -1) + currPos; } } एल ई डी [Pos1] = CHSV (currHue, २५५, २५५); एल ई डी [Pos2] = CHSV (currHue, २५५, २५५); FastLED.शो ();}

इसे बिल्कुल एक वर्ग क्यों बनाएं? वैसे भी, यह बहुत सीधा है और वास्तव में कक्षा में होने की आवश्यकता नहीं है। हालाँकि मेरे पास एक समय में एक से अधिक कण होने की अनुमति देने के लिए कोड को अपडेट करने की भविष्य की योजना है, और कुछ रिवर्स में काम कर रहे हैं जबकि अन्य आगे बढ़ रहे हैं। मुझे लगता है कि कई कणों का उपयोग करके स्पिन का पता लगाने के लिए कुछ वाकई बहुत अच्छी संभावनाएं हैं।

सिफारिश की: