विषयसूची:

DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट एकीकृत सिग्नल के साथ: 4 कदम (चित्रों के साथ)
DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट एकीकृत सिग्नल के साथ: 4 कदम (चित्रों के साथ)

वीडियो: DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट एकीकृत सिग्नल के साथ: 4 कदम (चित्रों के साथ)

वीडियो: DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट एकीकृत सिग्नल के साथ: 4 कदम (चित्रों के साथ)
वीडियो: 5 Sites para ter Ideias Diárias para TCC com Arduino 2024, नवंबर
Anonim
Image
Image
एकीकृत सिग्नल के साथ DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट
एकीकृत सिग्नल के साथ DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट
एकीकृत सिग्नल के साथ DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट
एकीकृत सिग्नल के साथ DIY Givi V56 मोटरसाइकिल टॉपबॉक्स लाइट किट

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

यह प्रणाली कैसे काम करती है, इसका मूल संचालन Arduino इकाई पिन पर संकेतों की तलाश करती है: ब्रेक लाइट, लेफ्ट टर्न लाइट और राइट टर्न लाइट। मोटरसाइकिल से 12 वोल्ट के सिग्नल को पढ़ने के लिए, मैंने 12V सिग्नल को 5V सिग्नल में बदलने के लिए ऑप्टोइसोलेटर्स का इस्तेमाल किया, जिसे Arduino पढ़ सकता है। कोड तब इनमें से किसी एक सिग्नल की प्रतीक्षा करता है और फिर FastLED लाइब्रेरी का उपयोग करके कमांड को LED स्ट्रिप पर आउटपुट करता है। यही मूल बातें हैं, अब विवरण में जाना है।

आपूर्ति

ये वे चीजें हैं जिनका मैंने उपयोग किया क्योंकि अधिकांश भाग के लिए मैं पहले से ही उनके पास पड़ा हुआ था। जाहिर है, उन्हें आवश्यकतानुसार बदला जा सकता है:

  1. Arduino - मैंने आकार के विचार के लिए एक नैनो का उपयोग किया है, लेकिन जब तक आपके पास उपयोग करने के लिए पाँच पिन हैं, तब तक आप जो चाहें उसका उपयोग कर सकते हैं।
  2. 5V नियामक - मैंने एक L7805CV का उपयोग किया जो 1.5 amps में सक्षम था। यह परियोजना एलईडी के लिए 0.72 amps और नैनो के लिए शक्ति का उपयोग करेगी, इसलिए 1.5 इस परियोजना के लिए बहुत अच्छा काम करता है।
  3. कैपेसिटर - वोल्टेज नियामक को ठीक से संचालित करने के लिए आपको एक 0.33 यूएफ और एक 0.1 यूएफ की आवश्यकता होगी।
  4. 3x ऑप्टोइसोलेटर - 12V से 5V तक सिग्नल रूपांतरण करने के लिए। मैंने PC817X प्रकार का उपयोग किया जिसमें केवल चार पिन होते हैं जिनकी हमें आवश्यकता होती है।
  5. प्रतिरोधों - आपको दो प्रकार की आवश्यकता होगी, प्रत्येक प्रकार के तीन। ऑप्टोइसोलेटर आईआर एलईडी के माध्यम से करंट को कम करने के लिए सबसे पहले पर्याप्त होना चाहिए। आपको कम से कम 600 ओम की आवश्यकता होगी, लेकिन मोटरसाइकिल पर बदलते वोल्टेज को संभालने के लिए 700 एक बेहतर विचार होगा। ऑप्टोइसोलेटर के दूसरी तरफ एक त्वरित संकेत के लिए दूसरे को 10k और 20k के बीच कहीं होना चाहिए।
  6. प्रोटोटाइप बोर्ड - मेरे पास कुछ ऐसे थे जो एक छोटे से प्रोजेक्ट बॉक्स के अंदर फिट होने के लिए काफी छोटे थे, जिसमें थोड़ी सी ट्रिमिंग थी।
  7. प्रोजेक्ट बॉक्स - घटकों को फिट करने के लिए काफी बड़ा है, लेकिन फिट करने में आसान होने के लिए काफी छोटा है।
  8. तार - मैंने कैट 6 ईथरनेट तार का इस्तेमाल किया क्योंकि मेरे पास इसमें बहुत कुछ बैठा था। इसमें आठ तार सभी रंग कोडित हैं जो सभी अलग-अलग कनेक्शनों के साथ मदद करते हैं और वर्तमान ड्रॉ को संभालने के लिए एक बड़ा पर्याप्त गेज था।
  9. प्लग - कहीं भी आप चाहते हैं कि सिस्टम आसानी से हटाने योग्य हो। मैंने टॉप बॉक्स को हटाने और उस पर पड़ने वाली किसी भी बारिश या पानी को संभालने के लिए वाटरप्रूफ प्लग का इस्तेमाल किया। मुझे एलईडी स्ट्रिप्स के लिए छोटे प्लग की भी आवश्यकता थी, इसलिए मुझे बड़े छेद नहीं करने पड़े।
  10. जिप टाई और जिप टाई एडहेसिव माउंट सब कुछ जगह पर रखने के लिए।
  11. कनेक्शनों को व्यवस्थित करने के लिए रैप को सिकोड़ें।

चरण 1: सर्किट का निर्माण

सर्किट का निर्माण
सर्किट का निर्माण
सर्किट का निर्माण
सर्किट का निर्माण
सर्किट का निर्माण
सर्किट का निर्माण

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

मूल डिजाइन एक स्विच किए गए स्रोत (एक तार जो केवल मोटरसाइकिल चालू होने पर ही चालू होता है) से 12V बिजली इनपुट करने के साथ शुरू होता है। एक वायरिंग आरेख वास्तव में इस तार को खोजने में मदद कर सकता है। यह वोल्टेज नियामक के एक तरफ खिलाया जाता है। एक 0.33 uF संधारित्र इस इनपुट को वोल्टेज नियामक पर जमीन से जोड़ता है जो फिर मोटरसाइकिल पर वापस जमीन पर फ़ीड करता है। वोल्टेज रेगुलेटर के आउटपुट में जमीन से बंधा 0.1uF कैपेसिटर होगा। ये कैपेसिटर नियामक से वोल्टेज को सुचारू करने में मदद करते हैं। यदि आप उन्हें सर्किट बोर्ड की तस्वीर में नहीं ढूंढ पा रहे हैं, तो वे वोल्टेज नियामक के नीचे हैं। वहां से, 5V लाइन Arduino पर Vin में जाती है, उस पावर पिन तक जो LED स्ट्रिप्स को फीड करेगी, और ऑप्टोइसोलेटर के दो स्रोत पक्ष जो आवश्यक 5V सिग्नल प्रदान करने वाले Arduino पिन में फीड करेंगे।

ऑप्टोइसोलेटर के लिए, दो पक्ष हैं: एक आईआर एलईडी के साथ और दूसरा ट्रांजिस्टर के साथ और आईआर डिटेक्टर के साथ। हम 12V सिग्नल को मापने के लिए IR LED साइड का उपयोग करना चाहते हैं। चूंकि एलईडी में 1.2V का आगे का वोल्टेज है, इसलिए हमें श्रृंखला में एक वर्तमान सीमित अवरोधक की आवश्यकता है। 12V - 1.2V = 10.8V और LED को 18 mA पर चलाने के लिए (मैं आजीवन कारणों से हमेशा 20 mA से कम चलाना पसंद करता हूं), आपको R = 10.8V/0.018A = 600 ओम के रेसिस्टर की आवश्यकता होगी। वाहनों पर वोल्टेज भी अधिक होता है, संभावित रूप से 14V तक, इसलिए इसके लिए योजना बनाना बेहतर है, जो लगभग 710 ओम है, हालांकि 700 उचित से अधिक होगा। एलईडी साइड के लिए आउटपुट फिर वापस जमीन पर फीड होता है। ऑप्टोइसोलेटर के आउटपुट साइड के लिए, इनपुट रेगुलेटर से 5V सिग्नल का उपयोग करेगा फिर आउटपुट ग्राउंड पर जाने से पहले दूसरे रेसिस्टर से कनेक्ट होगा। इस अवरोधक को लगभग १०k - २०k ओम होने की आवश्यकता है, कम से कम यही मेरी डेटाशीट ने दिखाया है। यह एक त्वरित संकेत माप देगा क्योंकि हम शोर वाले वातावरण से निपट नहीं रहे हैं। Arduino पिन का आउटपुट रोकनेवाला और ऑप्टोइसोलेटर के आउटपुट के बीच बंद हो जाएगा ताकि जब सिग्नल बंद हो तो पिन कम हो और जब सिग्नल पिन पर हो तो उच्च हो।

एलईडी स्ट्रिप लाइट्स में तीन तार जुड़े होते हैं: पावर, ग्राउंड और डेटा। पावर 5V होना चाहिए। यह परियोजना कुल 12 एल ई डी का उपयोग करती है (हालांकि मेरे पास स्ट्रिप्स पर अधिक एल ई डी हैं लेकिन मैं केवल हर तीसरे एलईडी का उपयोग कर रहा हूं) और प्रत्येक में 60 एमए लगता है जब पूर्ण चमक पर सफेद रोशनी का उपयोग किया जाता है। यह कुल 720 एमए देता है। हम वोल्टेज नियामक के लिए आउटपुट पावर के भीतर हैं, इसलिए हम अच्छे हैं। बस यह सुनिश्चित करें कि बिजली को संभालने के लिए तार एक बड़ा पर्याप्त गेज है, मैंने 24 गेज कैट 6 ईथरनेट तार का उपयोग किया है। ईथरनेट तार कुछ ऐसा था जो मैं चारों ओर बैठा था और इसमें 8 रंग कोडित तार हैं इसलिए इसने इस परियोजना के लिए अच्छा काम किया। केवल तार जिन्हें तब टॉपबॉक्स में जाने की आवश्यकता होती है, वह है शक्ति और जमीन (जो दोनों स्ट्रिप्स के बीच विभाजित हो जाती हैं) और दो डेटा लाइनें (प्रत्येक पट्टी के लिए एक)।

बाकी वायरिंग आर्डिनो पर पिन से जुड़ रही है और इसे पावर खिला रही है। इस परियोजना के लिए जिन पिनों का उपयोग किया गया वे निम्नलिखित थे:

  1. विन - 5V. से जुड़ा
  2. Gnd - जमीन से जुड़ा
  3. Pin2 - लेफ्ट स्ट्रिप डेटा लाइन से जुड़ा
  4. Pin3 - राइट स्ट्रिप डेटा लाइन से जुड़ा
  5. Pin4 - ऑप्टोइसोलेटर से ब्रेक सिग्नल से जुड़ा
  6. Pin5 - ऑप्टोइसोलेटर से लेफ्ट टर्न सिग्नल से जुड़ा
  7. Pin6 - ऑप्टोइसोलेटर से राइट टर्न सिग्नल से जुड़ा

चरण 2: तारों और स्थापना

तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना
तारों और स्थापना

एक बार सर्किट बन जाने के बाद, वास्तव में इसे जगह में तार करने का समय आ जाता है। अपनी बाइक के लिए अपने वायरिंग योजनाबद्ध का उपयोग करते हुए, आपको निम्नलिखित का पता लगाना होगा:

  • स्विच की गई बिजली की आपूर्ति
  • ज़मीन
  • ब्रेक सिग्नल इन
  • लेफ्ट टर्न सिग्नल इन
  • राइट टर्न सिग्नल इन

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

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

चरण 3: कोड

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

इस परियोजना के लिए केवल एक पुस्तकालय की आवश्यकता है जो कि फास्टलेड पुस्तकालय है। इसमें WS2811/WS2812B प्रकार की LED स्ट्रिप्स को नियंत्रित करने के लिए सभी कोड हैं। वहां से, मैं उन बुनियादी कार्यों को कवर करूंगा जिनका उपयोग किया जाएगा।

मानक परिभाषाओं के अलावा पहला है अपनी दो स्ट्रिप्स घोषित करना। आप प्रत्येक पट्टी के लिए निम्नलिखित कोड का उपयोग करेंगे:

FastLED.addLeds(leds[0], NUM_LEDS);

कोड की यह पंक्ति पिन 2 सेट करती है, इस पट्टी को स्ट्रिप 0 के रूप में परिभाषित करती है, जिसमें निरंतर NUM_LEDS द्वारा परिभाषित एल ई डी की संख्या होती है, जो मेरे मामले में 16 पर सेट है। दूसरी पट्टी को परिभाषित करने के लिए, 2 3 (पिन 3 के लिए) बन जाएगा और पट्टी को पट्टी 1 लेबल किया जाएगा।

अगली पंक्ति जो महत्वपूर्ण होगी वह है रंग की परिभाषा।

एल ई डी [0] [1] = Color_high सीआरजीबी (आर, जी, बी);

कोड की इस पंक्ति का उपयोग अलग-अलग रूपों में किया जाता है (मेरे अधिकांश उपयोग स्थिर होते हैं)। मूल रूप से, यह कोड प्रत्येक एलईडी चैनल (लाल, हरा, नीला) को एक मान भेजता है जो प्रत्येक चमक को परिभाषित करता है। चमक मान को 0 - 255 संख्या द्वारा परिभाषित किया जा सकता है। प्रत्येक चैनल के लिए चमक के स्तर को बदलकर, आप विभिन्न रंगों को परिभाषित कर सकते हैं। इस परियोजना के लिए, मैं प्रकाश को यथासंभव उज्ज्वल रखने के लिए एक सफेद रंग चाहता हूं। इसलिए मैं केवल यही बदलाव करता हूं कि तीनों चैनलों में ब्राइटनेस लेवल को समान रखा जाए।

कोड का अगला सेट प्रत्येक प्रकाश को व्यक्तिगत रूप से प्रकाश देने के लिए उपयोग किया जाता है। ध्यान दें कि प्रत्येक पट्टी के लिए, प्रत्येक एलईडी का एक पता होता है जो डेटा लाइन कनेक्शन के सबसे नज़दीकी के लिए 0 से शुरू होता है और उच्चतम संख्या वाली एलईडी तक आपके पास शून्य से 1 होता है। उदाहरण, ये 16 एलईडी स्ट्रिप्स हैं, इसलिए उच्चतम है 16 - 1 = 15. इसका कारण यह है कि पहली एलईडी पर 0 का लेबल लगा होता है।

के लिए (int i = NUM_LEDS-1; i > -1; i = i - 3) {// यह अंतिम से पहली तक जाने वाली हर तीसरी एलईडी के लिए प्रकाश को बदल देगा। एल ई डी [0] = Color_low; // चुने हुए रंग के लिए स्ट्रिप 0 एलईडी रंग सेट करें। एल ई डी [1] = Color_low; // चुने हुए रंग के लिए स्ट्रिप 1 एलईडी रंग सेट करें। FastLED.शो (); // सेट रंग दिखाएं। एल ई डी [0] = सीआरजीबी:: ब्लैक; // अगले रंग के लिए तैयारी में सेट रंग बंद करें। एल ई डी [1] = सीआरजीबी:: ब्लैक; देरी (150); } FastLED.show(); // सेट रंग दिखाएं।

जिस तरह से यह कोड काम करता है वह यह है कि एक चर (i) का उपयोग लूप के भीतर एलईडी पते के रूप में किया जाता है जिसे बाद में एलईडी की पूरी संख्या (NUM_LEDS) के लिए संदर्भित किया जाता है। इसका कारण यह है कि मैं चाहता हूं कि रोशनी शुरुआत के बजाय पट्टी के अंत में शुरू हो। सेटिंग दोनों स्ट्रिप्स (एलईडी [0] और एलईडी [1]) के लिए आउटपुट है, फिर परिवर्तन दिखाने के लिए एक आदेश जारी किया जाता है। उसके बाद यह लाइट बंद कर दी जाती है (CRGB::Black) और अगली लाइट जलाई जाती है। ब्लैक रेफरेंस FastLED लाइब्रेरी में एक विशिष्ट रंग है, इसलिए मुझे प्रत्येक चैनल के लिए 0, 0, 0 जारी करने की आवश्यकता नहीं है, हालांकि वे एक ही काम करेंगे। फॉर लूप एक बार में 3 एलईडी को आगे बढ़ाता है (i = i-3) क्योंकि मैं केवल हर दूसरे एलईडी का उपयोग कर रहा हूं। इस लूप के अंत तक, लाइट सीक्वेंस एक एलईडी से दूसरे में जाएगा, जिसमें प्रति स्ट्रिप केवल एक लाइट होगी, एक नाइट राइडर प्रभाव की तरह। यदि आप प्रत्येक प्रकाश को जलाए रखना चाहते हैं ताकि बार का निर्माण हो, तो आप केवल उन पंक्तियों को हटा देंगे जो एल ई डी को बंद कर देते हैं जो प्रोग्राम में कोड के अगले सेट में होता है।

for (int i = 0; i <dim; i++) {// लाइट्स को रनिंग लाइट लेवल पर जल्दी से फीका कर दें। आरटी = आरटी + 1; जीटी = जीटी + 1; बीटी = बीटी + 1; के लिए (int i = 9; i <NUM_LEDS; i = i +3) {// यह स्थिति प्रकाश के लिए अंतिम तीन रोशनी को रोशन करेगा। एल ई डी [0] = सीआरजीबी (आरटी, जीटी, बीटी); // चुने हुए रंग के लिए स्ट्रिप 0 एलईडी रंग सेट करें। एल ई डी [1] = सीआरजीबी (आरटी, जीटी, बीटी); // चुने हुए रंग के लिए स्ट्रिप 1 एलईडी रंग सेट करें। } FastLED.show(); देरी(3); }

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

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

जबकि (डिजिटल रीड (बाएं टर्न) == कम) {के लिए (int i = 0; i <lightDelay; i ++) {leftTurnCheck (); अगर (डिजिटल रीड (बाएं टर्न) == हाई) {बाएं टर्नलाइट (); } देरी (१००); } के लिए (int i = 0; i <NUM_LEDS; i = i +3) {// यह अंतिम से पहली तक जाने वाली प्रत्येक तीसरी LED के लिए प्रकाश को बदल देगा। एल ई डी [0] = सीआरजीबी (0, 0, 0); // चुने हुए रंग के लिए स्ट्रिप 0 एलईडी रंग सेट करें। } के लिए (int i = 9; i <NUM_LEDS; i = i +3) {// यह रनिंग लाइट्स सेट करेगा जो केवल अंतिम तीन का उपयोग करती हैं। एल ई डी [0] = Color_low; // चुने हुए रंग के लिए स्ट्रिप 0 एलईडी रंग सेट करें। } FastLED.show(); // आउटपुट सेटिंग्स वापसी; // एक बार जब टर्न सिग्नल चालू नहीं होता है, तो लूप पर वापस जाएं। }

उम्मीद है कि शेष कोड स्वयं व्याख्यात्मक है। यह संकेतों पर जाँच और कार्य करने का सिर्फ एक दोहराव सेट है।

चरण 4: परिणाम

परिणाम
परिणाम

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

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

सिफारिश की: