millis() से डिबाउंस करें
छोटी स्थिरता-अवधि के दौरान शोर को अनदेखा करें।
millis() से डिबाउंस करें, CoddyKit पर Arduino & IoT Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Arduino & IoT Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Arduino & IoT Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
सिर्फ delay() क्यों नहीं?
आप प्रेस के बाद delay() की मदद से रुक सकते हैं, लेकिन इससे आपका पूरा बोर्ड रुक जाता है। साफ़ बटन इनपुट के लिए बेहतर साधन millis() है।
millis() एक स्टॉपवॉच है
millis() बताता है कि आपका बोर्ड कितने मिलीसेकंड से चल रहा है। आप बिना रुके बीता हुआ समय मापने के लिए दो रीडिंग की तुलना करते हैं।
unsigned long now = millis();डिबाउंस की योजना
विचार सरल है: जब पिन बदले, तो एक टाइमर शुरू करें। नए स्टेट पर तभी भरोसा करें जब वह थोड़ी-सी निर्धारित अवधि तक स्थिर रहे।
डिबाउंस अवधि चुनें
लगभग 50 मिलीसेकंड की देरी पारंपरिक विकल्प है। यह बाउंस से अधिक समय तक चलने के लिए पर्याप्त है, फिर भी आपको इसका एहसास होने से बहुत पहले समाप्त हो जाती है।
const unsigned long DEBOUNCE = 50;अंतिम बदलाव याद रखें
पिन पिछली बार कब बदला था, इसे रखने के लिए आपको एक वेरिएबल चाहिए। हर loop चक्र में इसकी तुलना वर्तमान समय से करें।
unsigned long lastChange = 0;दो स्टेट ट्रैक करें
कच्ची रीडिंग और पुष्टि की गई स्थिर स्थिति को अलग-अलग रखें। कच्ची रीडिंग शोरयुक्त होती है, जबकि स्थिर स्थिति पर आपका लॉजिक भरोसा करता है।
int lastRaw = HIGH;
int stable = HIGH;बदलाव पहचानें
हर loop में पिन पढ़ें। यदि यह पिछली कच्ची वैल्यू से अलग है, तो सिग्नल अभी बदला है, इसलिए अपना टाइमर फिर से शुरू करें।
int raw = digitalRead(BTN);
if (raw != lastRaw)
lastChange = millis();स्थिर होने तक प्रतीक्षा करें
यदि पिछले बदलाव के बाद पर्याप्त समय बीत चुका है, तो रीडिंग स्थिर हो गई है। अब इसे वास्तविक स्थिति के रूप में स्वीकार करना सुरक्षित है।
if (millis() - lastChange > DEBOUNCE) {
stable = raw;
}परिवर्तन पर कार्रवाई करें
हर प्रेस पर एक बार कार्रवाई करने के लिए स्थिर स्थिति के LOW में बदलने पर नज़र रखें। यही एक एज आपका साफ़ और डिबाउंस किया हुआ प्रेस है।
if (stable == LOW && lastStable == HIGH)
Serial.println("clean press");अगली बार के लिए अपडेट करें
loop के अंत में वर्तमान रीडिंग को अपने last वेरिएबल में सहेजें। इससे हर चक्र में तुलना नई बनी रहती है।
lastRaw = raw;
lastStable = stable;नॉन-ब्लॉकिंग तरीका बेहतर है
क्योंकि millis() बोर्ड को कभी रोकता नहीं है, आपके सेंसर और आउटपुट चलते रहते हैं। आप डिबाउंस करते रहते हैं और बाकी सब चलता रहता है। 🚀
त्वरित जाँच
आइए देखें कि millis() की डिबाउंस प्रक्रिया कैसे तय करती है कि कोई प्रेस वास्तविक है।
पुनरावृत्ति: साफ़ प्रेस
आपने बोर्ड को रोके बिना बाउंस को नज़रअंदाज़ करने के लिए millis() का उपयोग किया और प्रेस को स्थिर होने के बाद ही एक बार स्वीकार किया। यह मजबूत और पेशेवर इनपुट है! ✅
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “millis() से डिबाउंस करें” पाठ निःशुल्क है?
हाँ—“millis() से डिबाउंस करें” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Arduino & IoT Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Arduino & IoT Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“millis() से डिबाउंस करें” में मैं क्या सीखूँगा?
छोटी स्थिरता-अवधि के दौरान शोर को अनदेखा करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Arduino & IoT Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Arduino & IoT Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Arduino & IoT Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“millis() से डिबाउंस करें” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Arduino & IoT Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Arduino & IoT Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- बटन ‘बाउंस’ क्यों करते हैं
- millis() से डिबाउंस करें
- EEPROM में मान संग्रहीत करें
- रीसेट के बाद काउंटर याद रखें