با سلام
در زمینه استفاده از حافظه در برد های آردوینو شما یک حافظه EEPROM دارید که تعداد کارکتر محدودی را میتواند در خود ذخیره کند و از لایبراری با همین نام می توانید به آن دسترسی پیدا کنید.
در صورتی که میکرو خود را به ESP تغییر بدهید بسته به اینکه از ESP32 یا ESP8266 استفاده میکنید از لایبراری های SPIFFS یا LittleFS میتوانید استفاده کنید.
البته تمامی این موارد از حافظه داخلی خود میکرو برای این منظور استفاده میکنند، شما میتوانید از حافظه های خارجی مانند EEPROM یا SPIFLASH یا SDCard برای این منظور استفاده کنید.
نحوه نوشتن و خواندن دیتا نیز بسته به روش انتخابی و جوری که میخواهید دیتا را سیو کنید متفاوت می شود.
البته می توانید از دفترچه مخاطبین موجود در خود ماژول سیم کارت هم استفاده کنید که البته کار بسیار سخت و دشواری می باشد.
ویرایش اول:
در آموزش ها به صورت کامل توضیح داده است به چه صورت از حافظه استفاده کنید.
از این آموزش نیز می توانید استفاده کنید. EEPROM آردوینو: آموزش استفاده و نحوه کار با آن [با مثال کاربردی]
ویرایش دوم:
خوب بذارید یک راه ساده پیشنهاد بدم بهتون.
یکی این هست که دقت کنید توی هر حافظه شما میتونید از 0 تا 255 عدد بدهید.
شما رقم های تلفن مورد نظر را به صورت 2 رقم 2 رقم در هر حافظه ذخیره کنید این طوری رقم های 00 الی 99 رو میتونید ذخیره کنید و موقع واکشی همین عدد هارو کنار هم بذارید.
روش دیگر این میباشد که با دستور
EEPROM.update(address, val);//address = 0 و val = شماره تلفن
شماره مورد نظر را در حافظه بریزید.
سپس با دستور
int data = EEPROM.read(address);
که میخواهید شماره را بخوانید متوجه می شوید که رقم ها کمتر می باشد.
دلیل این موضوع این می باشد که شماره اولیه شما که در مبنای دسیمال می باشد به مبنای HEX تغییر کرده است و از طرفی فقط در آدرس 0 نمی باشد و باید آدرس های 1 و 2 و.. را نیز بخوانید (تا جایی که داده ای که میخوانید 0 بشود
سپس با دستور های انتقال بیت ها ضریب دار عدد هارو انتقال بدهید که برای مورد شما از دستور
data << 8
برای انتقال 8 بیت داده به سمت راست استفاده میکنید.
به این صورت کل داده های شما در یک مقدار ایجاد می شود
مشابه دستور کلی زیر (درصورت نیاز تکرار کنید و بیشتر نیز انتقال بدهید)
int data0 = EEPROM.read(0);
int data1 = EEPROM.read(1);
int data2 = EEPROM.read(2);
int value = data2 << 16 | data1 << 8 | data0;
در انتها مقدار کلی را به صورت دسیمال نمایش بدهید و مشاهده میکنید که عدد شما با شماره مورد نظر یکی شده است.
امیدوارم کمک کلی به شما کرده باشم