برای نوشتن و خواندن یک رشته در eeprom با آردوینو فقط کافی است دو تابع زیر را قبل از void setup اضافه کنید.
void EEP_Write_String(byte part, String val){ int start_addw = part * 32; int w_len = val.length(); EEPROM.write(start_addw, w_len+1); int end_w = start_addw + w_len; byte len = 0; for (int i=start_addw+1;i < end_w+1;i++){ EEPROM.write(i, int(val[len])); len++; } len = 0; }
String EEP_Read_String(byte part){ int start_addr = part * 32; String str; int ch; int r_len = EEPROM.read(start_addr); int end_r = start_addr + r_len;= for (int i=start_addr+1;i < end_r;i++){ ch = EEPROM.read(i); str += char(ch); } return str; }
با این توابع شما فضای حافظه eeprom رو به قسمت های 32 بایتی تقسیم می کنید که بایت اول مشخصه طول رشته می باشد. در نتیجه طول رشته 31 کاراکتر می تواند باشد که البته طول رشته را می توانید تغییر دهید و برای این کار فقط کافی است اعداد 32 رو در هر دو تابع به طور یکسان به عدد دلخواه خود تغییر دهید. البته توجه داشته باشید که اعداد را فقط در صورت لزوم تغییر دهید.
512 بایت تقسیم بر 32 مساوی 16 ، یعنی 16 متغیر را می توانید در حافظه eeprom ذخیره کنید.
به عنوان مثال
EEP_Write_String(1, "test");
دستور بالا رشته ‘test’ رو در حافظه ۱ ذخیره می کنه.
و دستور پایین مقدار ذخیره شده در حافظه ۱ رو می خونه و به پورت سریال ارسال می کنه.
Serial.println(EEP_Read_String(1));
3
2
votes
امتیازدهی به مقاله
با سلام
در هر دو تابع توی خط هفتم ارور میده و < رو نمیتونه بخونه
اصلاح شد
با تشکر
نحوه ی کار با این دو تابع چطوریه؟ یعنی برای نوشتن یا خوندن بعد از اضافه کردن این دو تابع باید از چ کدی استفاده کنیم؟
ممنون
به عنوان مثال
EEP_Write_String(1, "test");
دستور بالا رشته “test” رو در حافظه 1 ذخیره می کنه.
و دستور پایین مقدار ذخیره شده در حافظه 1 رو می خونه و به پورت سریال ارسال می کنه.
Serial.println(EEP_Read_String(1));
redefinition of ‘void EEP_Write_String(byte, String)’
سلام این اررور میده
void EEP_Write_String(byte, String)
نوع متغیر تعریف شده ولی اسم نداره ، باید به صورت زیر باشه که توی سایت هم درسته به همین شکله
EEP_Write_String(byte part, String val)
سلام و خدا قوت
این تابع رو میشه راهنمایی بفرمایید
که میشه به eeprom خارجی گسترشش داد؟
AT24CXXXX
باید بشه
کاری کردین با همین AT24؟
سلام
میشه مثالی بزنید که چهکدی بنویسم تا 3 تا شماره تلفن 14 رقمی با مثبت اولش وارد کنم . هر چی مینویسم بعضی وقتا کار میکنه بعضی وقتا میپره . من عدد 32 رو هم به 16 تغییر دادم چون کل شماره با + میشه 14 رقم.
ممنون