मैं GPIO के माध्यम से एक बटन कैसे पढ़ सकता हूं?


15

मैंने खुद को इस तरह के शुरुआती स्तर के सामान से बहुत पहले माना था, लेकिन मुझे लगता है कि मैं उतना स्मार्ट नहीं हूं जितना मैंने सोचा था कि मैं इसलिए था क्योंकि मुझे इसके साथ एक असाधारण स्तर की परेशानी हो रही थी!

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

इसलिए मैंने एक बटन को उसी तरह सेट किया है जिस तरह से एक arduino के साथ होगा; एक 1k रोकनेवाला जमीन के साथ जोड़ने के साथ। मैंने अपनी मल्टीमीटर का उपयोग यह सुनिश्चित करने के लिए किया कि बटन काम कर रहा था और सही मात्रा में बिजली डाल रहा था, जो कि यह है। मैं अपने शेल में SSH करता हूं, बटन को GPIO पिन 7 में प्लग करता हूं और अजगर में जाता हूं। यहाँ मैंने क्या कोशिश की है:

GPIO.pinout(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while 1==1:
    inputval = GPIO.input(7)
    print inputval

यह मुझे Falseबटन दबाने की परवाह किए बिना एक अंतहीन लूप देता है । मैंने इसके साथ GPIO.PUD_UPही कोशिश की और Trueइसके बजाय एक अंतहीन लूप मिला । मैंने भी इसके साथ प्रयास किया GPIO.PUD_OFFऔर अधिक मिला False

क्या मुझसे कोई चूक हो रही है?


तो आपके पास GND के लिए 1k रोकनेवाला के साथ श्रृंखला में स्विच है? इसके साथ काम करना चाहिए GPIO.PUD_UP। आप किस वोल्टेज को देखते हैं GPIO.PUD_UPऔर बटन दबाया जाता है?
जॉन ला रोय

थोड़ा उलझन में; स्विच किससे जुड़ा है?
एलेक्स चेम्बरलेन

नमस्ते माइकल और रास्पबेरी पाई में आपका स्वागत है ! मैंने आपके दो खातों के विलय की स्वतंत्रता ले ली है। धन्यवाद!

जवाबों:


6

मेरा GPIO नहीं है pinout, मुझे इसे बदलना पड़ाsetmode

import time
from RPi import GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
    inputval = GPIO.input(7)
    print inputval
    time.sleep(1)

चूंकि आप GPIO.BOARDपिन 7 का उपयोग कर रहे हैं , वह एक लेबल है GPIO 4(GPCLK0)। यदि आप उपयोग करना चाहते हैं GPIO 7(CE1), तो आपको GPIO.setmode(GPIO.BCM)इसके बजाय उपयोग करना चाहिए

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

मैं से एक 1k बाधा को छूकर कोड का परीक्षण 3V3 Powerकरने के लिएGPIO 4(GPCLK0)


मैं लगभग निश्चित हूं कि यह क्यों काम नहीं कर रहा था पर आपका सही है। मैं इस धारणा के तहत GPIO.BOARDथा कि बोर्ड के पिनआउट के लिए खुद को चित्रों में दिखाया गया है, न कि भौतिक पिन नंबरिंग योजना के लिए। जब मुझे काम से घर मिलेगा तो मैं इसे आज़माऊंगा और मुझे यकीन है कि यह काम करेगा।
माइकल

1

मैं पिन के सेटअप में कभी भी "pull_up_down = GPIO.PUD_DOWN" का उपयोग नहीं करता। इसे इस्तेमाल करे:

GPIO.setmode(GPIO.BCM)
GPIO.setup(PinNum,GPIO.IN)
while 1==1:
    if GPIO.input(PinNum)==1:
        print "True"
    else:
        print "False"

जैसा कि gnibbler ने कहा, सुनिश्चित करें कि PinNum BCM GPIO के लिए है।

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