एक ही पिन में एक से अधिक बटन


12

मैं कुछ प्रोजेक्ट कर रहा हूं और मैं आर्डूइन को प्रोटोटाइप के लिए इस्तेमाल कर रहा हूं, मुझे 10 पुशबुटन (और चीजों के साथ) का उपयोग करना होगा और मेरे पास पर्याप्त पिन नहीं है।

एक समाधान जो मैं सोच सकता था कि एनालॉग पिन का उपयोग करें और उनमें से प्रत्येक का उपयोग दो पुश बटन के लिए करें, कुछ इस तरह से:

ढांच के रूप में

इस सर्किट का अनुकरण करें - सर्किटलैब का उपयोग करके बनाई गई योजनाबद्ध

इस तरह से मैं पिन A0 को पढ़ सकता हूं और यह जान सकता हूं कि उनमें से कौन सा वोल्टेज 5V या आधा है या नहीं, यह देखकर धक्का दिया जा सकता है।

यह एक अच्छा विचार है? अलग-अलग पुश बटन को एक ही समय में धकेला जाना चाहिए, जो एकमात्र समस्या है जिसे मैं बंद कर सकता हूं।

क्या बेहतर तरीके हैं?


आप कितने पिन का उपयोग करने की कोशिश कर रहे हैं?
W5VO

@ W5VO मुझे 22 की आवश्यकता होगी, 10 बटन के साथ, बोर्ड में केवल 18 हैं ... इसलिए प्रत्येक एनालॉग पिन के लिए दो बटन मुझे केवल 5 एनालॉग पिन की आवश्यकता है और बोर्ड में 6. है
MyUserIsThis

1
सिर्फ FYI करें, कई ऑटोमोबाइल निर्माता ऑडियो सिस्टम के लिए स्टीयरिंग व्हील-माउंटेड नियंत्रण के लिए एक ही दृष्टिकोण का उपयोग करते हैं। उनके पास अपने स्वयं के रोकनेवाला के साथ प्रत्येक (8-बटन) 8 बटन हैं। यह उन्हें व्हील से ऑडियो हेड तक सिंगल वायर (या क्लीन रिटर्न की गारंटी देने के लिए पेयर) चलाने की अनुमति देता है। यह पूरी तरह से अच्छा तरीका है।
DoxyLover

मेरा मानना ​​है कि आप वास्तव में तीन पिन का उपयोग कर सकते हैं सैद्धांतिक रूप से कुछ शिफ्ट रजिस्टरों का उपयोग करके अनंत संख्या में स्विच। मल्टीप्लेक्सर्स का उपयोग कर 256 स्विच इनपुट करने के लिए 8 पिन का उपयोग करना भी संभव है।
एल्विन वोंग

जवाबों:


22

जब आप एक ही एनालॉग पिन पर किसी भी संख्या में बटन कर सकते हैं, तो दो स्विच के लिए कई एनालॉग पिंस को क्यों बर्बाद करें?

इसे करने के दो तरीके। एक श्रृंखला में है, दूसरा समानांतर है।

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

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

यह कुछ कार स्टीयरिंग व्हील ऑडियो नियंत्रण है। और कुछ पुराने ipod इनलाइन कंट्रोलर कैसे काम करते हैं।

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


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

चूंकि मेरे अवरोधक नेटवर्क विश्लेषण बुनियादी तत्व बहुत ठोस नहीं हैं, इसलिए मैंने सर्किट इनपुट का उपयोग करके श्रृंखला सर्किट का अनुकरण करने और एनालॉग इनपुट पिन पर वोल्टेज माप के लिए एक सत्य-तालिका तैयार करने का प्रयास किया। मैंने पाया है कि, संयोजन B2 + B3 का परिणाम 2.499V और संयोजनों B1 + B4 का परिणाम 2.498V है। इस तरह के करीबी आंकड़ों के साथ, मुझे लगता है कि विशिष्ट 10-बिट एडीसी मल्टी-इनपुट संयोजनों को सही ढंग से अंतर करने में सक्षम नहीं होगा। आपका क्या कहना है ? बेशक, एक समय में एक कुंजी, पूरी तरह से काम करेगी - इसमें कोई संदेह नहीं है। नोट B1 = Button1।
इकारस 13४

दरअसल, B2 + B4 1.666V देता है, जबकि B2 + B3 + B4 भी 1.666V देता है! समाधान R1, R2, R3, R4 के लिए प्रतिरोधों के विभिन्न मूल्यों का उपयोग कर रहा हो सकता है और सभी को 1K के नहीं रख सकता है। क्या कहते हो ?
इकारस 13४

7
2R / R सीढ़ी वाले w पुराने बटन को D / A में बदल देते हैं, और बटन प्रेस के हर कॉम्बो का एक विशिष्ट मूल्य होगा। मैं इसे N-3 बटन के साथ काम करने के लिए विश्वास करूँगा, जहाँ N ADC रिज़ॉल्यूशन है
स्कॉट सीडमैन

1
@ icarus74 हाँ, सभी 1k के बजाय विभिन्न मूल्यों का उपयोग करके, अद्वितीय संयोजन देगा। एक विस्तृत श्रृंखला के लिए 1k, 2k, 4k, 8k, 16k, आदि (या 1k, 4k, 16k, आदि)
आज़माएं

10

यह काम करेगा, लेकिन एक बेहतर तरीका मैट्रिक्स के साथ है । यह एक मैट्रिक्स के साथ मल्टीप्लेक्सिंग एलईडी के समान अवधारणा है, लेकिन स्विच के साथ।

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

यह एक 2x2 मैट्रिक्स है। एक उपयोगी मैट्रिक्स बड़ा है, क्योंकि इस आकार पर, आप किसी भी पिन को स्विच को व्यक्तिगत रूप से जोड़ने से नहीं बचा रहे हैं।

एक 3x3 मैट्रिक्स के साथ आप 9 स्विच प्राप्त कर सकते हैं। आपको 10 की आवश्यकता है, इसलिए आप या तो एक पंक्ति या एक और कॉलम जोड़ सकते हैं और 12 स्विच का समर्थन कर सकते हैं, या बस 10 वीं स्विच को अपने पिन पर रख सकते हैं।

यहां लाभ यह है कि आप डिजिटल IO का उपयोग कर सकते हैं, जो कि सस्ता है और आमतौर पर एनालॉग IO की तुलना में अधिक भरपूर है। एक शिफ्ट रजिस्टर अधिक डिजिटल आईओ जोड़ने का एक सस्ता तरीका है, अगर आप बाहर भागते हैं।

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


सिर्फ एक प्रश्न। अगर मुझे अधिक पिन की आवश्यकता होगी तो यह बेहतर क्यों है? इस तरह मुझे 9x9 मैट्रिक्स के लिए 6 पिन और दसवें के लिए एक और पिन की आवश्यकता होगी, जबकि मैंने जो बनाया है, उसमें मुझे केवल 5 पिन की आवश्यकता होगी।
MyUserIs यह

@MyUserIs यह बेहतर है क्योंकि स्विच की कुल संख्या बढ़ जाती है। पूर्व 5x5 मैट्रिक्स से आप 25 स्विच को 10 पिन से कनेक्ट कर सकते हैं। अधिक सामान्य टिप्पणी के रूप में, पारंपरिक तरीके से दोनों चीजें करना किसी और के लिए यह समझने में आसान बनाता है कि आपने क्या किया है; और आपके लिए यह समझने के लिए कि अन्य लोग सर्किट क्या करते हैं (क्योंकि आपने खुद को मानक कार्यान्वयन पर प्रशिक्षित किया है)।
डेन जुगनू

@MyUserIs यह संपादन देखें। राहगीर का भी अच्छा जवाब है।
फिल फ्रॉस्ट

2

एनालॉग इनपुट एक वैध दृष्टिकोण है, आपको इस पर कई बटन रखने में सक्षम होना चाहिए। मैं MCP23017 की तरह एक IO एक्सपैंडर चिप का उपयोग करने का सुझाव देना चाहूंगा । इसमें 16 पिन होते हैं जो इनपुट हो सकते हैं और आउटपुट होते हैं और इसका नियंत्रण I2C के साथ दो पिन का उपयोग करके किया जाता है। Adafruit के पास इसके लिए एक Arduino लाइब्रेरी है।


2

हां, यह एक अच्छा विचार है, लेकिन वैसे भी मैं एक विकल्प का प्रस्ताव करने जा रहा हूं जो मेरे दिमाग में आया था।

यदि आपके पास लॉजिक गेट्स तक पहुंच है, तो आप बूलियन लॉजिक के माध्यम nसे ceil(log2(n + 1))पिन करने के लिए कई बटन मैप कर सकते हैं । एक उदाहरण के रूप में, यदि आपके पास 4 बटन हैं, लेकिन केवल 2 पिन आप इस तरह से एक विन्यास बना सकते हैं:

Buttons | Pins
----    | --
0123    | 01
----    | --
0001    | 00
0010    | 01
0100    | 10
1000    | 11

यही है, button0दबाया जाना चाहिए pin0और pin1कम होना चाहिए ; button1, pin0कम और pin1उच्च; button2, pin0उच्च pin1कम; और button3, pin0और pin1उच्च।

इससे निम्नलिखित बूलियन अभिव्यक्तियाँ उत्पन्न होती हैं

pin0 = button2 OR button3
pin1 = button1 OR button3

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

बेशक, कई बटन एक साथ दबाए जाने पर अभी भी समस्याएं होंगी।

इसके अलावा, यदि आप अभी भी प्रतिरोधक दृष्टिकोण के साथ जा रहे हैं, तो प्रतिरोधों पर अन्य मानों का उपयोग करने पर विचार करें जो कि 100 ओम के आदेश पर प्रतिरोधों के माध्यम से 5 वी के बाद से 100 ओम 10 एमए के 10 के आदेश पर एक करंट होगा। अनावश्यक रूप से उच्च। मुझे लगता है कि अधिक उचित मूल्य 10k ओम या 47k ओम होगा।


आपके दृष्टिकोण के लिए धन्यवाद। मैंने भी ऐसा ही कुछ सोचा था, लेकिन मेरे पास तर्क द्वार नहीं हैं और मेरे पास प्रतिरोधों के टन हैं। और हां मैं आमतौर पर इसके लिए 10k रेसिस्टर्स का इस्तेमाल करता हूं, 100 ओम सिर्फ सर्किट एडिटर का डिफॉल्ट वैल्यू था। आपकी मदद के लिए पुनः शुक्रिया।
MyUserIs यह

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

ठीक है! आपकी परियोजना के लिए शुभकामनाएं!
निजोकिम

0

निम्नलिखित पृष्ठ उपयोगी हो सकता है:

http://txapuzas.blogspot.co.uk/2010/07/papertecladoanalogico-varios-pulsadores.html

यह स्पैनिश में लिखा गया है, लेकिन एसेंशियल आरेखित हैं, मुझे लगता है कि यह आपके लिए बहुत अच्छा विचार है।

इस वीडियो पर आप अंतिम परिणाम देख सकते हैं, स्केच पृष्ठ पर भी है, अपनी परियोजनाओं पर कार्यान्वयन को आसान बनाने के लिए एन्कैप्सुलेटेड फ़ंक्शन

यूट्यूब वीडियो: एक सिंगल पिन पर 10 की-बोर्ड

यहाँ उपरोक्त साइट से एक योजनाबद्ध है:

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

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


2
कृपया यह जानने के लिए कि क्या यह मर जाता है, विशेष रूप से स्पैनिश में होने पर यह लिंक का एक सारांश जोड़ देता है और यह एक अंग्रेजी भाषा की साइट है।
पीटर जे

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

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

मैं इस मंच में एक धोखेबाज़ हूं, मैं कैसे बना सकता हूं कि आप मुझे बताएं? विशेष में कुछ अनुभाग ...? आपके समय के लिए धन्यवाद
जॉनीडाउविल

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