در ادامه ی آموزش اینترنت اشیا و تبدیل اسپری خوشبو کننده به سیستم IOT ، به بخش خواندن و نوشتن در حافظه ی EEPROM رسیده ایم. در این بخش با نحوه ی فراخوانی کتابخانه و دستورات آن آشنا می شویم.
نوشتن و خواندن در حافظه ی EEPROM :
برای شروع کار باید اول از همه کتابخانه ی مربوط به EEPROM را فراخوانی کنیم.
#include <EEPROM.h>
بعد از آن از طریق define خانه هایی از EEPROM که می خواهیم از آنها استفاده کنیم را نام گذاری می کنیم. این کار برای استفاده راحت تر در برنامه است. و اینکه اگر بخواهیم خانه ای را عوض کنیم لازم نیست در کل برنامه ببینیم کجا از آن استفاده کرده ایم. و فقط define را عوض می کنیم.
#define eepromTime 500 #define eepromFlagLight 508 #define eepromSSID 400 #define eepromPass 450
در اولین مرحله باید به eeprom بگوییم که با چند خانه شروع به کار کند.
///////////////////////////////////////////////////////////////////////////////read eeprom EEPROM.begin(512); delay(10); val = EEPROM.read(eepromTime); if (val < 10 || val > 60) val = 10; flagLight = EEPROM.read(eepromFlagLight); if (flagLight != 11 && flagLight != 22 && flagLight != 33) flagLight = 33; /////////////////////////////////////////////////////////////EEPROM SSID while (EEPROM.read(eepromSSID + n) != 255) { sVal += (char)EEPROM.read(eepromSSID + n); n++; delay(1); } _SSID = sVal; ssid = &_SSID[0]; Serial.println(""); Serial.println(ssid); sVal = ""; n = 0; flagConnectWiFi = true; ////////////////////////////////////////////////////////////EEPROM PASSWORD while (EEPROM.read(eepromPass + n) != 255) { sVal += (char)EEPROM.read(eepromPass + n); n++; delay(1); } _PASSWORD = sVal; password = &_PASSWORD[0]; Serial.println(password); sVal = ""; n = 0; flagConnectWiFi = true;
در قسمت اول که از EEPROM عدد می خوانیم، دستورات راحت هستند و چیزه خاصی ندارند. هر عدد در یک بایت ذخیره می شود. ولی وقتی می خواهیم در EEPROM یک رشته ذخیره کنیم و بخوانیم، کمی پیچیده می شود. چون رشته به صورت عددی در حافظه ذخیره می شود. و هر کارکتر از رشته به صورت کد اسکی در یک خانه (بایت) از حافظه ذخیره می شود. موقع خواندن هم یکی یکی باید عدد های خانه ها را خواند و به کارکتر تبدیل کرد. و این کارکتر ها را به هم چسباند تا دوباره رشته ساخته شود.
وقتی که در خانه ای از حافظه EEPROM چیزی نوشته نشده باشد عدد 255 ذخیره شده است. یعنی همه ی بیتهای آن یک است.
if (flagConnectWiFi) { byte l; for (l = 0; l < 40; l++) { EEPROM.write((eepromSSID + l), _SSID[l]); delay(5); } for (l = 0; l < 40; l++) { EEPROM.write((eepromPass + l), _PASSWORD[l]); delay(5); } flagConnectWiFi = false; } EEPROM.write(eepromTime, val); EEPROM.write(eepromFlagLight, flagLight); EEPROM.commit();
برای نوشتن در حافظه همانطور که می بینید، باید خانه ای از حافظه که می خواهیم در آن چیزی ذخیره کنیم، و آن متغیری را که می خواهیم ذخیره کنیم را، مشخص کنیم. برای ذخیره رشته باید یکی یکی خانه ها را ذخیره کنیم ولی برای ذخیره ی عدد کمی کار راحت تر است.
در آخر کار هم باید EEPROM.commit را حتما قرار دهیم تا عملیات تکمیل شود.
در ادامه فیلمی را که برای شما تهیه کرده ام را قرار داده ام:
خسته نباشید ممنون به خاطر این وبسایت زیبا
سلام.خواستم بابت وبسایت خوبتون ازتون تشکر کنم و امیدوارم باعث ایجاد انگیزه براتون بشه
سلام میشه لینک داخل مطلبو چک کنید.برای من
مشکل داشت.ممنون
سلام داخل مطلب لینکی موجود نمی باشد. شما کدام لینک منظورتان می باشد؟
اقا خیلی وبسایتتون عالیه
خسته نباشید ممنون به خاطر این مطالب کاربردی
سلام.خواستم بابت وبسایت خوبتون ازتون تشکر
کنم و امیدوارم باعث ایجاد انگیزه براتون بشه
تو زمینه ای که فعالیت میکنید جزو بهترین سایت ها
هستید.