मॉड्यूलरिटी आपके दोस्त हैं। कार्यों को कॉल करके अपनी मुख्य लूप को लिखें, जो फ़ंक्शन को कॉल करता है, ..., जब तक कि जिस स्तर पर आपके कार्य सरल होंगे। मुख्य लूप और अगले स्तर के नीचे से शुरू करें, स्टब फ़ंक्शन करें; या तो खाली:
function foo(){
;
}
या नकली:
function read_temperature(){
return(95);
}
, कि कुछ भी नहीं है, लेकिन जो कुछ भी इसके लिए कॉलिंग स्तर की आवश्यकता है उसे वापस करने के लिए जारी रखने में सक्षम होना चाहिए। जब यह स्तर काम करता है, तो एक स्तर नीचे ले जाएं और सरल कोड भरना शुरू करें जो इसी तरह से स्टब फ़ंक्शन को कॉल करता है। जब तक आपके पास काम करने का आवेदन न हो, धीरे-धीरे एक समय में एक फ़ंक्शन को रोकें।
एक फ़ंक्शन को डीबग करने के लिए जो एक खराब मान लौटाता है, या अपने आवेदन के बाकी हिस्सों से किसी भी प्रभाव के बिना एक बनाने के लिए, आप मचान का निर्माण कर सकते हैं - एक साधारण स्केच जो फ़ंक्शन को केवल कुछ उदाहरण मानों को खिलाता है, और फ़ंक्शन के भीतर, पैरामीटर मान प्रिंट करें और कुछ मध्यवर्ती मान, जब तक आप कुछ अंतर्दृष्टि प्राप्त नहीं करते हैं कि फ़ंक्शन का कौन सा भाग विफल हो रहा है। मैंने फ़ेकिंग-फ़ंक्शंस भी किए हैं जो मुझे वापस लौटने के लिए टर्मिनल पर प्रॉम्प्ट करता है। (जाहिर है कि यह तकनीक तभी काम कर सकती है जब प्रणाली हम मनुष्यों की अपेक्षाकृत हिमानी गति को सहन कर सकती है! डांट का दूसरा उपयोग।)
स्टबिंग विशेष रूप से अच्छी तरह से कार्य करता है जो कि हार्डवेयर के लिए इंटरफ़ेस के लिए खड़ा है, जिससे आप डेटा-शीट, टाइमिंग मुद्दों और अन्य minutiae (जैसे, पुर्ज़े नहीं हो रहे हैं!) में गोता लगाने से पहले एप्लिकेशन को लाने की अनुमति देते हैं जो अन्यथा स्टाल हो सकता है। आपकी प्रगति।
समय के मुद्दों की बात करें, तो अपने प्रोग्राम में किसी विशेष बिंदु पर आउटपुट पिन को टॉगल करना, जैसे कि ISR से प्रवेश करना और बाहर निकलना, आपको Arduino पिन पर एक चौकोर तरंग देता है जिसकी आवृत्ति या कर्तव्य चक्र आपको आंतरिक समय में कुछ जानकारी दे सकता है। अपने कार्यक्रम के प्रत्यक्ष पोर्ट- I / O फॉर्म, जैसे,
PORTC ^= 0x01;
, कॉलिंग से कम समय को विकृत करेगा digitalWrite()
। उपयोगी है यदि आपके पास 'गुंजाइश काम है, या आवृत्ति और / या कर्तव्य-चक्र को मापने की क्षमता के साथ DMM में से एक है।
इसी प्रकार, आप समय को बहुत अधिक परेशान किए बिना या धारा I / O फ़ंक्शन के साथ कोड को ब्लोट किए बिना प्रोग्राम के अंदर से अपने मीटर के लिए संख्यात्मक मान को आउटपुट करने के लिए एक एनालॉग आउटपुट पिन का उपयोग कर सकते हैं। यहाँ भी प्रत्यक्ष I / O रूपों का उपयोग करें।