मैं वर्तमान में है 2 बटन मेरी रास्पबेरी पाई (इन उन में एलईडी की अंगूठी के साथ होते हैं) और मैं को झुका इस कोडअजगर बटन कार्यों अजीब तरह से नहीं कर रही एक ही
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT) #green LED
GPIO.setup(18, GPIO.OUT) #red LED
GPIO.setup(4, GPIO.IN, GPIO.PUD_UP) #green button
GPIO.setup(27, GPIO.IN, GPIO.PUD_UP) #red button
def remove_events():
GPIO.remove_event_detect(4)
GPIO.remove_event_detect(27)
def add_events():
GPIO.add_event_detect(4, GPIO.FALLING, callback=green, bouncetime=800)
GPIO.add_event_detect(27, GPIO.FALLING, callback=red, bouncetime=800)
def red(pin):
remove_events()
GPIO.output(17, GPIO.LOW)
print "red pushed"
time.sleep(2)
GPIO.output(17, GPIO.HIGH)
add_events()
def green(pin):
remove_events()
GPIO.output(18, GPIO.LOW)
print "green pushed"
time.sleep(2)
GPIO.output(18, GPIO.HIGH)
add_events()
def main():
while True:
print "waiting"
time.sleep(0.5)
GPIO.output(17, GPIO.HIGH)
GPIO.output(18, GPIO.HIGH)
GPIO.add_event_detect(4, GPIO.FALLING, callback=green, bouncetime=800)
GPIO.add_event_detect(27, GPIO.FALLING, callback=red, bouncetime=800)
if __name__ == "__main__":
main()
पर प्रदर्शन करने के लिए कोशिश कर रहा हूँ सतह यह एक काफी आसान लिपि की तरह दिखता है। जब एक बटन प्रेस का पता चला है:
- 2 सेकंड की घटनाओं को जोड़ने और
जो आम तौर पर महान जब बाहर काम करता है पर एलईडी की पीठ चालू करने से पहले की घटनाओं
दोनों घटनाओं को ध्यान में रखते हुए काफी समान हैं, मैं यह नहीं समझा सकता कि यह दूसरे लाल बटन के अंत में क्यों विफल रहता है।
संपादित करें: मैंने क्रमशः लाल और हरे रंग से पिन बदल दिए हैं (या तो अलग पिन के पूरी तरह से या उन्हें स्वैप करें)। किसी भी तरह से, यह हमेशा लाल बटन कोड (वास्तव में अब हरा बटन) एक त्रुटि का कारण बनता है। तो ऐसा लगता है कि यह एक भौतिक लाल बटन समस्या नहीं है, न ही पिन समस्या है, यह सिर्फ गलती के लिए कोड छोड़ देता है ...
शायद 'GPIO.output' कॉलों में से एक ने अपवाद उठाया और फिर' add_events() 'को फिर कभी नहीं बुलाया गया था? – zvone
इस मामले पर आपके विचार के लिए धन्यवाद। मैंने क्लॉज को छोड़कर जोड़ा है लेकिन वे ट्रिगर नहीं हुए थे। ऐसा लगता है कि यह नहीं था। – user5740843
यह भी समझाएगा कि यह एक बार अच्छा क्यों काम करता है लेकिन हमेशा दूसरे चक्र के अंत में विफल रहता है ... – user5740843