विषयसूची:
- आपूर्ति
- चरण 1: सर्किट
- चरण 2: समय आरेख
- चरण 3: प्रोग्रामिंग। मैक्रोज़ और परिभाषाएँ
- चरण 4: प्रोग्रामिंग। मुख्य घेरा
- चरण 5: प्रोग्रामिंग। सहायक कार्य
- चरण 6: प्रोग्रामिंग। प्रोटोथ्रेड रूटीन
- चरण 7: आंतरिक
वीडियो: Attiny85 समवर्ती प्रोग्रामिंग या बहुरंगी आँखों वाला कद्दू: 7 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
लेखक द्वारा jumbleviewJumbleview.info का अनुसरण करें:
के बारे में: मैं बे एरिया (कैलिफोर्निया) कंपनियों में से एक में सॉफ्टवेयर इंजीनियर के रूप में काम करता हूं। जब भी मेरे पास समय होता है मैं माइक्रो नियंत्रकों को प्रोग्राम करना, यांत्रिक खिलौने बनाना और कुछ गृह सुधार परियोजनाएं बनाना पसंद करता हूं। जंबलव्यू के बारे में अधिक »
यह प्रोजेक्ट दिखाता है कि Attiny85 चिप के साथ दो 10 मिमी तीन-रंग के आम एनोड एलईडी (कद्दू हैलोवीन ग्लिटर की बहुरंगी आँखें) को कैसे नियंत्रित किया जाए। परियोजना का लक्ष्य पाठक को समवर्ती प्रोग्रामिंग की कला से परिचित कराना और एडम डंकल्स प्रोटोथ्रेड्स लाइब्रेरी के उपयोग में लाना है। यह प्रोजेक्ट मानता है कि पाठक एवीआर 8-बिट नियंत्रकों के बारे में जानता है, कुछ सी-प्रोग्राम लिख सकता है और एटमेल स्टूडियो के साथ कुछ अनुभव है।
प्रोजेक्ट कोड GitHub पर प्रकाशित:
आपूर्ति
प्रोग्रामिंग से पहले अभी भी सर्किट बनाने की जरूरत है। यहाँ घटक हैं:
- Attiny85 नियंत्रक (कोई भी इलेक्ट्रॉनिक आपूर्तिकर्ता)।
- आम एनोड के साथ दो तीन रंग 10 मिमी एलईडी। एडफ्रूट एलईडी
- प्रतिरोध 100 ओम, 120 ओम, 150 ओम 0.125 या 0.250 वाट (कोई भी इलेक्ट्रॉनिक आपूर्तिकर्ता)।
- AVR ISP इंटरफ़ेस के लिए सिक्स पिन हैडर। इस एडफ्रूट हेडर से बनाया जा सकता है
- कुछ ब्रेड बोर्ड या प्रिंटेड टेम्प्लेट बोर्ड। मैंने इसका इस्तेमाल किया
- AVR ISP MKII इंटरफ़ेस और Atmel Studio 6.1 (बाद के संस्करण को भी काम करना चाहिए)।
चरण 1: सर्किट
डिजाइन पांच चिप पिन का उपयोग करता है:
- एनोड को नियंत्रित करने के लिए दो पिन का उपयोग किया जाता है: प्रत्येक एलईडी एनोड समर्पित पिन से जुड़ा होता है।
- एलईडी कैथोड से जुड़े तीन पिन (प्रतिरोधों के माध्यम से) (एक ही पिन से जुड़े प्रत्येक का एक ही रंग कैथोड)
कोई पूछेगा: चिप के सभी छह इन/आउट पिन का उपयोग क्यों नहीं किया जाता है ताकि एलईडी एनोड सीधे +5 वी से जुड़े हों और प्रत्येक कैथोड का अपना समर्पित पिन होगा? इससे प्रोग्रामिंग सीधी हो जाएगी। काश, समस्या होती: पिन PB5 (RESET) एक कमजोर पिन है जो केवल ~ 2 mA करंट प्रदान करने में सक्षम है, जबकि ~ 20 mA की आवश्यकता होती है।
बेशक कोई इस कमजोर पिन के लिए ट्रांजिस्टर एम्पलीफायर का निर्माण कर सकता है, लेकिन जब भी संभव हो मैं स्वयं समस्या को हल करना पसंद करता हूं।
चरण 2: समय आरेख
टाइमिंग डायग्राम हमें यह समझने में मदद करता है कि हमें प्रोग्राम करने के लिए क्या चाहिए।
आरेख पर शीर्ष दो पंक्तियाँ एलईडी एनोड पर वोल्टेज परिवर्तन दिखाती हैं। एलईडी एनोड से जुड़े पिन पर वोल्टेज ~ 250 हर्ट्ज आवृत्ति के साथ दोलन करता है। लेफ्ट एलईडी के लिए यह वोल्टेज ऑसिलेशन राइट एलईडी के ऑसिलेशन के विपरीत है। जब एनोड पर वोल्टेज अधिक होता है तो संगत एलईडी चमकीली हो सकती है। जब यह कम होता है तो संगत एलईडी डार्क होती है। इसका मतलब है कि प्रत्येक एलईडी 2 मिलीसेकंड अंतराल के दौरान उज्ज्वल हो सकती है और अन्य 2 मिलीसेकंड के दौरान अंधेरा हो सकती है। चूंकि मानव आंख में कुछ जड़ता है, 250 हर्ट्ज ब्लिंकिंग पर्यवेक्षक द्वारा ध्यान देने योग्य नहीं है। आरेख पर नीचे की तीन पंक्तियां एल ई डी कैथोड से जुड़े पिनों पर वोल्टेज में परिवर्तन दिखाती हैं। आइए पहले आरेख स्तंभ को देखें। यह उस स्थिति को दिखाता है जब बाईं एलईडी लाल रंग में होती है और दाहिनी एलईडी हरे रंग में होती है। यहां लाल कैथोड कम रहता है जबकि बायां एनोड ऊंचा होता है, हरा कैथोड कम रहता है जबकि दायां एनोड ऊंचा होता है, और नीला कैथोड हर समय कम रहता है। आरेख के अन्य कॉलम विभिन्न रंगों के लिए कैथोड और एनोड वोल्टेज के संयोजन को दर्शाते हैं।
जैसा कि हम देख सकते हैं कि पिन राज्य पर अन्योन्याश्रितता है। कुछ ढांचे के बिना इसे हल करना आसान नहीं होगा। और यहीं प्रोटोथ्रेड लाइब्रेरी काम आती है।
चरण 3: प्रोग्रामिंग। मैक्रोज़ और परिभाषाएँ
प्रोग्रामिंग चरणों में उदाहरण थोड़ा सरलीकृत संस्करण का प्रतिनिधित्व करते हैं। कार्यक्रम को छोटा कर दिया गया है, और कुछ प्रतीकात्मक परिभाषाओं को स्पष्ट स्थिरांक से बदल दिया गया है।
आइए शुरू से शुरू करते हैं। कार्यक्रम में एटमेल स्टूडियो के साथ आने वाली फाइलें और साथ ही प्रोटोथ्रेड लाइब्रेरी हेडर शामिल हैं। इसके बाद पिन स्तरों में हेरफेर करने के लिए दो मैक्रोज़ हैं और कुछ परिभाषाएँ पिन सिग्नल को तार्किक नाम देने के लिए हैं। अब तक कुछ खास नहीं।
चरण 4: प्रोग्रामिंग। मुख्य घेरा
फिर आइए अंत में देखें कि मुख्य प्रक्रिया में क्या शामिल है।
कुछ आरंभीकरण करने के बाद मुख्य कार्य हमेशा के लिए लूप में रहता है। उस लूप में यह अगले चरण बनाता है:
- बाईं एलईडी के लिए प्रोटोथ्रेड रूटीन को आमंत्रित करता है। यह कुछ पिन वोल्टेज बदलता है।
- दो मिलीसेकंड की देरी करें। पिन वोल्टेज में कोई बदलाव नहीं होता है।
- सही एलईडी के लिए प्रोटोथ्रेड को आमंत्रित करता है। यह कुछ पिन वोल्टेज बदलता है।
- 2 एमएस देरी करें। पिन वोल्टेज में कोई बदलाव नहीं होता है।
चरण 5: प्रोग्रामिंग। सहायक कार्य
इससे पहले कि हम प्रोटोथ्रेड्स पर चर्चा करना शुरू करें, हमें कुछ सहायक कार्यों को देखने की जरूरत है। पहले विशेष रंग सेट करने के लिए कार्य हैं। वे सीधे हैं। समर्थित रंगों की संख्या (सात) और एलईडी डार्क (NoColor) सेट करने के लिए एक और फ़ंक्शन जैसे कई फ़ंक्शन हैं।
और एक और फ़ंक्शन है जिसे सीधे प्रोटोथ्रेड रूटीन द्वारा लागू किया जाएगा। इसका नाम DoAndCountdown() है।
तकनीकी रूप से ऐसे फ़ंक्शन का उपयोग अनिवार्य नहीं है लेकिन मुझे यह सुविधाजनक लगा। इसके तीन तर्क हैं:
- एलईडी रंग (जैसे RedColor या GreenColor या आदि) सेट करने के लिए सूचक
- रिवर्स काउंटर का प्रारंभिक मूल्य: विशेष प्रोटोथ्रेड चरण में इस फ़ंक्शन को कितनी बार लागू किया जाना चाहिए।
- काउंटर को उल्टा करने के लिए सूचक। यह माना जाता है कि जब रंग में परिवर्तन होता है तो रिवर्स काउंटर 0 होता है, इसलिए पहले पुनरावृत्ति कोड उस काउंटर को प्रारंभिक मान प्रदान करेगा। प्रत्येक पुनरावृत्ति काउंटर के बाद घटाया जाता है।
फंक्शन DoAndCountdown() रिवर्स काउंटर का मान लौटाता है।
चरण 6: प्रोग्रामिंग। प्रोटोथ्रेड रूटीन
और यहाँ फ्रेमवर्क कोर है: प्रोटोथ्रेड रूटीन। सादगी के लिए उदाहरण केवल तीन चरणों तक सीमित है: रंग बदलने के लिए RED, GREEN और BLUE।
फ़ंक्शन को दो तर्कों के साथ बुलाया जाता है:
- प्रोटोथ्रेड संरचना के लिए सूचक। मुख्य लूप शुरू होने से पहले उस संरचना को मुख्य द्वारा प्रारंभ किया गया था।
- काउंटर को उल्टा करने के लिए सूचक। मुख्य लूप शुरू होने से पहले इसे मुख्य द्वारा 0 पर सेट किया गया था।
बाएं एलईडी को सक्रिय बनाने के लिए फ़ंक्शन सेट वोल्टेज और फिर प्रोटोथ्रेड सेगमेंट शुरू करता है। यह खंड मैक्रोज़ PT_BEGIN और PT_END के बीच है। अंदर कुछ कोड हैं जो हमारे मामले में केवल मैक्रोज़ PT_WAIT_UNTIL दोहराते हैं। यह मैक्रो अगला प्रदर्शन करता है:
- समारोह DoAndCountdown का आह्वान। यह विशेष रंग उत्सर्जित करने के लिए एलईडी कैथोड पर वोल्टेज सेट करता है।
- 0 की तुलना में परिणाम लौटाया गया। यदि स्थिति 'गलत' है, तो प्रोटोथ्रेड फ़ंक्शन तुरंत वापस आ जाता है और मुख्य लूप पर नियंत्रण प्राप्त करता है।
- जब अगली बार प्रोटोथ्रेड का आह्वान किया जाता है तो यह फिर से PT_BEGIN से पहले कोड निष्पादित करता है, फिर सीधे PT_WAIT_UNTIL मैक्रोज़ के अंदर कूद जाता है जिससे यह पिछली बार लौटा था।
- DoAndCountdown का परिणाम 0 होने तक इस तरह की कार्रवाइयां दोहराई जाती हैं। उस स्थिति में कोई वापसी नहीं होती है, प्रोग्राम प्रोटोथ्रेड में रहता है और कोड की अगली पंक्ति को निष्पादित करता है। हमारे मामले में यह अगला PT_WAIT_UNTIL है लेकिन आम तौर पर यह लगभग कोई भी सी कोड हो सकता है।
- दूसरे PT_WAIT_UNTIL रिवर्स काउंटर के प्रारंभिक निष्पादन में 0 है, इसलिए प्रक्रिया DoAndCountdown() इसे प्रारंभिक मान पर सेट करती है। दूसरा मैक्रोज़ फिर से 250 बार निष्पादित किया जाएगा जब तक कि रिवर्स काउंटर 0 तक नहीं पहुंच जाता।
- जैसे ही नियंत्रण PT_END मैक्रोज़ तक पहुँचता है, संरचना pt की स्थिति रीसेट हो जाती है। जब अगली बार प्रोटोथ्रेड फ़ंक्शन का आह्वान किया जाता है तो प्रोटोथ्रेड सेगमेंट PT_BEGIN के ठीक बाद कोड की एक्ज़ीक्यूट लाइन शुरू करता है।
सही एलईडी के लिए समान प्रोटोथ्रेड रूटीन है। हमारे उदाहरण में यह सिर्फ रंगों के अलग-अलग क्रम को लागू करता है, लेकिन अगर हम इसे पूरी तरह से अलग तरीके से कर सकते हैं: बाएं और दाएं एलईडी रूटीन के बीच कोई तंग युग्मन नहीं है।
चरण 7: आंतरिक
पूरा प्रोग्राम कोड की 200 लाइनों से कम है (टिप्पणियों और खाली लाइनों के साथ) और 20% से कम Attiny85 कोड मेमोरी लेता है। यदि आवश्यक हो तो यहां कई और प्रोटोथ्रेड रूटीन का उपयोग करना संभव है और उन्हें और अधिक जटिल तर्क सौंपना संभव है।
प्रोटोथ्रेड्स लाइब्रेरी कंप्यूटर समवर्ती प्रोग्रामिंग का सबसे सरल रूप है। समवर्ती प्रोग्रामिंग एक दृष्टिकोण है जो प्रोग्राम को तार्किक भागों में विभाजित करने की अनुमति देता है: कभी-कभी उन्हें कोरआउट कहा जाता है, कभी थ्रेड, कभी-कभी कार्य। सिद्धांत यह है कि कोड को कम या ज्यादा रैखिक और अन्य भागों से स्वतंत्र रखते हुए ऐसा प्रत्येक कार्य समान प्रोसेसर शक्ति साझा कर सकता है। तार्किक दृष्टिकोण से कार्यों को एक साथ निष्पादित किया जा सकता है।
उन्नत सिस्टम के लिए ऐसे कार्यों का नियंत्रण या तो ऑपरेटिंग सिस्टम कर्नेल द्वारा या कंपाइलर द्वारा निष्पादन योग्य में एम्बेडेड भाषा रनटाइम द्वारा किया जाता है। लेकिन प्रोटोथ्रेड्स के मामले में एप्लिकेशन प्रोग्रामर कार्य रूटीन में प्रोटोथ्रेड मैक्रोज़ लाइब्रेरी का उपयोग करके और ऐसे रूटीन (आमतौर पर मुख्य लूप से बाहर) को लागू करके इसे मैन्युअल रूप से नियंत्रित करता है।
आप शायद जानना चाहते हैं कि प्रोटोथ्रेड वास्तव में कैसे काम करता है? जादू कहाँ छिपा है? प्रोटोथ्रेड विशेष सी भाषा सुविधा पर भरोसा करते हैं: तथ्य यह है कि सी स्विच केस स्टेटमेंट को अगर या किसी अन्य ब्लॉक (जैसे जबकि या के लिए) में एम्बेड किया जा सकता है। विवरण आपको एडम डंकल्स साइट https://dunkels.com/adam/pt/expansion.html पर मिल सकता है
इस परियोजना के इलेक्ट्रॉनिक्स इंटर्नल बहुत सरल हैं। ऊपर दिया गया फोटो आपको कुछ सुराग देता है। मुझे यकीन है कि आप बेहतर कर सकते हैं।
सिफारिश की:
चलती एनिमेट्रोनिक आई के साथ हेलोवीन कद्दू - यह कद्दू अपनी आंख घुमा सकता है !: 10 कदम (चित्रों के साथ)
चलती एनिमेट्रोनिक आई के साथ हेलोवीन कद्दू | यह कद्दू अपनी आंख को रोल कर सकता है !: इस निर्देश में, आप सीखेंगे कि हैलोवीन कद्दू कैसे बनाया जाता है, जब इसकी आंख चलती है तो सभी को भयभीत कर देता है। अल्ट्रासोनिक सेंसर की ट्रिगर दूरी को सही मान (चरण 9) में समायोजित करें, और आपका कद्दू किसी को भी डरा देगा जो कैंडी लेने की हिम्मत करता है
ATtiny85 पहनने योग्य कंपन गतिविधि ट्रैकिंग घड़ी और प्रोग्रामिंग ATtiny85 Arduino Uno के साथ: 4 चरण (चित्रों के साथ)
ATtiny85 पहनने योग्य कंपन गतिविधि ट्रैकिंग घड़ी और प्रोग्रामिंग ATtiny85 Arduino Uno के साथ: पहनने योग्य गतिविधि ट्रैकिंग घड़ी कैसे बनाएं? यह एक पहनने योग्य गैजेट है जिसे स्थिरता का पता लगाने पर कंपन करने के लिए डिज़ाइन किया गया है। क्या आप भी मेरी तरह अपना ज्यादातर समय कंप्यूटर पर बिताते हैं? क्या आप इसे महसूस किए बिना घंटों बैठे रहते हैं? तब यह डिवाइस f
मिनटों में कम लागत वाला सेंसर वाला ट्रैक बनाएं!: 10 कदम (चित्रों के साथ)
मिनटों में एक कम लागत वाला सेंसर ट्रैक बनाएं !: अपने पिछले निर्देश में, मैंने आपको दिखाया कि स्वचालित साइडिंग के साथ एक मॉडल ट्रेन लेआउट कैसे बनाया जाता है। इसमें 'सेंसर ट्रैक' नाम के एक ट्रैक सेगमेंट का इस्तेमाल किया गया था। मॉडल रेलवे लेआउट में होना काफी उपयोगी चीज है। मैं निम्नलिखित के लिए इस्तेमाल किया जा सकता है: ब्लॉक
मंद लाल आंखों वाला कंकाल: 16 कदम (चित्रों के साथ)
डिमिंग रेड आइज़ के साथ कंकाल: हैलोवीन के लिए एक अच्छा कंकाल प्रोप किसे पसंद नहीं है? यह निर्देशयोग्य दिखाता है कि आपके कंकाल (या सिर्फ एक खोपड़ी) के लिए चमकती लाल आँखों की एक जोड़ी को एक साथ कैसे रखा जाए जो मंद और चमकीला हो, जो आपके ट्रिक या ट्रीटर्स और अन्य vi के लिए एक डरावना प्रभाव प्रदान करता है
कद्दू - टेट्रिस कद्दू: 10 कदम (चित्रों के साथ)
कद्दू - टेट्रिस कद्दू: मुस्कुराते हुए चेहरे और मोमबत्तियां कौन चाहता है जब आप इस हेलोवीन में एक इंटरैक्टिव कद्दू ले सकते हैं? लौकी के चेहरे पर उकेरी गई 8x16 ग्रिड पर अपना पसंदीदा ब्लॉक-स्टैकिंग गेम खेलें, जो एलईडी द्वारा जलाया जाता है और एक नियंत्रक के रूप में तने का उपयोग करता है। यह एक मॉडर