अरुडिनो - आवधिक अवरोध

अरुडिनो - आवधिक अवरोध: 4 चरण

यह इंस्ट्रक्शनल अरडूइनो कार्यक्रमों में समय के लिए एक समय-समय पर बाधा का उपयोग करने के बारे में है। यह एक नवोदित Arduino प्रोग्रामर के लिए एक कदम है जो जानता है कि Arduino अधिक कर सकता है, लेकिन ऐसा करने का तरीका नहीं जानता।

यदि कोई प्रदर्शन समस्या है, तो मैं मान रहा हूं कि आप एक या अधिक विलंब () फ़ंक्शन का उपयोग कर रहे हैं। ट्रिक को देरी () फ़ंक्शन से छुटकारा पाने और एक रुकावट का विकल्प देना है। देरी () फ़ंक्शन को पूरा करने के लिए देरी () का इंतजार करते हुए Arduino को कुछ नहीं करने के लिए मजबूर करता है। एक रुकावट का उपयोग करना आपके कार्यक्रम को देरी के अंत की प्रतीक्षा करते हुए अन्य चीजें करने की अनुमति देता है। आमतौर पर अप्रयुक्त मृत समय की एक बड़ी मात्रा है जिसे देरी () का उपयोग करते समय अन्य चीजों के लिए इस्तेमाल किया जा सकता है। एक बाधा का उपयोग करके इस समस्या को हल करता है।

आपूर्ति:

चरण 1: बाधित हैंडलर

1. अपने कार्यक्रम के लिए बाधा हैंडलर जोड़ें। बस सेटअप के ऊपर कहीं कॉपी और पेस्ट करें ();

const अहस्ताक्षरित लंबे समय TIMER0_COUNT = 500; // 500 मिसेक टाइमर अंतराल // TIMER0 इंटरप्ट हैंडलर वाष्पशील बूल समय = गलत; ISR (TIMER0_COMPA_vect) {स्थिर अहस्ताक्षरित लंबी गिनती = 0; अगर (++ गिनती> TIMER0_COUNT) {गिनती = 0; समय = सत्य; // समय हर TIMER0_COUNT ms} पर सही है (// मुख्य दिनचर्या में साफ करने की आवश्यकता है)}

चरण 2: आवधिक समय अंतराल सेट करें

2. समय अंतराल सेट करें। यह नियमित रूप से TIMER0 इंटरप्ट पर पिग्गीबैक होता है, जो हर ~ 1 मिसेक में आग लगाने के लिए सेट है।

आपका "अंतराल" TIMER0 की प्रक्रिया को बाधित करने की संख्या है। प्रत्येक अंतराल ~ 1 मिसे है, इसलिए आप वास्तव में यह निर्धारित कर रहे हैं कि आपके अंतराल को सक्रिय करने से पहले कितने TIMER0 को गिनने में बाधा आती है। IOW, TIMER0_COUNT को सेट करने के लिए हालांकि कई मिलीसेकंड आप इंतजार करना चाहते हैं। उदाहरण के लिए, एक सेकंड के एक आधे के लिए 500 का उपयोग करें। 3 सेकंड के लिए 3000 का उपयोग करें।

चरण 3: रुकावट प्रारंभिक

3. अपने सेटअप () विधि में "TIMER0 इनिशियलाइज़ेशन" कोड जोड़ें। फिर से, सेटअप में कॉपी और पेस्ट करें ()।

// *** TIMER0 आरंभीकरण *** क्ली (); // सभी अवरोधों को बंद करें TIMSK0 = 0; // कम घबराना OCR0A = 0xBB के लिए टाइमर 0 बंद करें; // मनमाना व्यवधान गिनती TIMSK0 | = _BV (OCIE0A); // सूअर का बच्चा वापस sei () पर; // बारी इंटरप्ट पर वापस

चरण 4: अपना कोड कहां जोड़ें

4. अपने लूप () विधि में "समय जाँच" कोड जोड़ें। लूप में कॉपी और पेस्ट करें ()।

if (समय) {time = false; // यहाँ कुछ करें}

"समय = असत्य" लाइन महत्वपूर्ण है। इस लाइन के बिना "यहाँ कुछ करें" लाइन (प्रोग्राम) लूप () निष्पादित करने पर हर बार निष्पादित होगी।

बेशक, आप "यहाँ कुछ करें" लाइन में अपनी गतिविधियों को प्रतिस्थापित करते हैं। कुछ पाठ को मुद्रित करने या एलईडी को चमकाने के साथ शुरू करें।

हो गया!