डिजिटल I / O के रूप में सभी पिन का उपयोग करें


11

डिजिटल पिन की संख्या बढ़ाएं

कई पोस्ट हैं जो बताते हैं कि विभिन्न अर्डिनो पर सिर्फ मानक पिंस से अधिक का उपयोग कैसे करें, लेकिन उनमें से कोई भी सीमा और प्रॉम्पल को ठीक से नहीं समझाता है।

यहां छवि विवरण दर्ज करें

अरुडिनो यूनो:

1. आप एनालॉग पिन का उपयोग कर सकते हैं

Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5

digitalWrite(14,HIGH);
or
digitalWrite(A0,HIGH);

2. आप एसडीए, एससीएल और ए 4, ए 5 दोनों का उपयोग नहीं कर सकते हैं क्योंकि वे मूल रूप से समान (18,19) हैं।

3. आप भी TX / RX का उपयोग कर सकते हैं।

"ऐसा मत करो, तुम धारावाहिक संचार को तोड़ दो ..."

"कभी भी पिन 0 और 1 का उपयोग न करें"

"आप TX / Rx पिन का उपयोग नहीं कर सकते"

आप कर सकते हैं ... लेकिन आपको सावधानी बरतने की जरूरत है। कौन सा?

यह USB पर सॉफ्टवेयर धारावाहिक होना चाहिए, है ना?

या मैं USB सीरियल को तोड़ दूं?

अगर मैं TX / RX का उपयोग करता हूं तो क्या आंतरिक चिप समस्याएं हैं?

जैसा कि मैं कोड में उन TX / RX पिन का उपयोग करता हूं जो मुझे संभवतः उपयोग नहीं करना चाहिए Serial.print()?

यदि मैं Serial.print()0,1 पिन का उपयोग करने वाले कोड को अपलोड करने के बाद हटाना भूल गया तो क्या होगा ?

अगर कुछ गलत हो जाता है, तो हार्डवेयर को arduino / बूटलोडर को कैसे रीसेट करना है?

जैसा कि विभिन्न अन्य Arduino है जो विभिन्न चिप्स का उपयोग करते हैं, क्या उपरोक्त सभी Atmel चिप्स के लिए मान्य है?

तो, मैं उन TX / RX या शायद अन्य एनालॉग पिंस का उपयोग करने से पहले क्या जानता हूं?

आपके आई / ओ का विस्तार करने के लिए सस्ते शिफ्टग्रेक्टर, pwm ड्राइवर, एलईडी ड्राइवर, spi, i2c और अधिक ic हैं।


लेकिन अगर बड़ी समस्याएं नहीं हैं, तो इसका मतलब है कि आर्डिनो में 20 आई / ओ पिन हैं ...

आप सैद्धांतिक रूप से नियंत्रण कर सकते हैं:

17x3 = 51 = 17 RGB leds (multiplexing, pwm sourcing&sinking);
14x6 = 84 leds (multiplexing, pwm on 6 rows/colums );
10x10 = 100 leds (multiplexing, high low);
20x(20-1) = 380 leds (charlieplexing, high low);
// yes it would flicker

यदि मैं गलत हूं तो मुझे सही करों। इसका मतलब है कि आप डायोड और एक आर्डिनो का उपयोग करके 380 "जो भी" को नियंत्रित करने में सक्षम हैं।

जवाबों:


8

मुख्य मुद्दा पिन 0 और 1 के साथ है।

कई पिनों को कई कार्य सौंपे गए हैं, जैसे कि A4 और A5 भी I2C पिन हैं, पिन 10/11/12/13 भी SPI पिन हैं, आदि। लेकिन पिन 0 और 1 एकमात्र बहु-कार्य पिन हैं जो वास्तव में हैं बोर्ड पर उनके साथ कुछ जुड़ा हुआ है।

मल्टी-फंक्शन होने के दौरान अन्य सभी पिन, उनके फ़ंक्शन को मूल रूप से परिभाषित करते हैं कि आप उन्हें क्या देते हैं। चूंकि पिन 0 और 1 बोर्ड पर पहले से ही USB इंटरफ़ेस चिप से जुड़े हुए हैं, इसलिए उनकी उपयोग की संभावनाएं कुछ हद तक सीमित हैं।

  • जैसे ही आप अपने स्केच ( Serial.begin()) में सीरियल को सक्षम करते हैं, उन दो पिनों को अब डिजिटल IO के लिए मज़बूती से उपयोग नहीं किया जा सकता है।

इसका मतलब है कि आप या तो हार्डवेयर सीरियल पोर्ट का उपयोग कर सकते हैं या आप डिजिटल आईओ के लिए पिन का उपयोग कर सकते हैं, लेकिन दोनों नहीं।

  • पिन 0 और 1 से जुड़े डिवाइस सीरियल कनेक्शन के साथ हस्तक्षेप कर सकते हैं

जिसमें स्केच अपलोड करना शामिल है। आपके पास पीसी से आने वाले सीरियल डेटा हैं जबकि एक ही पिन उनसे जुड़ी अन्य चीजों से प्रभावित हो रहा है। सबसे आम एक जीपीएस मॉड्यूल जैसी चीजें हैं जो उन पिनों से जुड़ती हैं और लगातार सीरियल डेटा भेजती हैं। यह सीरियल डेटा पीसी के सीरियल डेटा के साथ संघर्ष करेगा और न ही सही आएगा।

  • यदि धारावाहिक को आपके स्केच से बाधित किया जा रहा है तो आप स्केच कैसे अपलोड करते हैं? आप बोर्ड को "रीसेट" कैसे करते हैं?

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

  • क्या यह सभी Arduino बोर्डों को प्रभावित करता है?

नहीं, केवल वे जो USB से सीरियल ब्रिज चिप का उपयोग करते हैं - जो कि Uno, ड्यू, मेगा इत्यादि जैसी चीजें हैं। एक सीधा USB कनेक्शन जिनके पास स्केच अपलोड करने के लिए TX और RX पिन का उपयोग नहीं करते हैं - वे समर्पित USB का उपयोग करते हैं D + और D- पिन। कि लियोनार्डो की तरह बोर्ड, कुछ छोटे (मिनी? सूक्ष्म; मैं भूल जाते हैं) जो बोर्डों, आदि।


"कई ढाल अब एक छोटे से स्विच को जोड़ना शुरू कर रहे हैं" शांत। माइक्रो में "USB से सीरियल ब्रिज चिप" है? इसका मतलब यह है कि मैं पिन का उपयोग कर सकते हैं 0,1 uno पर, लेकिन माइक्रो पर नहीं?
कोको

आप उन्हें किसी भी उपयोग कर सकते हैं, जिनके पास सीरियल ब्रिज के लिए यूएसबी नहीं है। Uno के पास एक है, Mega के पास एक है, Mini के पास एक नहीं है, हालाँकि आपको इसे प्रोग्राम करने के लिए TX / RX पिन से बाहरी रूप से कनेक्ट करने की आवश्यकता है। वे सभी बाहर हैं। माइक्रो, और लियोनार्डो के पास एक नहीं है, इसलिए आप उन का उपयोग कर सकते हैं।
Majenko

Thats क्या @ निक गैमन के बारे में बात कर रहा है? Uno और आपके द्वारा लिखे गए अन्य लोगों के पास पुलअप रेसिस्टर्स हैं जो आपको पिन 0 और 1 का ठीक से उपयोग करने की अनुमति नहीं देते हैं, लेकिन माइक्रो में कोई भी पुलअप रेसिस्टर नहीं है और इसलिए पिन 0 और 1 काम करना उचित है और नए स्केच अपलोड करने के लिए यूएसबी भी है?
कोको

एक बार निक के लिए उस बिंदु पर गलत है। कोई पुलअप प्रतिरोध नहीं है। मुख्य MCU और USB चिप दोनों एक ही समय में विपरीत स्तरों पर समान लाइन को चलाने की कोशिश करते हैं तो समस्याओं को रोकने के लिए एक जोड़ी छोटी इनलाइन रेसिस्टर्स है। आप उन्हें Uno योजनाबद्ध पर RN4A और RN4B के रूप में देख सकते हैं।
Majenko

यदि USB चिप RX पिन को चलाने की कोशिश करता है (आपके पास USB पोर्ट प्लग इन है और आप सीरियल कनेक्शन को खोलते हैं [या शायद यह सिर्फ प्लग किया गया है, निश्चित नहीं है]) तो यह RX पिन पर वोल्टेज को प्रभावित कर सकता है जो भी स्वतंत्र हो आप अपने स्केच में कर रहे हैं, इसलिए हो सकता है कि चार्लीगिंग जैसी चीजों के लिए उस पिन का इस्तेमाल करना सुरक्षित न हो।
Majenko

1

मैं अपर्याप्त प्रतिष्ठा के कारण टिप्पणी नहीं कर सकता, लेकिन मैं यह बताना चाहता हूं कि ओपी पिनआउट में कम से कम एक पिन गलत है!

पीबी 6 पीबी 5 होना चाहिए

मैंने यह जानने में काफी समय बिताया कि मैं SCK को स्कोप (SPI बस) पर क्यों नहीं देख सकता। मैं कम स्तर पर काम कर रहा था, आईडीई के साथ नहीं।

के रूप में यह पहली तस्वीर है कि जब googling मैं दूसरों के लिए एक ही परेशानी से बचना चाहता था आता है ...


0

20x (20-1) = 380 एलईड (चार्लीप्लेक्सिंग, उच्च निम्न); यदि मैं गलत हूं तो मुझे सही करों। इसका मतलब है कि आप डायोड और एक Arduino का उपयोग करके 380 "जो भी" को नियंत्रित करने में सक्षम हैं।

सबसे पहले, 380 का आंकड़ा 20 पिन (20 2 - 20) के लिए सही है, हालांकि पिन 0 और 1 Atmega16U2 पर पुल-अप प्रतिरोधों से जुड़े हुए हैं, इसलिए वे वास्तव में 0V पर कभी नहीं होते हैं। यदि आप एक खाली स्केच लोड करते हैं, तो आप पिन 0 और 1 पर 5 वी मापेंगे।

दूसरा, आप 380 "whatevers" नहीं चला सकते हैं आप चार्लीप्लेक्सिंग के माध्यम से 380 एल ई डी ड्राइव कर सकते हैं । एलईडी की संपत्ति, जो वर्तमान केवल इसके माध्यम से एक तरह से बहती है, यह काम करने के तरीके के लिए महत्वपूर्ण है।

संबंधित प्रश्न क्या वहाँ एक रास्ता है जो arduino पर 14 से अधिक आउटपुट पिन है?


पहला: क्या होता है अगर मैं पिन 0 और 1 पर 2 लीड उलटा (प्रतिरोधों के साथ) डालता हूं, तो पिन 0 हाई पिन 1 कम देरी 1 सेकंड और सेट पिन 0 कम और पिन 1 उच्च विलंब 1 सेकंड?
cocco

दूसरा: "व्हाटएवर्स" से मेरा मतलब है स्विच ... क्लिक स्विच, रीड स्विच, सेंसर या हर प्रकार के इनपुट आउटपुट जो उच्च निम्न का समर्थन करते हैं। Electronicdesign.com/site-files/electronicdesign.com/files/… डायोड के साथ किया।
cocco

असल में ऐसा नहीं है। चार्लीप्लेक्सिंग मल्टीप्लेक्सिंग का एक रूप है, इसलिए जब तक आप अपने स्विच को पागल की तरह नहीं चाहते हैं, तब तक यह वास्तव में उनके लिए काम नहीं करेगा। और यह एक आउटपुट स्थिति है, इसलिए आप इनपुट नहीं करेंगे, जैसे आप सोचते हैं। मेरा सुझाव है कि आप अन्य लिंक पढ़ें। शिफ्ट रजिस्टर, या पोर्ट विस्तारक, यहां चार्लीप्लेक्सिंग की तुलना में अधिक व्यावहारिक हैं।
निक गैमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.