हार्डवेयर स्तर बुनियादी debouncing दिनचर्या खाते में एक भौतिक कुंजी (या स्विच के) व्यवहार के बाद के खण्ड लेने के लिए है पर:
कुंजी quietly- बैठे> उंगली कुंजी को छूता है और डाउन- धक्का शुरू होता है> कुंजी पहुँच यात्रा और उंगली के नीचे इसे पकड़ना शुरू होता है-> उंगली कुंजी को जारी करने लगती है और वसंत कुंजी बैक अप को दबाता है-> उंगली रिलीज कुंजी और कुंजी तब तक कंपन करती है जब तक यह
इन सभी चरणों में धातु के स्क्रैपिंग और रगड़ के 2 टुकड़े शामिल होते हैं और एक-दूसरे के खिलाफ बंपिंग, वोल्टेज को ऊपर और नीचे 0 से अधिकतम मिलीसेकंड की अवधि के दौरान, इसलिए बिजली के शोर के रास्ते में हर कदम होता है:
(1) शोर, जबकि कुंजी को छुआ नहीं जा रहा है, नमी, कंपन, तापमान परिवर्तन इत्यादि जैसे पर्यावरण संबंधी मुद्दों के कारण शोर।कुंजी संपर्कों
(2) शोर की वजह से के रूप में कुंजी को दबाए
दबाया जा रहा है
(3) शोर कुंजी
नीचे आयोजित किया जा रहा है के रूप में (4) कुंजी के रूप में शोर है
में वोल्टेज परिवर्तन के कारण जारी किया जा रहा
(5) जारी किया जा रहा
यहाँ के बाद कुंजी कंपन न के रूप में शोर एल्गोरिथ्म है जिसके द्वारा हम मूल रूप से लगता है कि कुंजी एक व्यक्ति द्वारा दबाया जा रहा है है:
+०१२३५१६४१०
, कुंजी है, जो "दबाया जा सकता है" किया जा सकता है, "निश्चित रूप से दबाया जाता है", "निश्चित रूप से दबाया नहीं है" की स्थिति पढ़ें "दबाया हो सकता है नहीं किया जा" (हम वास्तव में यकीन है कि कभी नहीं कर रहे हैं)
पाश जबकि कुंजी "हो सकती है" दबाया जाता है (यदि हार्डवेयर से निपटना है, तो यह कुछ थ्रेसहोल्ड मान से अधिक वोल्टेज नमूना है), जब तक कि "निश्चित रूप से नहीं" दबाया जाता है (थ्रेसहोल्ड वोल्टेज से कम) (यह प्रारंभ होता है, शोर के लिए प्रतीक्षा quiesce, की परिभाषा "हो सकता है" और "निश्चित रूप से" कुंजी जब तक "हो सकता है", जबकि कुंजी है "निश्चित रूप से" दबाया विशिष्ट अनुप्रयोग पर निर्भर)
पाश है, दबाया
जब कुंजी "हो सकती है" दबाया जाता है, तो कुंजी की स्थिति को लूपिंग और नमूना शुरू करना, और दबाए जाने की कुंजी कितनी देर तक चलती है - यदि कुंजी वापस "शायद नहीं" या "निश्चित रूप से नहीं है" "कुछ निश्चित समय से पहले दबाए गए राज्य को, प्रक्रिया को पुनरारंभ करें - एक निश्चित समय (मिलीसेकंड की संख्या) जिसे आपने चुना है (आमतौर पर विभिन्न मानों के साथ प्रयोग करके) आप तय करते हैं कि नमूना मान अब शोर के कारण नहीं होता है, लेकिन बहुत संभावना कुंजी वास्तव में एक मानव उंगली से नीचे आयोजित किया जा रहा के कारण होता है और आप मान "दबाया" वापस
while(keyvalue = maybepressed){
//loop - wait for transition to notpressed
sample keyvalue here;
maybe require it to be "notpressed" a number of times before you assume
it's really notpressed;
}
while(keyvalue = notpressed){
//loop - wait for transition to maybepressed
sample keyvalue
again, maybe require a "maybepressed" value a number of times before you
transition
}
while(keyvalue=maybepressed){
presstime+=1;
if presstime>required_presstime return pressed_affirmative
}
}
return pressed_negative
वास्तव में यह लगभग 10 मिनट के सवाल पूछने के बाद पाया। काफी हंडी मैं एचडब्ल्यू समाधान से सहमत हूं ... अगर केवल ... – Benoit
@ बेनोइट: अच्छा, मुझे जवाब दें! ;) – GEOCHET