में रास्पबेरी पीआई-जीपीआईओ घटनाक्रम मैं गति का पता लगाने के लिए एक पीआईआर सेंसर के साथ अपने रास्पबेरी पीआई पर जीपीआईओ पिन का उपयोग कर रहा हूं। जब सेंसर गति का पता लगाता है तो मैं सॉफ़्टवेयर को अन्य कार्यों पर ले जाना चाहता हूं।पाइथन
फिलहाल, गति का पता लगाने के लिए मेरे पास लगातार एक लूप में चल रहा है, जबकि यह गति का पता लगाने की प्रतीक्षा कर रहा है। हालांकि इस समय यह काम करता है, भविष्य में उपयोग के लिए यह अविश्वसनीय रूप से अक्षम होगा और इसे किसी ईवेंट में निर्दिष्ट करके इस पर सुधार करने की उम्मीद है।
क्या मेरे जीपीआईओ इनपुट को किसी ईवेंट में मैन्युअल रूप से लूप चलाने के बिना प्रोग्राम द्वारा पता लगाया गया कोई भी तरीका है।
var = 1
counter = 0
while var == 1:
if GPIO.input(7):
counter += 1
time.sleep(0.5)
else:
counter = 0
time.sleep(1)
if counter >= 3:
print "Movement!"
captureImage()
time.sleep(20)
काउंटर और गति का पता लगाने के लिए कई बार झूठे सकारात्मक की संख्या को कम करने के लिए है कि सेंसर ऊपर उठाता है प्रयोग किया जाता है:
यहाँ का पता लगाने के लिए प्रस्ताव मेरे वर्तमान पाश है।
क्या यह विधि एक जीयूआई कहने के साथ काम करेगी? मैं जो करना चाहता हूं वह मोशन डिटेक्टर क्लास को कॉल करता है कि यह लूप मेरे जीयूआई से चल रहा है, लेकिन लूप के साथ यह सिर्फ जीयूआई को दुर्घटनाग्रस्त कर देता है। यदि मैं इसे थ्रेड के साथ उपयोग करता हूं, तो क्या यह पृष्ठभूमि में गति पहचानने के लिए लूप का कारण बनता है जबकि जीयूआई इसके साथ जुड़े इनपुट के लिए सुनता है? – Stefoth
@Stefoth यह बहुत अच्छा है कि जीयूआई प्रोग्रामिंग कैसे काम करता है। आपका जीयूआई अपने स्वयं के थ्रेड में चलाएगा और गति का पता लगाने वाला कोड स्वयं ही चलता है। – msvalkon