Arduino बोर्ड में कई प्रकार की मेमोरी होती है। सबसे पहले, यह स्थिर रैम (रैंडम एक्सेस मेमोरी) है, जिसका उपयोग प्रोग्राम निष्पादन के दौरान चर को स्टोर करने के लिए किया जाता है। दूसरे, यह फ्लैश मेमोरी है जो आपके द्वारा लिखे गए स्केच को स्टोर करती है। और तीसरा, यह एक EEPROM है जिसका उपयोग सूचनाओं को स्थायी रूप से संग्रहीत करने के लिए किया जा सकता है। पहले प्रकार की मेमोरी अस्थिर होती है, यह Arduino को रिबूट करने के बाद सभी जानकारी खो देती है। दूसरे दो प्रकार की मेमोरी जानकारी को तब तक संग्रहीत करती है जब तक कि इसे एक नए के साथ अधिलेखित नहीं किया जाता है, यहां तक कि बिजली बंद होने के बाद भी। अंतिम प्रकार की मेमोरी - EEPROM - डेटा को आवश्यकतानुसार लिखने, संग्रहीत करने और पढ़ने की अनुमति देती है। हम अब इस स्मृति पर विचार करेंगे।
ज़रूरी
- - अरुडिनो;
- - संगणक।
निर्देश
चरण 1
EEPROM,इलेक्ट्रिकली इरेज़ेबल प्रोग्रामेबल रीड-ओनली मेमोरी के लिए खड़ा है, यानी। इलैक्ट्रिकली इरेजेबल रीड ओनली मेमोरी। इस मेमोरी में डेटा बिजली बंद होने के बाद दसियों वर्षों तक संग्रहीत किया जा सकता है। पुनर्लेखन चक्रों की संख्या कई लाख गुना के क्रम में है।
Arduino में EEPROM मेमोरी की मात्रा सीमित है: ATmega328 माइक्रोकंट्रोलर (उदाहरण के लिए, Arduino UNO और Nano) पर आधारित बोर्डों के लिए, ATmega168 और ATmega8 बोर्डों के लिए मेमोरी की मात्रा 1 KB है - ATmega2560 और ATmega1280 के लिए 512 बाइट्स - 4 केबी.
चरण 2
Arduino के लिए EEPROM के साथ काम करने के लिए, एक विशेष पुस्तकालय लिखा गया है, जो डिफ़ॉल्ट रूप से Arduino IDE में शामिल है। पुस्तकालय में निम्नलिखित विशेषताएं हैं।
पढ़ें (पता) - EEPROM से 1 बाइट पढ़ता है; पता - वह पता जहां से डेटा पढ़ा जाता है (0 से शुरू होने वाला सेल);
लिखें (पता, मान) - पता पते पर मेमोरी में मान मान (1 बाइट, संख्या 0 से 255 तक) लिखता है;
अद्यतन (पता, मूल्य) - यदि इसकी पुरानी सामग्री नए से भिन्न है, तो पते पर मान को बदल देता है;
प्राप्त करें (पता, डेटा) - पते पर मेमोरी से निर्दिष्ट प्रकार का डेटा पढ़ता है;
पुट (पता, डेटा) - निर्दिष्ट प्रकार के डेटा को पते पर मेमोरी में लिखता है;
EEPROM [पता] - आपको मेमोरी से डेटा लिखने और पढ़ने के लिए "EEPROM" पहचानकर्ता को एक सरणी के रूप में उपयोग करने की अनुमति देता है।
स्केच में पुस्तकालय का उपयोग करने के लिए, हम इसे #include EEPROM.h निर्देश के साथ शामिल करते हैं।
चरण 3
आइए EEPROM में दो पूर्णांक लिखें और फिर उन्हें EEPROM से पढ़ें और उन्हें सीरियल पोर्ट पर आउटपुट करें।
0 से 255 तक की संख्याओं के साथ कोई समस्या नहीं है, वे केवल 1 बाइट मेमोरी पर कब्जा कर लेते हैं और EEPROM.write () फ़ंक्शन का उपयोग करके वांछित स्थान पर लिखे जाते हैं।
यदि संख्या 255 से अधिक है, तो ऑपरेटर हाईबाइट () और लोबाइट () का उपयोग करके इसे बाइट्स से विभाजित किया जाना चाहिए और प्रत्येक बाइट को अपने सेल में लिखा जाना चाहिए। इस मामले में अधिकतम संख्या 65536 (या 2 ^ 16) है।
देखिए, सेल 0 में सीरियल पोर्ट मॉनिटर केवल 255 से कम संख्या प्रदर्शित करता है। सेल 1 और 2 में, एक बड़ी संख्या 789 संग्रहीत की जाती है। इस स्थिति में, सेल 1 अतिप्रवाह कारक 3 को संग्रहीत करता है, और सेल 2 लापता संख्या को संग्रहीत करता है (अर्थात 789 = 3 * 256 + 21)। बाइट्स में पार्स की गई बड़ी संख्या को फिर से इकट्ठा करने के लिए, शब्द () फ़ंक्शन है: int val = word (hi, low), जहां hi और low उच्च और निम्न बाइट्स के मान हैं।
अन्य सभी कक्षों में जिन्हें हमने कभी नहीं लिखा है, संख्या 255 संग्रहीत हैं।
चरण 4
फ्लोटिंग पॉइंट नंबर और स्ट्रिंग्स लिखने के लिए, EEPROM.put () विधि का उपयोग करें, और पढ़ने के लिए, EEPROM.get () का उपयोग करें।
सेटअप () प्रक्रिया में, हम पहले फ्लोटिंग पॉइंट नंबर f लिखते हैं। फिर हम मेमोरी सेल की संख्या से आगे बढ़ते हैं जो फ्लोट प्रकार पर कब्जा कर लेता है, और 20 कोशिकाओं की क्षमता वाला एक चार स्ट्रिंग लिखता है।
लूप () प्रक्रिया में हम सभी मेमोरी सेल को पढ़ेंगे और उन्हें पहले "फ्लोट" प्रकार के रूप में डिक्रिप्ट करने का प्रयास करेंगे, और फिर "चार" प्रकार के रूप में, और परिणाम को सीरियल पोर्ट पर आउटपुट करेंगे।
आप देख सकते हैं कि 0 से 3 तक के सेल में मान को फ्लोटिंग पॉइंट नंबर के रूप में सही ढंग से परिभाषित किया गया था, और 4 वें से शुरू होकर - एक स्ट्रिंग के रूप में।
परिणामी मान ovf (अतिप्रवाह) और nan (संख्या नहीं) इंगित करते हैं कि संख्या को सही ढंग से फ़्लोटिंग पॉइंट संख्या में परिवर्तित नहीं किया जा सकता है। यदि आप ठीक से जानते हैं कि किस प्रकार का डेटा मेमोरी सेल पर कब्जा कर रहा है, तो आपको कोई समस्या नहीं होगी।
चरण 5
EEPROM सरणी के तत्वों के रूप में मेमोरी सेल को संदर्भित करना एक बहुत ही सुविधाजनक विशेषता है। इस स्केच में, सेटअप () प्रक्रिया में, हम पहले डेटा को पहले 4 बाइट्स में लिखेंगे, और लूप () प्रक्रिया में, हर मिनट हम सभी सेल से डेटा पढ़ेंगे और उन्हें सीरियल पोर्ट पर आउटपुट करेंगे।