INPUT और INPUT_PULLUP में क्या अंतर है?


24

नए Arduinos पर, एक से तीन राज्यों में से एक करने के लिए pinMode सेट कर सकते हैं: OUTPUT, INPUT, और INPUT_PULLUP।

यह पृष्ठ कहता है:

Arduino पर Atmega चिप में आंतरिक पुल-अप रेसिस्टर्स (प्रतिरोधक जो आंतरिक रूप से बिजली से जुड़ते हैं) होते हैं जिन्हें आप एक्सेस कर सकते हैं। यदि आप बाहरी पुल-डाउन प्रतिरोधों के बजाय इनका उपयोग करना पसंद करते हैं, तो आप पिनपोड () में INPUT_PULLUP तर्क का उपयोग कर सकते हैं। यह प्रभावी रूप से व्यवहार को प्रभावित करता है, जहां उच्च का मतलब सेंसर बंद है, और कम का मतलब सेंसर चालू है।

मुझे यकीन है कि व्यवहार में inverting केवल एक ही चीज नहीं है जो यह करता है, हालांकि।

क्या करता INPUT_PULLUPहै? इससे अलग क्या है INPUT, और यह कैसे तय किया जाता है कि किसका उपयोग करना है?


INPUT_PULLUP को IDE 1.0.1 के साथ जोड़ा गया था। यह अप्रासंगिक है जो आप Arduino बोर्ड का उपयोग करते हैं, वे सभी PULLUPs का समर्थन करते हैं।
— बाल्डेंगिनर

जवाबों:


23

डिफ़ॉल्ट है INPUTजो पिन को एक के रूप में सेट करता है INPUT। यदि पिन पूरी तरह से डिस्कनेक्ट हो गया है, तो यह बेतरतीब ढंग से पढ़ा जाएगा HIGHऔर LOW। यदि आप इसे + 5V या 0V से जोड़ते हैं, तो यह स्पष्ट रूप से पढ़ा जाएगा HIGHया LOW।

Arduino के लिए आंतरिक, 50k-ओम के मान के साथ पुलअप रेसिस्टर्स हैं। इन प्रतिरोधों को आंतरिक रूप से उपयोग करके वैकल्पिक रूप से जोड़ा जा सकता है INPUT_PULLUP। यह कार्यात्मक रूप से (और विद्युत रूप से) पिन और + 5 वी के बीच 50k-ओम अवरोधक को जोड़ने के बराबर है, केवल अंतर यह है कि इसके लिए किसी बाहरी घटक की आवश्यकता नहीं है और आप इसे अपने प्रोग्राम के निष्पादन के दौरान सॉफ्टवेयर में चालू और बंद कर सकते हैं।

तो क्यों पुल-अप और पुल-डाउन नहीं? इसके कई कारण हो सकते हैं, लेकिन जब वायरिंग बटन या स्विच या कुछ भी "सामान्य रूप से खुला" होता है, तो आपको केवल उन्हें जमीन पर बांधना होगा, आपको उनके लिए + 5V चलाने की आवश्यकता नहीं है। चूंकि अधिकांश बोर्ड वैसे भी परिरक्षण कारणों से बड़े ग्राउंड के साथ डिजाइन किए जा रहे हैं, इसलिए जमीन पर बांधना व्यावहारिक रूप से कारण है।

कुछ और फ़ीचर्ड IC जैसे ARM चिप में पुल अप और पुल डाउन दोनों होते हैं, लेकिन 8-बिट AVR लाइन केवल पुल-अप के साथ आती है। आपको बस याद रखना है कि HIGH"खुला" है और LOW"बंद" है।


वोट दें। FYI करें, प्रलेखन के अनुसार आंतरिक पुल-अप 20K हैं, ऐसा नहीं है कि यह 50K से बहुत अंतर करता है। arduino.cc/en/Tutorial/DigitalPins
— SDsolar

9

ध्यान दें कि पूर्व में 1.0.1, आप का उपयोग करके पुलअप चालू कर सकते हैं digitalWrite()। और आप अभी भी कर सकते हैं।

कोड:

pinMode(13, INPUT);
digitalWrite(13, HIGH); // Turns internal pull-up on
digitalWrite(13, LOW);  // Turns internal pull-up off

यह एक महत्वपूर्ण अंतर है क्योंकि INPUT_PULLUPस्पष्ट रूप से पुल-अप रोकनेवाला पर मुड़ता है। हालांकि, कम स्पष्ट है, यह 1.0.1 के साथ शुरू हो रहा है, बस INPUTपुल-अप को बंद करने के लिए मजबूर करता है। (पहले, पुल-अप की स्थिति समान थी)।

यह देखने के लिए कि कोई पिन पुल-अप के साथ कैसे और बिना संचालित होता है, निम्न वीडियो देखें।

एक आस्टसीलस्कप पर फ्लोटिंग पिन: http://www.youtube.com/watch?v=dBIBFLYCjMM

पुल-अप सक्षम होने के साथ: http://www.youtube.com/watch?v=SAIw7LLVl-U

पुल-अप्स पर पूर्ण ट्यूटोरियल वीडियो (ध्यान दें कि मैंने INPUT_PULLUP से पहले इसे Arduino लाइब्रेरी में जोड़ा गया था): http://www.youtube.com/watch?&v=jJnD6LdGmUo


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