क्या Arduino पर 14 से अधिक आउटपुट पिन होना संभव है, मैं एक ऐसी परियोजना पर काम कर रहा हूं जिसमें मुझे व्यक्तिगत रूप से कई एलईडी को प्रकाश में लाने की आवश्यकता है। मेरे पास केवल एक Arduino Uno है, और मैं एक मेगा प्राप्त नहीं करना चाहता।
क्या Arduino पर 14 से अधिक आउटपुट पिन होना संभव है, मैं एक ऐसी परियोजना पर काम कर रहा हूं जिसमें मुझे व्यक्तिगत रूप से कई एलईडी को प्रकाश में लाने की आवश्यकता है। मेरे पास केवल एक Arduino Uno है, और मैं एक मेगा प्राप्त नहीं करना चाहता।
जवाबों:
Arduino पर उपलब्ध आउटपुट पिन के सेट का विस्तार करने का एक सामान्य तरीका 74HC595 IC ( डेटाशीट से लिंक ) जैसी शिफ्ट रजिस्टर का उपयोग करना है ।
इन चिप्स को नियंत्रित करने के लिए आपको 3 पिन चाहिए:
किसी प्रोग्राम में, आप शिफ्ट रजिस्टर में शिफ्टऑट () कमांड का उपयोग करके एक बार में डेटा को एक बिट पर पास करते हैं , जैसे:
shiftOut(dataPin, clockPin, data);
उस कमांड के साथ, आप 5 आउटपुट IC पर 8 बिट्स में से प्रत्येक को 8 बिट्स के साथ data
वेरिएबल में सेट करते हैं।
एक 595 के साथ, आप 5 पिन हासिल करते हैं (आईसी पर 8, लेकिन आप इस पर बात करने के लिए 3 खर्च करते हैं)। अधिक आउटपुट प्राप्त करने के लिए, आप इसके सीरियल-आउट पिन को जोड़कर, अगले एक के डेटा पिन से 595 की एक श्रृंखला को डेज़ी-चेन कर सकते हैं। आपको 595 IC में से घड़ी और लैच पिन को भी एक साथ जोड़ना होगा।
परिणामी सर्किट (एक 595 का उपयोग करके) इस तरह दिखेगा:
उपरोक्त आंकड़ा इस codeproject.com वेबपेज से लिया गया था :
595 आउटपुट को स्थिर रखने के लिए लैच पिन का उपयोग किया जाता है, जब आप डेटा को उसमें शिफ्ट कर रहे हों, जैसे:
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, data);
digitalWrite(latchPin, HIGH);
वहाँ दो तरीके से आप एक arduino से अधिक पिन प्राप्त कर सकते हैं।
पहला तरीका एनालॉग पिंस को डिजिटल आउटपुट पिंस के रूप में उपयोग करना है, जो वास्तव में करना आसान है। आपको बस A0-A5 को पिन 14,15,16,17,18,19 के रूप में संदर्भित करना होगा। उदाहरण के लिए उच्च पिन को लिखने के लिए A0 बस digitalWrite (14, उच्च) का उपयोग करें।
Arduino से अधिक पिन प्राप्त करने का दूसरा तरीका शिफ्ट रजिस्टर का उपयोग करना है। यह करने के लिए मैं ईज़ी- एक्सपैंडर शील्ड का उपयोग करने की सलाह देता हूं, जो आपको ईज़ी- एक्सपैंडर लाइब्रेरी को आयात करते समय डिजिटलविराइट ([20-35], हाई) का उपयोग करने की अनुमति देता है। यह ढाल हालांकि केवल पिंस को केवल आउटपुट के रूप में उपयोग करने की अनुमति देता है और शिफ्ट रजिस्टर को नियंत्रित करने के लिए पिन 8,12 और 13 का उपयोग करता है।
बड़ी बात यह है, कि आप बिना किसी समस्या के, एक साथ उपरोक्त दोनों विधियों का उपयोग कर सकते हैं।
A0
- A5
संख्या 14-19 का उपयोग करने के बजाय सीधे पहचानकर्ताओं का उपयोग कर सकते हैं । उदाहरण के लिए, digitalWrite(A0, HIGH)
।
digitalWrite(A0)
तुलना में अधिक सही है digitalWrite(14)
। एक अलग बोर्ड पर, pin 14
वास्तव में नहीं हो सकता है A0
, उदाहरण के pin 14
लिए MEGA Serial3 है TX
और आपके द्वारा किए जाने वाले एनालॉग पिन को प्रभावित नहीं करेगा। यानी, यदि digitalWrite
एक एनालॉग पिन पर उपयोग किया जाता है , तो A0
- A5
संदर्भ का उपयोग करें ।
यदि आप एल ई डी ड्राइव करना चाहते हैं, तो आप एक MAX7219 का उपयोग भी कर सकते हैं जो 64 एल ई डी ड्राइव कर सकता है, बिना अतिरिक्त सर्किटरी (सिग्नल को प्रवर्धित करने के लिए ट्रांजिस्टर की कोई आवश्यकता नहीं)।
MAX7219 ड्राइविंग के लिए Arduino पर केवल 3 आउटपुट पिन की आवश्यकता होती है। इसके अलावा, आप इसके लिए कुछ Arduino लाइब्रेरी पा सकते हैं ।
यदि आप 64 से अधिक एल ई डी बिजली की जरूरत है, तो आप उनमें से कई को भी चेन कर सकते हैं।
मैंने इसे कई 7-सेगमेंट के एलईडी डिस्प्ले के लिए सफलतापूर्वक उपयोग किया है।
नकारात्मक पक्ष: यह महंगा है (लगभग $ 10)।
आप चार्लीप्लेक्सिंग का उपयोग कर सकते हैं । इस तकनीक से आप n*(n-1)
एलईडी को सीधे पिन से चला सकते हैं । तो 3 पिन के साथ आप 6 एलईडी, 4 पिन - 12 एलईडी, 5 पिन - 20 एलईडी और इतने पर ड्राइव कर सकते हैं।
उदाहरण के लिए:
3 पिन पर छह एलईडी
PINS LEDS
0 1 2 1 2 3 4 5 6
0 0 0 0 0 0 0 0 0
0 1 Z 1 0 0 0 0 0
1 0 Z 0 1 0 0 0 0
Z 0 1 0 0 1 0 0 0
Z 1 0 0 0 0 1 0 0
0 Z 1 0 0 0 0 1 0
1 Z 0 0 0 0 0 0 1
0 0 1 0 0 1 0 1 0
0 1 0 1 0 0 1 0 0
0 1 1 1 0 0 0 1 0
1 0 0 0 1 0 0 0 1
1 0 1 0 1 1 0 0 0
1 1 0 0 0 0 1 0 1
1 1 1 0 0 0 0 0 0
आप यहां एक बेहतर ट्यूटोरियल देख सकते हैं ।
पोर्ट-विस्तारक जैसे अन्य उपकरणों से कनेक्ट करने के लिए आप I 2 C प्रोटोकॉल (वायर लाइब्रेरी) का उपयोग कर सकते हैं । उदाहरण के लिए, MCP23017।
मैंने एलसीडी बोर्ड से कनेक्ट करने के लिए उन चिप्स में से एक का उपयोग किया। MCP23017 में 16 पोर्ट हैं, जिन्हें इनपुट या आउटपुट के रूप में कॉन्फ़िगर किया जा सकता है। इनपुट के रूप में वे वांछित होने पर व्यवधान उत्पन्न कर सकते हैं।
उन 16 में से 13 को एलसीडी से जोड़ने का उदाहरण:
अब हम Arduino को केवल 2 तारों (SDA / SCL) प्लस पावर और ग्राउंड का उपयोग करके कनेक्ट करते हैं:
कुछ तीसरे पक्ष के निर्माताओं ने उन पर 4 x MCP23017 के साथ बोर्ड बनाए हैं, इससे आपको 64 इनपुट / आउटपुट मिलते हैं:
आप 8 पिन / 8 पोर्ट (जैसे एक समय में केवल एक) से कनेक्ट करने के लिए 74HC4051 (8 पोर्ट) या 74HC4067 (16 पोर्ट) जैसे एनालॉग मल्टीप्लेक्स का उपयोग कर सकते हैं:
ये द्वि-दिशात्मक हैं, इसलिए इनपुट या आउटपुट विस्तारक के रूप में उपयोग किया जा सकता है।
एसपीआई का उपयोग करके आप तेजी से सीरियल डेटा को एक शिफ्ट रजिस्टर में भेज सकते हैं, जैसे कि 74HC595। ये एक साथ डेज़ी जंजीर हो सकते हैं। इस उदाहरण में मैं केवल 3 I / O पिन (MOSI / MISO / SCK) प्लस पावर और ग्राउंड के साथ 32 एल ई डी को नियंत्रित कर रहा हूं।
मैंने एक वाणिज्यिक एलईडी साइन के अंदर पाया कि 72 एलईडी 74HC595 चिप्स द्वारा संचालित थे।
इसमें स्तंभों को चलाने वाले 9 चिप्स (9 x 8 = 72 एल ई डी) थे और एक चिप में मल्टीप्लेक्स कॉन्फ़िगरेशन में पंक्तियों को चलाते हुए।
यदि आप केवल एलईडी ड्राइव करना चाहते हैं तो आप आमतौर पर उन्हें मल्टीप्लेक्स कर सकते हैं। MAX7219 सरल करता है कि एलईडी मैट्रिक्स को ड्राइव करने के लिए डिज़ाइन किया गया है, उदाहरण के लिए 7-सेगमेंट डिस्प्ले:
या 64-एलईडी मैट्रिक्स:
उदाहरण के लिए, दोनों मामलों में ये एक साथ व्यवस्थित किए जा सकते हैं:
उन सभी उदाहरणों में केवल Arduino (MOSI / MISO / SCK) प्लस पावर और ग्राउंड के 3 पिन का उपयोग किया जाता है।
पहले उल्लेख किए गए 16-पोर्ट पोर्ट विस्तारक (MCP23017) एक SPI संस्करण (MCP23S17) में भी आता है, जो लगभग समान चीजें करता है। यह एक और तार का उपयोग करता है, लेकिन तेज होगा।
एलईडी स्ट्रिप्स (जैसे NeoPixel वाले) के अपने प्रोटोकॉल हैं। जोश लेविन द्वारा यूट्यूब पर एक पोस्ट किया गया था जहां लेखक ने एक ड्यूमिलानोव के साथ 1000 से अधिक पिक्सेल निकाले थे!
शिफ्ट रजिस्टर में अन्य उत्तरों का उल्लेख किया गया है, और वे निश्चित रूप से कई परियोजनाओं के लिए एक उत्कृष्ट पसंद हैं। वे सस्ते, सरल, मध्यम तेज हैं, और आम तौर पर अधिक आउटपुट जोड़ने के लिए एक साथ जंजीर हो सकते हैं। हालांकि, उनके पास नकारात्मक पक्ष यह है कि उन्हें आमतौर पर कई पिनों (2 और 4 के बीच) के अनन्य उपयोग की आवश्यकता होती है, यह इस बात पर निर्भर करता है कि आपने उन्हें कैसे सेट किया है)।
16-बिट MCP23017 और MCP23S17 जैसे अधिक उन्नत पोर्ट विस्तारकों का उपयोग करने के लिए एक विकल्प है । ये क्रमशः I2C और SPI का समर्थन करते हैं, जिसका अर्थ है कि आप उन्हें कई अन्य उपकरणों (विभिन्न प्रकारों के संभावित) के साथ एक बस में रख सकते हैं। बस में प्रत्येक डिवाइस को व्यक्तिगत रूप से संबोधित किया जा सकता है, जिसका अर्थ है कि आपको उन सभी से बात करने के लिए केवल 2 या 3 पिन चाहिए। अपडेट की गति आम तौर पर बहुत तेज होती है, इसलिए आप Arduino प्रोजेक्ट में महत्वपूर्ण विलंबता (यानी ट्रांसमिशन देरी) का अनुभव करने की संभावना नहीं रखते हैं।
निम्न स्तर पर, I2C या SPI का उपयोग करना एक साधारण बदलाव रजिस्टर की तुलना में काफी अधिक जटिल है। हालाँकि, Arduino के लिए आपके लिए देखभाल करने के लिए लाइब्रेरी कोड है। इस प्रश्न को देखें, उदाहरण के लिए: मैं Arduino के साथ I2C उपकरणों का उपयोग कैसे करूं?
रिकार्डो के जवाब के अलावा , शिफ्ट रजिस्टर पर विकिपीडिया क्या कहता है :
शिफ्ट रजिस्टर के सबसे सामान्य उपयोगों में से एक धारावाहिक और समानांतर इंटरफेस के बीच कनवर्ट करना है। [...] SIPO रजिस्टर आमतौर पर माइक्रोप्रोसेसरों के आउटपुट से जुड़े होते हैं, जब सामान्य प्रयोजन इनपुट / आउटपुट पिन उपलब्ध होने की तुलना में अधिक आवश्यक होते हैं। यह कई बाइनरी डिवाइसों को केवल दो या तीन पिनों का उपयोग करके नियंत्रित करने की अनुमति देता है, लेकिन समानांतर I / O की तुलना में धीमी है।
में लेख रिकार्डो जुड़ा हुआ आप शिफ्ट रजिस्टर के चित्र देख सकते हैं।
यहाँ क्या होता है कि आप 8 पिनों का डेटा एक अनुक्रम में रखते हैं और प्रत्येक घड़ी के लिए शिफ्ट रजिस्टर टिक जाएगा शिफ्ट (प्रत्येक बैच से बाइनरी डेटा को अगले एक तक ले जाएं) जब तक कि यह "एक सर्कल" नहीं बनाता है, यानी पहला बिट अंतिम पिन पर आता है। शिफ्ट रजिस्टर में एक इनपुट भी होता है जहां आप शिफ्टिंग को चालू / बंद कर सकते हैं ताकि डेटा को स्थिति में स्थानांतरित करने के बाद स्थिति को रखा जा सके। एक साधारण प्रदर्शन के लिए निम्नलिखित एनीमेशन देखें।
यहां लाल बत्ती सीरियल इनपुट है और हरे लोग इस सरल SIPO शिफ्ट रजिस्टर में कुंडी की स्थिति दिखा रहे हैं । शिफ्टिंग के लिए स्थानांतरित किए गए डेटा को बंद करने के बाद आप पिन को पढ़ सकते हैं। इस उदाहरण में मैं बाहर स्थानांतरित हो गया 10101011
।
इन उदाहरणों से आप महसूस कर सकते हैं कि सीरियल ट्रांसफर समानांतर से धीमा होगा, क्योंकि आपको बिट्स को उनके स्थान पर शिफ्ट करने के लिए शिफ्ट रजिस्टर का इंतजार करना होगा। जितनी घड़ी आप लोड करना चाहते हैं उतनी ही घड़ी की टिक टिक की प्रतीक्षा करनी होगी। यह कई कारणों में से एक है कि आप उन्हें अनिश्चित काल तक श्रृंखला क्यों नहीं दे सकते, क्योंकि लोडिंग हमेशा के लिए ले जाएगी।
जैसा कि आपने पहले ही लिखा था, आप डिजिटल आउटपुट के रूप में TX और RX सहित सभी पिन का उपयोग कर सकते हैं। मैंने ऐसा कुछ समय पहले एक प्रदर्शनकारी के लिए किया था और एक वीडियो रिकॉर्ड किया था - 20 LEDS 20 पिन पर - इस बल्कि निरर्थक प्रोजेक्ट का।
जैसा कि पीटर आर। ब्लूमफील्ड ने यहां बताया है , आपको अपलोड के लिए TX और RX को डिस्कनेक्ट करना होगा। इसके अलावा, आप संभावित अन्तरक्रियाशीलता के लिए सेंसर पढ़ने के लिए पिन से बाहर हैं और यह सुनिश्चित करना है कि कुल वर्तमान सीमा तक पहुँच नहीं है। यदि आप उन्हें सीधे अपने Arduino के साथ चलाते हैं, तो यह न भूलें कि आप 5V एलईड तक सीमित हैं।
इसलिए सामान्य तौर पर शिफ्ट रजिस्टर का उपयोग और रिकार्डो द्वारा वर्णित 595 की अत्यधिक अनुशंसा की जाती है।
मैंने कुछ समय पहले उनका इस्तेमाल किया था जब मुझे अपकमिंग कलाकार डोमिनिक जैस के कावई मी (लिंक का पाठ जर्मन में है) के सोल्डरिंग और प्रोग्रामिंग हिस्से का एहसास हुआ ।
इधर, बस का एक समूह 595 8x11 एल ई डी के एक प्रदर्शन ड्राइव करने के लिए इस्तेमाल किया गया। चूंकि एलईड 12 वी एसएमडी लेड्स की एक स्ट्रिप से काटे गए थे, अतिरिक्त बिजली की आपूर्ति और कुछ UDN2803A डार्लिंगटन सरणियों, शिफ्ट रजिस्टरों के आउटपुट पिंस पर हुक किए गए, आवश्यक थे।
अन्य सामान्य विधियों में PCF8574 (A) 8bit पोर्ट एक्सपैंडर्स का उपयोग शामिल होगा, जिन्हें I2C बस के माध्यम से नियंत्रित किया जाता है।
वैसे भी, मैं 595 शिफ्ट रजिस्टर पहले एक कोशिश दे देंगे।
यदि आपको RGB नेतृत्व के एक जोड़े को नियंत्रित करने की आवश्यकता है, हालांकि, आप अधिक विशिष्ट समाधानों की तलाश करना चाहते हैं। कुछ RGB लीड्स अपने खुद के WS2812 के साथ आते हैं । इन बारीक टुकड़ों को कैस्केड (1-वायर बस) किया जा सकता है और श्रृंखला में उनकी स्थिति के माध्यम से संबोधित किया जाता है।
यदि यह सब एल ई डी के बारे में है, तो WS2812B एलईडी स्ट्रिप्स के बारे में क्या है, या बस ड्राइवर खुद को चिप करता है? आप केवल एक पिन का उपयोग करके लगभग असीमित संख्या में एल ई डी को नियंत्रित कर सकते हैं!
यद्यपि लोग स्ट्रिप्स में इनका उपयोग करते हैं, वे स्टैंडअलोन एल ई डी के रूप में उपलब्ध हैं (जिन्हें एडफोर्स पर नियो पिक्सल के रूप में जाना जाता है)। या यदि आप केवल एक ही रंग का वाहन चला रहे हैं, तो प्रत्येक WS2811 चिप एक एलईडी के लिए RGB आउटपुट में से प्रत्येक का उपयोग करके 3 एल ई डी को नियंत्रित कर सकता है।
मैंने हाल ही में सिर्फ एक प्रोजेक्ट बनाया है जिसमें 5 ऐसे एल ई डी का उपयोग किया गया है: डोर 1 ओपन / बंद, डोर 2 ओपन / क्लोज, मोटर 1 एक्टिव, मोटर 2 एक्टिव और पावर। "सक्रिय" एल ई डी दोहरे उद्देश्य हैं क्योंकि मेरे पास सक्रिय मोटर से इनपुट है और Arduino के अंदर हरे रंग का सक्रिय ध्वज है।
1 पिन और स्थापित लाइब्रेरी के साथ, आप एल ई डी की किसी भी संख्या को नियंत्रित कर सकते हैं
मैं अपने लिए इस विधि का दावा नहीं करता, लेकिन मुझे वेबपेज MUX-DEMUX पर यह साफ-सुथरी ट्रिक मिली : CD40D पार्लर पार्लर
आउटपुट या ड्राइव इनपुट पढ़ने के लिए आप जो भी तरीका चुनते हैं (शिफ्ट रजिस्टर, मल्टीप्लेक्सर्स या खुद Arduino पिन का सीधा सीधा उपयोग) आप समानांतर सर्किट जोड़े के एक चतुर उपयोग से आउटपुट या इनपुट की संख्या को दोगुना कर सकते हैं (एक दोहरी फॉर्म बनाने के लिए) इनपुट या आउटपुट बैंक ), प्रत्येक समानांतर शाखा पर इंद्रियों के विरोध में डायोड को नियोजित करता है, और इनपुट / आउटपुट को उच्च और निम्न पर स्विच करता है।
आउटपुट के लिए विधि का वर्णन करने के लिए (इस मामले में एल ई डी, ध्यान दें कि अतिरिक्त डायोड की आवश्यकता नहीं है):
यदि आप इस उदाहरण में एलईडी की जोड़ी को "बैंक" मानते हैं, और आप LED_0 को प्रकाश में लाना चाहते हैं, तो आपको पिन 17 को हाई सेट करने की आवश्यकता है, और 18 से LOW को पिन करना होगा। (पिन नंबर भ्रमित कर रहे हैं, लेकिन वे मेरे साथ नंगे होने के बाद के उदाहरण से मेल खाते हैं)। LED_1 को प्रकाश में लाने के लिए, आप बस PINS को उल्टा कर दें। एल ई डी की डायोड प्रकृति दूसरे को बंद रखने के विपरीत दिशा को बहने से रोकती है।
इनपुट के लिए विधि का वर्णन करने के लिए (इस मामले में सीडीएस, ध्यान दें कि अतिरिक्त डायोड आवश्यक हैं):
यदि आप CdS लाइट सेंसर पर एनालॉग रीड करना चाहते हैं तो यह थोड़ा और जटिल हो जाता है। सबसे पहले, आपको प्रवाह को नियंत्रित करने के लिए प्रत्येक सेंसर में एक डायोड जोड़ना होगा। दूसरा, चूंकि आप मान पढ़ रहे हैं, इसलिए आपको फ्लोटिंग रखने के लिए इनपुट को उच्च या निम्न खींचने की आवश्यकता है। एक आलसी व्यक्ति होने के नाते, मैं आंतरिक पुल-अप प्रतिरोधों का उपयोग करके उन्हें उच्च खींचने जा रहा हूं। CdS_0 को पढ़ने के लिए, आप OUTPUT को पिन 17 मोड सेट करें और इसे LOW पर सेट करें। इससे यह जमीन बन जाती है। फिर आप INPUT को पिन 18 मोड सेट करें और पुल-अप रोकनेवाला को संलग्न करने के लिए इसे हाई पर सेट करें। अब आप पिन 18 (उर्फ एनालॉग पिन 4) पर एक रीड करने के लिए तैयार हैं। अन्य सेंसर तक पहुंचने के लिए, बस मोड और आउटपुट स्विच करें।
इसलिए, यदि आपके पास Arduino (सामान्य 3 के बजाय) पर 5 पिन का उपयोग करके एक CD4051 8 पोर्ट मल्टीप्लेक्स है, तो आप 16 इनपुट या आउटपुट या दो का मिश्रण प्राप्त कर सकते हैं।
इसी तरह, यदि आपके पास 4067 16 पोर्ट मल्टीप्लेक्स है तो आप 32 इनपुट या आउटपुट या दो का मिश्रण प्राप्त कर सकते हैं।
एक उदाहरण स्केच होगा:
/*
* Example of getting 16 i/o from 5 pins using a CD4051
*
* Based on tutorial and code by david c. and tomek n.* for k3 / malmö högskola
* http://www.arduino.cc/playground/Learning/4051?action=sourceblock&ref=1
*/
int selPin[] = { 14, 15, 16 }; // select pins on 4051 (analog A0, A1, A2)
int commonPin[] = { 17, 18}; // common in/out pins (analog A3, A4)
int led[] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW }; // stores eight LED states
int CdSVal[] = { 0, 0, 0, 0 }; // store last CdS readings
int cnt = 0; // main loop counter
int persistDelay = 100; // LED ontime in microseconds
void setup(){
Serial.begin(9600); // serial comms for troubleshooting (always)
for(int pin = 0; pin < 3; pin++){ // setup select pins
pinMode(selPin[pin], OUTPUT);
}
}
void loop(){
flashLEDs();
if (cnt == 0){
for(int x; x < 8; x++){
led[x] = random(2);
}
}
cnt++;
if (cnt > 100) { cnt = 0; }
}
void flashLEDs() {
for(int pin = 0; pin < 2; pin++) { // set common pins low
pinMode(commonPin[pin], OUTPUT);
digitalWrite(commonPin[pin], LOW);
}
for (int bank = 0; bank < 4; bank++) {
for(int pin = 0; pin < 3; pin++) { // parse out select pin bits
int signal = (bank >> pin) & 1; // shift & bitwise compare
digitalWrite(selPin[pin], signal);
}
if (led[bank * 2]){ // first LED
digitalWrite(commonPin[0], HIGH); // turn common on
delayMicroseconds(persistDelay); // leave led lit
digitalWrite(commonPin[0], LOW); // turn common off
}
if (led[bank * 2 + 1]){ // repeat for second LED
digitalWrite(commonPin[1], HIGH);
delayMicroseconds(persistDelay);
digitalWrite(commonPin[1], LOW);
}
}
}
जैसा कि मैंने पहली पंक्ति में कहा था, पूरा विवरण MUX-DEMUX: CD4051 पार्लर ट्रिक्स पर पाया जा सकता है
एक क्लास प्रोजेक्ट के लिए मैंने 7-सेगमेंट डिस्प्ले को ड्राइव करने के लिए एक सीडी 4024 और दो अरुडिनो पिन का इस्तेमाल किया।
इस दृष्टिकोण के लिए कुछ संकेत हैं। उदाहरण के लिए, high
रिपल काउंटर के पहले आउटपुट का मान लिखने के लिए केवल reset
घड़ी पिन को दो बार टॉगल करने की आवश्यकता होती है । लेकिन अगर आप high
सभी n पिन को लिखना चाहते हैं, तो आपको 2 बार n पिन क्लॉक टॉगल करने की आवश्यकता है , और उस समय के दौरान अन्य सभी पिन लगातार और बंद टॉगल कर रहे हैं।
यदि आपका एप्लिकेशन इन सीमाओं से निपट सकता है और आप पिन पर कम हैं, तो यह एक और विकल्प है।
बोनस उत्तर: यहां मल्टीप्लेक्सिंग इनपुट के बहुत सारे उदाहरण हैं , जिनमें से कई मल्टीप्लेक्सिंग आउटपुट पर भी लागू होते हैं।
काम के एक बिट (एक अलग बूटलोडर को स्थापित करने के साथ) एक अतिरिक्त सात I / O लाइनें ICSP1 और JP2 हेडर पर एक Uno पर उपलब्ध हैं। प्रतिस्थापन बूटलोडर को HoodLoader2 कहा जाता है । यह आपको एको पर Atmega328 और Atmega16U2 दोनों पर स्केच स्थापित करने की अनुमति देता है। कई प्रोसेसरों से निपटना इस पद्धति का उपयोग करने से मुख्य जटिलता होगी।
एक ऊनो पर, ICSP1 और JP2 हेडर पिंस पीबी 1 से कनेक्ट होते हैं ... एटमेगा 16 यू 2 के पीबी 7। इसके अलावा Atmega16U2 में लगभग 9 I / O पिन हैं, जिनका सर्किट बोर्ड से कोई संबंध नहीं है। एक माइक्रोस्कोप के तहत काम करने वाला व्यक्ति 16U2 पर कुल 18 I / O पिंस के तारों को संलग्न करने में सक्षम हो सकता है, जबकि तीन अन्य I / O पिंस को उनके साधारण कनेक्शन से जुड़ा हुआ छोड़ देता है।
HoodLoader2 मेगा बोर्ड पर भी काम करता है।