विषयसूची:
- चरण 1: सर्किट
- चरण 2: सबूत - एक्सेल
- चरण 3: Arduino प्रोग्रामिंग
- चरण 4: टिंकरकैड सर्किट
- चरण 5: "इतना लंबा, और सभी मछलियों के लिए धन्यवाद।" (रेफरी.1)
- चरण 6: संदर्भ
वीडियो: Arduino के लिए 6 बटन के लिए 1 एनालॉग इनपुट का उपयोग करें: 6 चरण
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
मैंने अक्सर सोचा है कि मैं अपने Arduino के लिए और अधिक डिजिटल इनपुट कैसे प्राप्त कर सकता हूं। यह हाल ही में मेरे साथ हुआ है कि मुझे कई डिजिटल इनपुट लाने के लिए एनालॉग इनपुट में से एक का उपयोग करने में सक्षम होना चाहिए। मैंने एक त्वरित खोज की और पाया कि लोग ऐसा करने में सक्षम थे, लेकिन ये एक समय में केवल एक बटन दबाए जाने की अनुमति देते थे। मैं बटनों के किसी भी संयोजन को एक साथ दबाए जाने में सक्षम होना चाहता हूं। इसलिए, TINKERCAD CIRCUITS की मदद से, मैं इसे पूरा करने के लिए निकल पड़ा।
मुझे एक साथ बटन प्रेस क्यों चाहिए? जैसा कि टिंकरकैड सर्किट डिजाइन में दिखाया गया है, इसका उपयोग कार्यक्रम के भीतर विभिन्न मोड के चयन के लिए डीआईपी स्विच इनपुट के लिए किया जा सकता है।
मैं जिस सर्किट के साथ आया हूं वह Arduino से उपलब्ध 5V स्रोत का उपयोग करता है और 7 प्रतिरोधों और 6 बटन या स्विच का उपयोग करता है।
चरण 1: सर्किट
Arduino के एनालॉग इनपुट हैं जो 0V से 5V इनपुट स्वीकार करते हैं। इस इनपुट में 10-बिट रिज़ॉल्यूशन है, जिसका अर्थ है कि सिग्नल 2^10 सेगमेंट या 1024 काउंट में टूट गया है। इसके आधार पर, एक साथ प्रेस के लिए अनुमति देते समय हम कभी भी एक एनालॉग इनपुट में सबसे अधिक इनपुट कर सकते हैं, 10 बटन से 1 एनालॉग इनपुट होगा। लेकिन, यह एक संपूर्ण दुनिया नहीं है। कंडक्टरों में प्रतिरोध, बाहरी स्रोतों से शोर और अपूर्ण शक्ति है। इसलिए, अपने आप को बहुत अधिक लचीलापन देने के लिए, मैंने इसे 6 बटनों के लिए डिज़ाइन करने की योजना बनाई। यह, आंशिक रूप से, इस तथ्य से प्रभावित था कि टिंकरकैड सर्किट में 6-स्विच डीआईपी स्विच ऑब्जेक्ट था, जो परीक्षण को आसान बना देगा।
मेरे डिजाइन में पहला कदम यह सुनिश्चित करना था कि प्रत्येक बटन, व्यक्तिगत रूप से दबाए जाने पर, एक अद्वितीय वोल्टेज प्रदान करेगा। इसने सभी प्रतिरोधों के समान मान होने से इनकार किया। अगला कदम यह था कि प्रतिरोध मान, समानांतर में जोड़े जाने पर, किसी एकल प्रतिरोधक मान के समान प्रतिरोध नहीं हो सकता था। जब प्रतिरोधों को समानांतर में जोड़ा जाता है, तो परिणामी प्रतिरोध की गणना Rx=1/[(1/R1)+(1/R2)] द्वारा की जा सकती है। तो, अगर R1=2000 और R2=1000, Rx=667। मैंने अनुमान लगाया कि प्रत्येक प्रतिरोधक के आकार को दोगुना करके, मुझे किसी भी संयोजन के लिए समान प्रतिरोध नहीं दिखाई देगा।
तो, इस बिंदु तक मेरे सर्किट में 6 स्विच होने थे, प्रत्येक का अपना अवरोधक था। लेकिन, इस परिपथ को पूरा करने के लिए एक और अवरोधक की आवश्यकता है।
अंतिम रोकनेवाला के 3 उद्देश्य हैं। सबसे पहले, यह एक पुल-डाउन रोकनेवाला के रूप में कार्य करता है। रेसिस्टर के बिना, जब कोई बटन नहीं दबाया जाता है, तो सर्किट अधूरा होता है। यह Arduino के एनालॉग इनपुट पर वोल्टेज को किसी भी वोल्टेज क्षमता पर तैरने की अनुमति देगा। एक पुल-डाउन रोकनेवाला अनिवार्य रूप से वोल्टेज को 0 वी तक खींचता है। दूसरा उद्देश्य इस सर्किट की धारा को सीमित करना है। ओम का नियम कहता है कि वी = आईआर, या वोल्टेज = प्रतिरोध से वर्तमान गुणा। किसी दिए गए वोल्टेज स्रोत के साथ, बड़ा रोकनेवाला का मतलब है कि करंट छोटा होगा। इसलिए, यदि 500ohm रोकनेवाला पर 5V सिग्नल लगाया गया था, तो हम जो सबसे बड़ा करंट देख सकते थे, वह 0.01A, या 10mA होगा। तीसरा उद्देश्य सिग्नल वोल्टेज प्रदान करना है। अंतिम रोकनेवाला के माध्यम से बहने वाली कुल धारा होगी: i=5V / Rtotal, जहां Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. हालाँकि, प्रत्येक रेसिस्टर के लिए केवल 1/Rx शामिल करें जिसमें उसका संबंधित बटन दबाया गया हो। कुल करंट से, एनालॉग इनपुट को आपूर्ति की जाने वाली वोल्टेज i*Rlast, या i*500 होगी।
चरण 2: सबूत - एक्सेल
यह साबित करने का सबसे तेज़ और आसान तरीका है कि मुझे अद्वितीय प्रतिरोध मिलेगा और इस प्रकार इस सर्किट के साथ अद्वितीय वोल्टेज एक्सेल की क्षमताओं का उपयोग करना था।
मैंने स्विच इनपुट के सभी संभावित संयोजनों को स्थापित किया और इन क्रमिक रूप से निम्नलिखित बाइनरी पैटर्न को व्यवस्थित किया। "1" का मान इंगित करता है कि स्विच चालू है, रिक्त इंगित करता है कि यह बंद है। स्प्रेडशीट के शीर्ष पर, मैंने प्रत्येक स्विच के लिए और पुल-डाउन रोकनेवाला के लिए प्रतिरोध मान डाला। मैंने तब प्रत्येक संयोजन के लिए समान प्रतिरोध की गणना की, सिवाय इसके कि जब सभी प्रतिरोधक बंद हों क्योंकि इन प्रतिरोधों का कोई प्रभाव नहीं पड़ेगा, बिना बिजली स्रोत की आपूर्ति के। मेरी गणना को आसान बनाने के लिए ताकि मैं प्रत्येक संयोजन को कॉपी और पेस्ट कर सकूं, मैंने गणना में सभी संयोजनों को प्रत्येक स्विच मान (0 या 1) को इसके उल्टे प्रतिरोध मान से गुणा करके शामिल किया। ऐसा करने से स्विच बंद होने पर गणना से इसका प्रतिरोध समाप्त हो गया। परिणामी समीकरण को स्प्रेडशीट की छवि में देखा जा सकता है, लेकिन Req = Rx+1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6)। इटोटल = 5V / Req का उपयोग करके, हम सर्किट के माध्यम से कुल करंट निर्धारित करते हैं। यह वही करंट है जो पुल-डाउन रेसिस्टर से होकर गुजरता है, और हमें हमारे एनालॉग इनपुट को वोल्टेज प्रदान करता है। इसकी गणना विन = इटोटल x आरएक्स के रूप में की जाती है। रिक डेटा और विन डेटा दोनों की जांच करते हुए, हम देख सकते हैं कि हमारे पास वास्तव में अद्वितीय मूल्य हैं।
इस बिंदु पर, ऐसा प्रतीत होता है कि हमारा सर्किट काम करेगा। अब यह पता लगाने के लिए कि Arduino को कैसे प्रोग्राम किया जाए।
चरण 3: Arduino प्रोग्रामिंग
जब मैंने यह सोचना शुरू किया कि Arduino को कैसे प्रोग्राम किया जाए, तो मैंने शुरू में यह निर्धारित करने के लिए अलग-अलग वोल्टेज रेंज स्थापित करने की योजना बनाई कि क्या स्विच चालू या बंद है। लेकिन, एक रात बिस्तर पर लेटे हुए, मेरे साथ ऐसा हुआ कि मुझे ऐसा करने के लिए एक समीकरण खोजने में सक्षम होना चाहिए। कैसे? एक्सेल। एक्सेल में चार्ट में डेटा को सर्वोत्तम रूप से फिट करने के लिए समीकरणों की गणना करने की क्षमता है। ऐसा करने के लिए, मुझे उस मान के अनुरूप वोल्टेज इनपुट बनाम स्विच (बाइनरी) के पूर्णांक मान का समीकरण चाहिए। अपनी एक्सेल वर्कबुक में, मैंने स्प्रैडशीट के बाईं ओर इंटीजर वैल्यू को नीचे रखा है। अब मेरा समीकरण निर्धारित करने के लिए।
एक्सेल के भीतर एक लाइन के समीकरण को कैसे निर्धारित करें, इस पर एक त्वरित ट्यूटोरियल यहां दिया गया है।
1) ऐसे सेल का चयन करें जिसमें कोई डेटा न हो। यदि आपके पास एक सेल चुना गया है जिसमें डेटा है, तो एक्सेल यह अनुमान लगाने का प्रयास करेगा कि आप क्या प्रवृत्ति करना चाहते हैं। यह एक प्रवृत्ति को स्थापित करना और अधिक कठिन बना देता है, क्योंकि एक्सेल शायद ही कभी सही ढंग से भविष्यवाणी करता है।
2) "इन्सर्ट" टैब चुनें और "स्कैटर" चार्ट चुनें।
3) चार्ट बॉक्स में राइट क्लिक करें और "डेटा चुनें …" पर क्लिक करें। यह "डेटा स्रोत चुनें" विंडो पॉप अप करेगा। डेटा का चयन जारी रखने के लिए जोड़ें बटन का चयन करें।
4) इसे एक सीरीज नाम दें (वैकल्पिक)। ऊपर तीर पर क्लिक करके और फिर वोल्टेज डेटा का चयन करके एक्स-एक्सिस के लिए रेंज का चयन करें। ऊपर तीर पर क्लिक करके और फिर पूर्णांक डेटा (0-63) का चयन करके Y-अक्ष के लिए श्रेणी का चयन करें।
5) डेटा बिंदुओं पर राइट क्लिक करें और "ट्रेंडलाइन जोड़ें …" का चयन करें "प्रारूप ट्रेंडलाइन" विंडो में, बहुपद बटन का चयन करें। चलन को देखते हुए, हम देखते हैं कि 2 का क्रम काफी मेल नहीं खाता। मैंने ऑर्डर ऑफ़ ३ का चयन किया और महसूस किया कि यह बहुत अधिक सटीक था। "चार्ट पर प्रदर्शन समीकरण" के लिए चेकबॉक्स चुनें। अंतिम समीकरण अब चार्ट पर प्रदर्शित होता है।
6) किया।
ठीक है। Arduino प्रोग्राम को लौटें। अब जब हमारे पास समीकरण है, तो Arduino की प्रोग्रामिंग करना आसान है। स्विच स्थिति का प्रतिनिधित्व करने वाले पूर्णांक की गणना कोड की 1 पंक्ति में की जाती है। "बिट्रेड" फ़ंक्शन का उपयोग करके, हम प्रत्येक व्यक्तिगत बिट के मूल्य को पकड़ सकते हैं और इस प्रकार प्रत्येक बटन की स्थिति जान सकते हैं। (फ़ोटो देखें)
चरण 4: टिंकरकैड सर्किट
यदि आपने टिंकरकैड सर्किट की जाँच नहीं की है, तो इसे अभी करें। रुको!!!! मेरे इंस्ट्रक्शनल को पढ़ना समाप्त करें, और फिर इसे देखें। TinkerCAD सर्किट Arduino सर्किट का परीक्षण करना बहुत आसान बनाता है। इसमें कई विद्युत वस्तुएं और Arduinos शामिल हैं, यहां तक कि आपको परीक्षण के लिए Arduino को प्रोग्राम करने की अनुमति भी देता है।
अपने सर्किट का परीक्षण करने के लिए, मैंने डीआईपी स्विच पैक का उपयोग करके 6 स्विच स्थापित किए और उन्हें प्रतिरोधों से बांध दिया। यह साबित करने के लिए कि मेरी एक्सेल स्प्रेडशीट में वोल्टेज मान सही था, मैंने Arduino के इनपुट पर एक वोल्टमीटर प्रदर्शित किया। यह सब उम्मीद के मुताबिक काम किया।
यह साबित करने के लिए कि Arduino प्रोग्रामिंग ने काम किया है, मैं Arduino के डिजिटल आउटपुट का उपयोग करके स्विच की स्थिति को LED में आउटपुट करता हूं।
मैंने फिर हर संभव संयोजन के लिए हर स्विच को स्विच किया और "आईटी वर्क्स" कहने में गर्व महसूस हो रहा है !!!
चरण 5: "इतना लंबा, और सभी मछलियों के लिए धन्यवाद।" (रेफरी.1)
मुझे अभी तक वास्तविक उपकरणों का उपयोग करके इसे आज़माना है, क्योंकि मैं वर्तमान में काम के लिए यात्रा कर रहा हूँ। लेकिन, टिंकरकैड सर्किट के साथ इसे साबित करने के बाद, मुझे विश्वास है कि यह काम करेगा। चुनौती यह है कि मैंने जो प्रतिरोधकों के मान निर्दिष्ट किए हैं, वे प्रतिरोधकों के लिए सभी मानक मान नहीं हैं। इसके आसपास जाने के लिए, मैं उन मूल्यों को प्राप्त करने के लिए पोटेंशियोमीटर और प्रतिरोधों के संयोजन का उपयोग करने की योजना बना रहा हूं जिनकी मुझे आवश्यकता है।
मेरे निर्देश को पढ़ने के लिए धन्यवाद। मुझे आशा है कि यह आपकी परियोजनाओं में आपकी सहायता करेगा।
कृपया टिप्पणी छोड़ें यदि आपने इसी बाधा से निपटने का प्रयास किया है और आपने इसे कैसे हल किया है। मुझे ऐसा करने के और तरीके सीखना अच्छा लगेगा।
चरण 6: संदर्भ
आपने नहीं सोचा था कि मैं इसके स्रोत का संदर्भ दिए बिना एक उद्धरण प्रदान करूंगा, है ना?
संदर्भ। 1: एडम्स, डगलस। इतने लंबे समय और सारी मछलियों के लिए धन्यवाद । (द हिचहाइकर गाइड टू द गैलेक्सी "त्रयी" की चौथी पुस्तक)
सिफारिश की:
एक एनालॉग इनपुट का उपयोग करके 4 बटन गेम: 6 चरण (चित्रों के साथ)
एक एनालॉग इनपुट का उपयोग करते हुए 4 बटन गेम: यह निर्देश कई बटनों के लिए एक एनालॉग इनपुट लाइन का उपयोग करने पर केंद्रित है, जिसे एक दूसरे से स्वतंत्र पाया जा सकता है। और इन बटनों के उपयोग को उजागर करने के लिए चार अलग-अलग 4-बटन गेम खेलने के लिए सॉफ्टवेयर शामिल है। सभी खेल (8 इंच में
एक एनालॉग पिन का उपयोग करके एकाधिक एनालॉग मान कैसे पढ़ें: 6 चरण (चित्रों के साथ)
एक एनालॉग पिन का उपयोग करके एकाधिक एनालॉग मान कैसे पढ़ें: इस ट्यूटोरियल में, मैं आपको केवल एक एनालॉग इनपुट पिन का उपयोग करके कई एनालॉग मानों को पढ़ने का तरीका दिखाने जा रहा हूं।
Visuino एलईडी जैसी चीजों को नियंत्रित करने के लिए इनपुट के रूप में एक बटन का उपयोग कैसे करें: 6 कदम
Visuino एलईडी जैसी चीजों को नियंत्रित करने के लिए एक इनपुट के रूप में एक बटन का उपयोग कैसे करें: इस ट्यूटोरियल में हम सीखेंगे कि एक साधारण बटन और Visuino का उपयोग करके एलईडी को कैसे चालू और बंद किया जाए। एक प्रदर्शन वीडियो देखें।
एवीआर माइक्रोकंट्रोलर। एक पुश बटन स्विच का उपयोग करके एलईडी को टॉगल करें। पुश बटन डिबगिंग।: 4 कदम
एवीआर माइक्रोकंट्रोलर। एक पुश बटन स्विच का उपयोग करके एलईडी को टॉगल करें। पुश बटन डिबाउंसिंग: इस खंड में, हम सीखेंगे कि एक बटन स्विच से इनपुट के अनुसार तीन एलईडी की स्थिति को टॉगल करने के लिए ATMega328PU के लिए प्रोग्राम C कोड कैसे बनाया जाए। साथ ही, हमने 'स्विच बाउंस' की समस्या का समाधान खोजा है। आमतौर पर, हम
बटन के लिए "मेटालिक होल प्लग्स" का उपयोग करते हुए ESP32 कैपेसिटिव टच इनपुट: 5 चरण (चित्रों के साथ)
बटनों के लिए "मेटालिक होल प्लग्स" का उपयोग करते हुए ESP32 कैपेसिटिव टच इनपुट: जैसा कि मैं आगामी ESP32 वाईफाई किट 32 आधारित परियोजना के लिए तीन बटन इनपुट की आवश्यकता के लिए डिजाइन निर्णयों को अंतिम रूप दे रहा था, एक ध्यान देने योग्य समस्या यह थी कि वाईफाई किट 32 में एक भी यांत्रिक पुशबटन नहीं है, अभी तक अकेले तीन यांत्रिक बटन, f