- व्यवधान के प्रकार
- Arduino में रुकावट
- Arduino में इंटरप्ट का उपयोग करना
- अवयव आवश्यक
- सर्किट आरेख
- Arduino इंटरप्ट प्रोग्रामिंग
- Arduino इंटरप्ट प्रदर्शन
एक तेज गति वाली कार पर विचार करें, अगर वह अचानक विपरीत दिशा में दूसरी कार से टकराती है, तो पहली चीज यह होती है कि, कार में मौजूद एक्सीलेरोमीटर सेंसर में अचानक डी-एक्सीलरेशन हो जाता है और इसमें मौजूद माइक्रोकंट्रोलर के लिए एक बाहरी रुकावट पैदा होती है। कार। फिर उस अवरोध के आधार पर माइक्रोकंट्रोलर तुरंत एयरबैग को तैनात करने के लिए एक इलेक्ट्रिक सिग्नल का उत्पादन करता है। कार में मौजूद माइक्रोकंट्रोलर एक साथ कई चीजों की निगरानी करते हैं जैसे कार की गति को महसूस करना, अन्य सेंसर की जांच करना, एयर कंडीशनर के तापमान को नियंत्रित करना आदि। तो क्या सेकंड्स में अचानक एयरबैग का खुल जाना? उत्तर बाधित है, एक बाधा संकेत का उपयोग यहां किया जाता है जिसमें सभी की सर्वोच्च प्राथमिकता होती है।
इंटरप्ट का एक और सरल उदाहरण टच स्क्रीन मोबाइल फोन हैं जो "टच" अर्थ के लिए सर्वोच्च प्राथमिकता हैं। लगभग हर इलेक्ट्रॉनिक उपकरण में नियमित प्रक्रिया को 'बाधित' करने और किसी विशेष घटना पर कुछ उच्च प्राथमिकता वाली चीजें करने के लिए किसी न किसी तरह का व्यवधान होता है। नियमित सेवा बाधित होने के बाद फिर से शुरू की जाती है।
तो तकनीकी रूप से, इंटरप्ट एक ऐसा तंत्र है जिसके द्वारा I / O या निर्देश प्रोसेसर के सामान्य निष्पादन को निलंबित कर सकते हैं और खुद को इस तरह से सेवा देते हैं जैसे कि इसकी उच्च प्राथमिकता है । उदाहरण के लिए, एक सामान्य निष्पादन करने वाले प्रोसेसर को कुछ सेंसर द्वारा ISR (इंटरप्ट सर्विस सर्विस) में मौजूद एक विशेष प्रक्रिया को निष्पादित करने के लिए बाधित किया जा सकता है। ISR प्रोसेसर निष्पादित करने के बाद फिर से सामान्य निष्पादन को फिर से शुरू कर सकता है।
व्यवधान के प्रकार
दो प्रकार के व्यवधान हैं:
हार्डवेयर इंटरप्ट: ऐसा तब होता है जब कोई बाहरी घटना होती है जैसे एक बाहरी अवरोधक पिन अपने राज्य को LOW से HIGH या HIGH से LOW में बदल देता है।
सॉफ्टवेयर इंटरप्ट: यह सॉफ्टवेयर के निर्देश के अनुसार होता है। उदाहरण के लिए टाइमर इंटरप्ट सॉफ्टवेयर अवरोधन है ।
Arduino में रुकावट
अब हम देखेंगे कि Arduino Board में इंटरप्ट का उपयोग कैसे करें । इसके दो प्रकार हैं:
- बाहरी बाधा
- पिन चेंज इंटरप्ट
बाहरी रुकावट:
इन रुकावटों की व्याख्या हार्डवेयर द्वारा की जाती है और बहुत तेज़ होती है। इन व्यवधानों को RISING या FALLING या LOW स्तरों की घटना पर ट्रिगर किया जा सकता है।
Arduino बोर्ड |
बाहरी रुकावट पिन: |
यूएनओ, नैनो |
2,3 |
मेगा |
2,3,18,19,20,21 है |
पिन परिवर्तन रुकावट:
पिन परिवर्तन में रुकावट का उपयोग करके Arduinos में अधिक व्यवधान वाले पिंस सक्षम हो सकते हैं । ATmega168 / 328 आधारित Arduino के बोर्डों में किसी भी पिन या सभी 20 सिग्नल पिन को इंटरप्ट पिन के रूप में इस्तेमाल किया जा सकता है। उन्हें RISING या FALLING किनारों का उपयोग करके भी ट्रिगर किया जा सकता है।
Arduino में इंटरप्ट का उपयोग करना
Arduino में व्यवधानों का उपयोग करने के लिए निम्नलिखित अवधारणाओं को समझने की आवश्यकता है।
बाधित सेवा दिनचर्या (ISR)
इंटरप्ट सर्विस रूटिन या इंटरप्ट हैंडलर एक ऐसी घटना है जिसमें निर्देश के छोटे सेट होते हैं। जब कोई बाहरी व्यवधान उत्पन्न होता है, तो प्रोसेसर सबसे पहले ISR में मौजूद इन कोड को निष्पादित करता है और वापस उसी स्थिति में लौटता है जहां यह सामान्य निष्पादन छोड़ता है।
ISR के पास Arduino में सिंटैक्स है:
संलग्नक (digitalPinToInterrupt (पिन), ISR, मोड);
digitalPinToInterrupt (पिन): Arduino Uno में, NANO को बीच में इस्तेमाल करने वाले पिन 2,3 और मेगा 2,3,18,19,20,21 में हैं। उस इनपुट पिन को निर्दिष्ट करें जो बाहरी व्यवधान के लिए उपयोग किया जाता है।
ISR: यह एक ऐसा फंक्शन है जिसे बाहरी व्यवधान होने पर कहा जाता है।
मोड: ट्रिगर करने के लिए संक्रमण का प्रकार, जैसे गिरना, बढ़ना, आदि।
- RISING: जब पिन LOW से HIGH तक पहुंचता है, तो एक बाधा को ट्रिगर करने के लिए।
- FALLING: पिन को हाई से लो ट्रांसफर करते समय एक अवरोध को ट्रिगर करना।
- CHANGE: जब पिन LOW से HIGH या HIGH से LOW (यानी, जब पिन स्टेट बदलता है) में ट्रांसफर होता है, एक व्यवधान को ट्रिगर करने के लिए।
इंटरप्ट का उपयोग करते समय कुछ शर्तें
- इंटरप्ट सर्विस रूटीन फ़ंक्शन (ISR) यथासंभव छोटा होना चाहिए।
- विलंब () फ़ंक्शन ISR के अंदर काम नहीं करता है और इसे टाला जाना चाहिए।
इस Arduino इंटरप्ट ट्यूटोरियल में, एक नंबर 0 से बढ़ा है और दो पुश बटन का उपयोग इंटरप्ट को ट्रिगर करने के लिए किया जाता है, प्रत्येक एक D2 और D3 से जुड़ा हुआ है। इंटरप्ट को इंगित करने के लिए एक एलईडी का उपयोग किया जाता है। यदि एक पुश बटन दबाया जाता है, तो एलईडी चालू होता है और डिस्प्ले इंटरप्ट 2 दिखाता है और बंद हो जाता है, और जब एक और पुश बटन दबाया जाता है तो एलईडी बंद हो जाता है और डिस्प्ले इंटरप्ट 1 दिखाता है और बंद हो जाता है।
अवयव आवश्यक
- Arduino Board (इस ट्यूटोरियल में Arduino NANO का उपयोग किया जाता है)
- पुश बटन - 2
- एलईडी - १
- रेसिस्टर (10K) - 2
- एलसीडी (16x2) - 1
- ब्रेड बोर्ड
- तारों को जोड़ना
सर्किट आरेख
Arduino नैनो और 16x2 एलसीडी डिस्प्ले के बीच सर्किट कनेक्शन:
एलसीडी |
अरुडिनो नैनो |
वीएसएस |
GND |
VDD |
+ 5 वी |
वि ० |
पोटेंशियोमीटर सेंटर पिन करने के लिए एलसीडी के कंट्रास्टिंग कंट्रास्ट के लिए |
रुपये |
डी 7 |
आरडब्ल्यू |
GND |
इ |
डी 8 |
डी 4 |
डी 9 |
D5 |
D10 |
डी 6 |
D11 |
डी 7 |
D12 |
ए |
+ 5 वी |
क |
GND |
दो पुश बटन Arduino नैनो से पिन D2 & D3 से जुड़े हैं । वे दो बाहरी व्यवधानों का उपयोग करने के लिए उपयोग किए जाते हैं, एक एलईडी चालू करने के लिए और दूसरा एलईडी बंद करने के लिए। प्रत्येक पुश बटन में जमीन से जुड़ा हुआ 10k का पुल डाउन रेसिस्टर होता है। इसलिए जब पुश बटन दबाया जाता है तो यह तर्क उच्च (1) होता है और जब दबाया नहीं जाता है तो यह तर्क कम होता है (0)। पुल डाउन रेसिस्टर अनिवार्य है अन्यथा इनपुट पिन डी 2 और डी 3 में फ्लोटिंग मान होंगे।
एक एलईडी का उपयोग यह इंगित करने के लिए भी किया जाता है कि एक बाधा को ट्रिगर किया गया है या एक बटन दबाया गया है।
Arduino इंटरप्ट प्रोग्रामिंग
इस ट्यूटोरियल में एक संख्या 0 से बढ़ाई गई है जो Arduino नैनो से जुड़े (16x2) एलसीडी में लगातार प्रदर्शित होती है, जब भी बाएं पुश बटन (इंटरप्ट पिन डी 3) को दबाया जाता है तो एलईडी ऑन हो जाता है और डिस्प्ले इंटरप्ट 2 दिखाता है, और जब दाईं ओर पुश बटन दिखाई देता है (इंटरप्ट पिन डी 2) को दबाया जाता है एलईडी बंद हो जाता है और डिस्प्ले इंटरप्ट 1 दिखाता है।
इस ट्यूटोरियल के अंत में वर्किंग वीडियो के साथ पूरा कोड दिया गया है।
1. पहले एलसीडी डिस्प्ले के लिए हेडर फाइल को शामिल किया जाता है और फिर Arduino Nano के साथ जुड़ने में उपयोग होने वाले एलसीडी पिन को परिभाषित किया जाता है।
#शामिल
2. शून्य सेटअप () फ़ंक्शन के अंदर, पहले एलसीडी डिस्प्ले पर कुछ इंट्रो संदेश प्रदर्शित करें। यहाँ Arduino के साथ एलसीडी को बदलने के बारे में अधिक जानें।
lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("CIRCUIT DIGEST"); lcd.setCursor (0,1); lcd.print ("ArduinoInterrupt"); देरी (3000); lcd.clear ();
3. फिर उसी शून्य सेटअप () फ़ंक्शन में इनपुट और आउटपुट पिन निर्दिष्ट किए जाने चाहिए। पिन D13 LED के एनोड से जुड़ा है, इसलिए इस पिन को आउटपुट के रूप में परिभाषित किया जाना चाहिए।
पिनमोड (13, OUTPUT);
4. अब प्रोग्रामिंग में मुख्य महत्वपूर्ण हिस्सा यह है कि संलग्नक () फ़ंक्शन है, यह शून्य सेटअप (!) के अंदर भी शामिल है।
संलग्नक (digitalPinToInterrupt (2), buttonPressed1, RISING); संलग्नक (digitalPinToInterrupt (3), buttonPressed2, RISING);
यहां यह निर्दिष्ट किया गया है कि पिन 2 बाहरी रुकावट के लिए है, और D2 पिन पर RISING (LOW to HIGH) होने पर बटन Pressed1 फ़ंक्शन को कहा जाता है। और पिन 3 बाहरी रुकावट के लिए भी है और बटन पिनड्रेस 2 फ़ंक्शन को बुलाया जाता है जब डी 3 पिन पर RISING होता है।
5. शून्य लूप () के अंदर, एक संख्या (i) शून्य से बढ़ाई गई है और एलसीडी (16x2) पर मुद्रित है।
lcd.clear (); lcd.print ("COUNTER:"); lcd.print (i); ++ मैं; देरी (1000);
एक ही शून्य लूप () में, डिजिटल डीराइट () का उपयोग पिन डी 13 पर किया जाता है जहां एलईडी का एनोड जुड़ा हुआ है। वैरिएबल आउटपुट में मूल्य के आधार पर एलईडी चालू या बंद होगा
digitalWrite (13, आउटपुट);
6. सबसे महत्वपूर्ण हिस्सा अटैचमेंट () फ़ंक्शन में उपयोग किए जाने वाले नाम के अनुसार एक बाधा हैंडलर फ़ंक्शन बना रहा है।
चूंकि दो इंटरप्ट पिन का उपयोग 2 और 3 किया जाता है, इसलिए दो ISR की आवश्यकता होती है। यहाँ इस प्रोग्रामिंग में ISR का उपयोग किया जाता है
बटनपटेड 1 ():
void बटन दबा हुआ 1 () { आउटपुट = कम; lcd.setCursor (0,1); lcd.print ("इंटरप्ट 1"); }
यह फ़ंक्शन तब निष्पादित होता है जब पिन D2 पर पुश बटन दबाया जाता है (RISING EDGE)। यह फ़ंक्शन उत्पादन की स्थिति को कम कर देता है जिससे एलओयू बंद हो जाता है और एलसीडी डिस्प्ले पर "अवरोध 1" प्रिंट होता है।
बटन दबाया 2 ():
void बटन दबा हुआ 2 () {आउटपुट = उच्च; lcd.setCursor (0,1); lcd.print ("Interrupt2"); }
यह फ़ंक्शन निष्पादित करता है जब पिन डी 3 पर पुश बटन दबाया जाता है। यह फ़ंक्शन आउटपुट की स्थिति को उच्च बनाता है जिससे एलईडी चालू होता है और एलसीडी डिस्प्ले पर "इंटरप्ट 2" प्रिंट करता है।
Arduino इंटरप्ट प्रदर्शन
1. जब लेफ्टसाइड पर PUSH BUTTON को दबाया जाता है तो LED ऑन हो जाता है और LCD इंटरप्ट 2 प्रदर्शित करता है।
2. जब दाईं ओर PUSH BUTTON दबाया जाता है तो LED बंद हो जाती है और LCD Interrupt1 प्रदर्शित करता है
सामान्य निष्पादन के बीच किसी भी महत्वपूर्ण कार्य को शुरू करने के लिए एक इंटरप्ट कैसे उपयोगी हो सकता है।