arduino
बीच में आता है
खोज…
वाक्य - विन्यास
digitalPinToInterrupt (पिन); // एक पिन आईडी को एक
attachInterrupt()
आईडी मेंattachInterrupt()
औरdetachInterrupt()
attachInterrupt()
साथ उपयोग करने के लिए कनवर्ट करता है।संलग्नक (digitalPinToInterrupt (पिन), ISR, मोड); // की सिफारिश की
संलग्नक (व्यवधान, आईएसआर, मोड); // सिफारिश नहीं की गई
detachInterrupt (digitalPinToInterrupt (पिन));
detachInterrupt (व्यवधान);
noInterrupts (); // व्यवधान उत्पन्न करता है
बीच में आता है (); //
noInterrupts()
कोnoInterrupts()
बाद फिर से सक्षम करें।
पैरामीटर
पैरामीटर | टिप्पणियाँ |
---|---|
बाधा | व्यवधान की आईडी। पिन नंबर के लिए गलती नहीं है। |
ISR | बाधित सेवा दिनचर्या। यह वह विधि है जिसे बाधित होने पर निष्पादित किया जाएगा। |
मोड | ट्रिगर को बाधित करने का कारण क्या होना चाहिए। LOW, CHANGE, RISING, या FALLING में से एक। ड्यू बोर्ड भी हाई की अनुमति देते हैं। |
टिप्पणियों
इंटरप्ट सर्विस रूटिन (ISR) जितना संभव हो उतना कम होना चाहिए, क्योंकि वे मुख्य कार्यक्रम निष्पादन को रोकते हैं और इस तरह समय-निर्भर कोड को पेंच कर सकते हैं। आम तौर पर आईएसआर में इसका मतलब है कि आप एक ध्वज और निकास सेट करते हैं, और मुख्य कार्यक्रम लूप में आप ध्वज की जांच करते हैं और उस ध्वज को जो कुछ भी करना है, उसे करते हैं।
आप ISR में delay()
या millis()
का उपयोग नहीं कर सकते क्योंकि वे विधियाँ स्वयं अवरोधों पर निर्भर करती हैं।
बटन प्रेस पर रुकावट
यह उदाहरण डिजिटल पिन 2 और जीएनडी से जुड़ी एक पुश बटन (टैक स्विच) का उपयोग करता है, आंतरिक पुल-अप प्रतिरोधक का उपयोग करते हुए इसलिए पिन 2 उच्च होता है जब बटन दबाया नहीं जाता है।
const int LED_PIN = 13;
const int INTERRUPT_PIN = 2;
volatile bool ledState = LOW;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(INTERRUPT_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), myISR, FALLING); // trigger when button pressed, but not when released.
}
void loop() {
digitalWrite(LED_PIN, ledState);
}
void myISR() {
ledState = !ledState;
// note: LOW == false == 0, HIGH == true == 1, so inverting the boolean is the same as switching between LOW and HIGH.
}
इस सरल उदाहरण के साथ एक गेटा है कि पुश बटन उछाल करते हैं, जिसका अर्थ है कि दबाने या जारी करने पर, सर्किट बंद हो जाता है और अंतिम बंद या खुले राज्य में बसने से पहले एक से अधिक बार बंद हो जाता है। यह उदाहरण इस बात को ध्यान में नहीं रखता है। परिणामस्वरूप, कभी-कभी बटन दबाने पर एक बार अपेक्षित के बजाय, कई बार एलईडी को टॉगल करना होगा।