سلام
من میخوام اطلاعاتی رو در حافظه eeprom یا حافظه flash ذخیره سازی کنم و بتونم این اطلاعات را برای چک کردن با اطلاعات ورودی جستجو کنم . لطفا اگه کسی میتونه کمکم کنه
ممنون
سلام
من میخوام اطلاعاتی رو در حافظه eeprom یا حافظه flash ذخیره سازی کنم و بتونم این اطلاعات را برای چک کردن با اطلاعات ورودی جستجو کنم . لطفا اگه کسی میتونه کمکم کنه
ممنون
سلام
میکروکنترلری که روی برد های آردوینو هست ، 512 بایت حافظه EEPROM وجود دارد (به جز میکرو های 1280 و 2560 که دارای 4096 بایت معادل 4 کیلوبایت حافظه هستند) که می توان برای کار های مختلف روی آنها نوشت یا اطلاعات آنرا خواند. این اطلاعات پس از خاموش شدن بورد از بین نخواهند رفت.
برای کار با EEPROM آردوینو ابتدا لازمه کتابخانه EEPROM.H رو فراخوانی کنید
برای نوشتن اطلاعات باید از تابع EEPROM.write() استفاده کنید ، این تابع دارای دو پارامتر آدرس و مقدار است.
نمونه کد زیر اطلاعاتی را از پین آنالوگ دریافت کرده و آنها را به ترتیب در خانه های EEPROM ذخیره می کند
کد:#include <EEPROM.h> int addr = 0; void setup() { } void loop() { int val = analogRead(0) / 4; EEPROM.write(addr, val); addr = addr + 1; if (addr == 512) addr = 0; delay(100); }
ویرایش توسط bunnysa : 08-23-2014 در ساعت 12:11 PM
و اما برای خواندن اطلاعات از روی EEPROM لازم است ابتدا کتابخانه مربوطه را فراخوانی کرده و بعد با استفاده از تابع EEPROM.Read اطلاعات درون حافظه را بازخوانی کنید
تابع Read یک پارامتر دارد که آن هم چیزی نمی تواند باشد جز آدرس
نمونه کد زیر هم اطلاعات هر خانه از EEPROM را به ترتیب می خواند و در کنسول (روی سریال) خروجی می دهد.
کد:#include <EEPROM.h> int address = 0; byte value; void setup() { Serial.begin(9600); } void loop() { value = EEPROM.read(address); Serial.print(address); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); address = address + 1; if (address == 512) address = 0; delay(100); }
اطلاعات بیشتر در لینک زیر
Arduino - EEPROM
سپاسگذار لطفتون اما من این برنامه ها رو تو مثالها دیده بودم من در اصل میخوام uid که از rc522 استخراج میشه(پس از انطباق uid مستر کارت که تو برنامه ثبت شده و رفتن به زیر برنامه مدیریت و ثبت کارتها) رو بریزم تو حافظه و در موقع نیاز (خواندن کارت جدید)حافظه رو جستجو کنم و در صورت انطباق کار لازم رو انجام بدم ممنون میشم اگه راهنمایی کنید
نه آقای محترم همین که کمی راهنمایی کنید ممنون میشم
بقیه شو بعدا میپرسم
برای نوشتن در حافظه EEPROM باید فقط از int استفاده کنم؟
یعنی نمیتونم یه متغیر string رو در این حافظه بنویسم؟
ظاهرا بایت بایت می فرسته
How to write a string in eeprom ?
Arduino Playground - EEPROMWriteAnything
خب از این کد استفاده کنید:
کد:#include <avr/eeprom.h> struct settings_t { long alarm; int mode; } settings; void setup() { eeprom_read_block((void*)&settings,(void*)0,sizeof(settings)); // ... } void loop() { // let the user adjust their alarm settings // let the user adjust their mode settings // ... // if they push the "Save" button, save their configuration if(digitalRead(13)== HIGH) eeprom_write_block((constvoid*)&settings,(void*)0,sizeof(settings)); }