ذخیره رشته String در حافظه EEPROM آردوینو
ذخیره اطلاعات و متغییر ها در حافظه ماندگار میکرو کنترلر (EEPROM) همواره مهم و پر کاربرد است. در کامپایلر هایی مانند کدویژن به سادگی میتوانید یک متغییر را از نوع EEPROM تعریف کنید تا مقدار آن متغییر پس از خاموش شدن پردازنده از بین نرود و پس از شروع مجدد کار CPU بتوان از مقدار آن استفاده و یا حتی ویرایش کرد.
اما در کامپایلر هایی مانند آردوینو کمی پیچیده تر میتوان از حافظه ماندگار پردازنده استفاده کرد. همچنین توابع مربوطه فقط به یک بیت از حافظه EEPROM دسترسی دارند. به همین علت شما به سادگی نمیتوانید یک رشته از نوع String را در EEPROM ذخیره کنید.
برای دانلود کتابخانه StringEEPROM بر روی لینک زیر کلیک کنید.
ذخیره اطلاعات در EEPROM
ابتدا نحوه و اصول ذخیره دیتا در EEPROM را برسی میکنیم.
1. کتابخانه EEPROM در ابتدای برنامه فراخوانی کنید.
#include
2. در حلقه setup باید مقدار فضای مورد نیاز از EEPROM را مشخص کنید.
EEPROM.begin(مقدار بایت مورد نیاز );
3. برای خواندن بیت مورد نظر از حافظه باید تابع زیر را فراخوانی کنید.
EEPROM.read(Adress byte);
4. برای نوشتن دیتا در بیت مورد نظر از حافظه باید توابع زیر را فراخوانی کنید.
EEPROM.write(Adress byte, data);
ذخیره رشته String در EEPROM
برای ذخیره رشته ابتدا آن را به نوع char تبدیل میکنیم. بافر نوع char این امکان را به ما میدهد که حروف نوشته را بخش بخش دریافت کنیم. حال هر کدام از حروف را در یک بیت از حافظه ذخیره میکنیم.
برای سادگی استفاده از این پروسه کتابخانه ای ایجاد کردیم تحت عنوان StringEEPROM.h که با استفاده از توابع آن میتوانید رشته های String را در EEPROM بنویسید یا بخوانید.
در حال حاضر این کتابخانه از نوشتن 2 رشته به صورت متوالی در EEPROM پشتیبانی میکند. هدف از قابلیت 2 رشته به صورت متوالی ، ذخیره SSID و PASSWORD در سیستم های تحت شبکه یا وای فای در ماژول های ESP است.
البته شما میتوانید در هر پروژه ای از این کتابخانه استفاده کنید و رشته String خود را به سادگی ذخیره کنید.
نکته: این نسخه از کتابخانه فعلا برای esp32 قابل استفاده هست، در ورژن های بعدی برد های دیگر هم اضافه خواهیم کرد.
توابع کتابخانه StringEEPROM.h
در ابتدا برنامه باید کتابخانه های EEPROM و StringEEPROM را فراخوانی کنید.
#include
#include
پس از فراخوانی کتابخانه ها باید یک شئ از کلاس StringEEPROM تعریف کنید.
StringEEPROM StringEEPROM;
در حلقه setup باید مقدار فضای مورد نیاز برای 2 رشته مورد نظر را در تابع زیر مقدار دهی کنید.
StringEEPROM.begin(40);
برای نوشتن رشته در EEPROM تابع StringEEPROM.write و برای خواندن رشته تابع StringEEPROM.read را استفاده کنید.
در Adress String عدد 1 یا 2 قابل استفاده است ؛ که تایین کننده رشته اول یا دوم می باشد.
StringEEPROM.write(String ,Adress String);
StringEEPROM.read(Adress String);
نمونه برنامه StringEEPROM
در کد زیر دو رشته دلخواه را در EEPROM ذخیره میکنیم و میخوانیم. مقدار خوانده شده بر روی سریال چاپ می شود.
#include
#include
StringEEPROM StringEEPROM;
char example_string1[] = "IMAX-com.com";
char example_string2[] = "Milad";
void setup() {
StringEEPROM.begin(40);
StringEEPROM.debug(true);
Serial.begin(115200); // serial communication initialize
while (!Serial);
StringEEPROM.write(example_string1 ,1); //Write string 1 to firs eeprom buffer
StringEEPROM.write(example_string2 ,2); //Write string 2 to second eeprom buffer
String first = StringEEPROM.read(1); //Read firs eeprom buffer
String second = StringEEPROM.read(2); //Read second eeprom buffer
Serial.println("First: " + first);
Serial.println("Second: " + second);
}
void loop() {
}


برای شروع خوبه مهندس 👌✌️
ممنونم 🙂