GPIO पिन की सफाई क्यों करें?


13

जब पायथन में एक कार्यक्रम चल रहा है, तो मैं GPIO का उपयोग करते समय क्लीनअप कमांड क्यों चाहूंगा?


एक साइड नोट के रूप में, C प्रोग्राम्स के साथ उपयोग की जाने वाली वायरिंगपाइ लाइब्रेरी में Cleanup()फ़ंक्शन नहीं है । ऐसा प्रतीत होता है कि GPIO.cleanup()उपलब्ध है क्योंकि पायथन कार्यक्षमता उन परिवर्तनों को साफ करने के लिए परिवर्तनों का एक लॉग रखती है। देखें raspberrypi.stackexchange.com/questions/44807/...
रिचर्ड चेम्बर्स

जवाबों:


14

जैसा कि इस लेख में उल्लेख किया गया है RPi.GPIO मूल बातें 3 - GPIO प्रोग्रामों को कैसे साफ़ करें, चेतावनी से बचें और अपने Pi की रक्षा करें , GPIO.cleanup () का सही उपयोग करें,

GPIO.cleanup () का सही उपयोग

RPi.GPIO आपके द्वारा उपयोग किए जाने वाले सभी पोर्ट को साफ करने के लिए एक अंतर्निहित फ़ंक्शन GPIO.cleanup () प्रदान करता है। लेकिन यह स्पष्ट है कि यह क्या करता है। यह केवल वर्तमान कार्यक्रम में आपके द्वारा सेट किए गए किसी भी पोर्ट को प्रभावित करता है। यह आपके द्वारा इस प्रोग्राम में उपयोग किए गए किसी भी पोर्ट को इनपुट मोड पर रीसेट करता है। यह क्षति को रोकता है, कहते हैं, ऐसी स्थिति जहां आपके पास पोर्ट सेट है आउटपुट के रूप में उच्च है और आप गलती से इसे जीएनडी (एलओडब्ल्यू) से जोड़ते हैं, जो पोर्ट को शॉर्ट-सर्किट करेगा और संभवतः इसे भूनेंगा। इनपुट्स 0V (LOW) या 3.3V (हाई) को हैंडल कर सकते हैं, इसलिए इनपुट के रूप में पोर्ट्स को छोड़ना ज्यादा सुरक्षित है।

आशा है कि यह आपके संदेह को साफ करता है।


5

आपको सफाई विधि का उपयोग करने की आवश्यकता नहीं है।

जहाँ तक मुझे पता है केवल RPi.GPIO और RPIO.GPIO पायथन मॉड्यूल की सफाई पद्धति है। क्लीनअप विधि उन सभी gpios को सेट करती है जिनका आपने इनपुट किया है और उन gpios के लिए आंतरिक पुल-अप / डाउन को निष्क्रिय करता है।

मेरे पिगपिओ पायथन मॉड्यूल में सफाई विधि नहीं है, न ही वायरिंगपीआई 2 पायथन मॉड्यूल के बारे में जहां तक ​​मुझे पता है।


तब सफाई व्यवस्था का उद्देश्य क्या है?
ह्यूमन

1
@ मुझे नहीं लगता कि इसमें कोई उद्देश्य है, अगर मुझे लगा कि इसकी आवश्यकता है तो मैंने ऐसी विधि जोड़ी होगी। dastaan ​​ने अपने जवाब में RPI.GPIO लेखक द्वारा इस्तेमाल किए गए तर्क की ओर इशारा किया है। यह एक दार्शनिक तुला के अधिक हो सकता है, मुझे लगता है कि उपयोगकर्ताओं के पास ऐसा करने का एक कारण है जो वे करते हैं या नहीं करते हैं। यदि वे प्रोग्राम खत्म होने के बाद इनपुट के रूप में एक gpio छोड़ना चाहते हैं तो उन्हें इसे इनपुट के रूप में सेट करना चाहिए।
joan

1

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

GPIO सेटिंग बदलने से पहले या बाद में या तो क्लीनअप कमांड का उपयोग करने से चेतावनियों से छुटकारा मिल जाता है और कोड किसी भी GPIO- सेटिंग चेतावनी के बिना आसानी से चलने देता है।

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