نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

آموزش آردوینو جلسه 17 حافظه eeprom

به نام خدا : سلام، تو این مطلب از سری مطالب آموزش آردوینو که این جلسه 17امش هستش میخوام بریم سراغ حافظه EEPROM در آردوینو و یه توضیح کوچولو بدیم، یه چند تا پروژه آردوینو هم براتون قرار دادم، منبع تموم آموزش های سایت من هم خود سایت آردوینو هستش و از خودم در نمیارم^_^ و میرم از سایت آردوینو یاد میگیرم و میام به شما یاد میدم، اینا رو دارم میگم که شما هم برید یاد بگیرید چیزای مختلف رو و بعد بیاید و یاد بدید.^_^ این طوری تعداد مطالب الکترونیکی سایت های فارسی زیاد و زیاد تر میشه و چون دیگه اون وقتی که ما میزاریم و میریم سراغ منابع خارجی و یاد میگیرم چیزها رو دیگه بقیه نمیخواد این وقت رو صرف کنن و میان مطالب فارسی ما رو سریع میخونن و وقتشون رو میرن رو یاد گیری چیزای جدید تر از سایت های خارجی صرف میکنن و اگه این روال ادامه داشته باشه عجب چیزی میشه. laugh
آموزش آردوینو جلسه 17 حافظه eeprom

آموزش آردوینو جلسه 17 حافظه eeprom


قرمزته : خب جا داری که پیروزی! دوباره پیروزی!! رو به همه طرفدارای پیروزی!!! تبریک بگم و کیسه شدن دوباره استقلال رو که ماشالله با وجود داشتن بهترین دروازبان لیگ و بهترین خط دفاع، میاد و 4 تا 4 تا گل میخوره و یه کی دو تا تیرک و یه پنالتی از دست رفته و چندیدن موقعیت دیگه …، بابا حداقل یکم به فکر خودتون باشید، دیگه با چه رویی میخواین جلوی ما قد علم کنید و اون 4 تون رو نشون بدید laugh 4 تونم که ازتون گرفتیم و شد نماد ما، حالا مردید بازم 4 رو نشون بدید تا ما از خنده غش کنیم. laugh خب از شوخی بگذریم، هر دو تیم خداییش خوب بازی کردن در کل بازی خوبی بود، اگه پیروزی هم با این نتیجه میباخت بازم برام فرقی نداشت چون برا من بازی زیبا و پر گل مهم هستش، نه این که مثل دربی های گذشته که وقتی بازی رو میدیدیم وسطش خابمون میبرد، حالا بازی زیبا باشه هر کدومشون بردن که بردن.
معرفی دو تا نوحه باحال : خب خیلی وقت بود میخواستم این دو تا مورد رو قرار بدم براتون، خداییش خیلی قشنگ هستش، من که به شدت!!! خوشم اومد، برا شما هم میزارم :

  1. مدافعان حرم – منو ببین – نریمانی
  2. مداحی حماسی زیبا – نمیذاریم یه دونه اسرائیلی زنده بمونه

خب دیگه واقعا بریم سراغ مطلب خودمون خیلی حاشیه رفتیم…………………
 
 
حافظه EEPROM : میکروکنترلرها حافظه ای به نام EEPROM دارن که در صورت قطع برق مدار، حافظشون پاک نمیشه و در میکروهای مختلف این مقدار حافظه متفاوت هستش،

ATmega328 :  1024 bytes

ATmega168 و ATmega8 : 512 bytes

ATmega1280 و ATmega2560 : 4 KB (4096 bytes)

Genuino 101 boards have an emulated EEPROM space of 1024 bytes

 
 

توضیح توبع کتابخانه EEPROM در آردوینو

EEPROM
برای استفاده از توابع زیر باید کتابخونه بالا رو در پروژه قرار بدید (کتابخونه EEPROM رو فراخونی کنید)، این کتابخونه جز موارد پیش فرض هستش که هنگام نصب آردوینو اینم اضافه میشه.
 
EEPROM.length
این پارامتر طول EEPROM بورد شما رو بهتون میگه، البته استفاده از این پارامتر زیاد هم ظرروری نیست، مثلا در بالا گفتم دیگه، بردهای فلان و فلان فلان! این قدر طول حافظشون هستش و برد های دیگه ....
مثلا این پارامتر برای بردهایی با میکروی مرکزی MEGA328  عدد 1024 رو برمیگردونه
 
EEPROM.read
خوندن بایت ها از EEPROM، مکانی از حافظه eeprom که هرگز نوشته نشده است مقدار 255 هستش.
Address : مکانی که میخوایم دیتاش رو بخونیم، از 0 شروع میشود.(INT)
مقدار برگشتی تابع : مقدار ذخیره شده در مکان مد نظر(BYTE)
مثال :
 
EEPROM.write
نوشتن یه بایت دیتا در EEPROM
Address : مکانی از حافظه eeprom که قراره داخلش دیتا بنویسیم، که از 0 شروع میشود(INT)
Value : مقداری که میخوایم در مکان مد نظر بنویسیم،بین مقدار باید بین 0 تا 255 باشد(BYTE)
تابع چیزی بر نمیگردونه.
توجه : نوشتن در EEPROM حدود 3.3ms طول میکشد.
توجه2 : طول عمر EEPROM چیزی حدود 100،000 بار نوشتن/پاک کردن هستش.(لذا باید در نوشتن پروژتون این مورد رو مد نظر داشته باشید تا در آینده به مشکل بر نخورید)
مثال
 
EEPROM.update
نوشتن یه بایت در EEPROM
دیتای ما تنها زمانی در مکان مد نظر نوشته میشود که فرق داشته باشد با مقداری که در حال حاظر در اون مکان قرار داره.
Address : مکانی که میخواید مقدارش رو تغییر بدید که از 0 شروع میشود(INT)
Value : مقداری که میخواید در مکان مد نظر بنویسید که از 0 تا 255 باید باشه(BYTE)
این تابع چیزی برنمی گرداند.
توجه : استفاده از این تابع در عوض استفاده از تابع WRITE میتواند چرخه طول عمر EEPROM را افزایش دهد(یعنی از کاهش بیهوده اون جلوگیری میکنه و نمیزاره همین طوری عمر EEPROM تموم بشه)
توجه 2 : خب همین طور که فهمیدید فرق این تابع با تابع WRITE اینه که این تابع میاد و مقدار اون مکان رو اول میخونه و اگه با مقداری که میخواین داخلش بنویسید برابر بود، مقدار اون ماکان رو تغییر نمیده و همین امر باعث افزایش طول عمر EEPROM میشه.
مثال :
 
EEPROM.get
خودن هر نوع دیتا یا شیئی از EEPROM
برا مواقعی که یه نوع از متغییر(مثلا int یا Float یا string و...) رو در حافظه eeprom ذخیره کردید استفاده از این تابع میتونه مفید باشه
Address : مکانی که قراره دیتاش خونده بشه.
Data : دیتای خونده شده در این متغییر ذخیره میشه.
مثال :
مثال این تابع و تابع EEPROM.put به صورت یه جا در قسمت مربوط به مثال تابع EEPROM.put قرار داده شده.
 
EEPROM.put
خب حالا فرض کنید دیگه نمیخواید اعداد 0 تا 255 رو تو EEPROM ذخیره کنید و مثلا میخواید یه عدد اعشاری مثل 3.14 رو تو EEPROM ذخیره کنید و یا هر نوع داده دیگه ای رو، باید از این تابع استفاده کنید برای این کار.(مثلا متغییر های int، float، string و...)
توجه : به این هم باید توجه کنید که مثلا متغییر FLOAT مقدار حافظه ای که اشغال میکنه مثلا برابر 2 بایت هستش و مثلا نوع Double حدود 4 بایت و int  حدود 2 و long int حدود 4 تا و short حدود 1 بایت حافظه اشغال میکند، لذا بسته به نوع متغییر میزان حافظه اشغال شده متفاوت هستش(این مقادیر حافظه ای که گفتم برای مثال بودااااا دقیقا مقدار حافظه اشغالی توسط هر متغییر رو اطلاع ندارم، اینا رو گفتم تا متوجه داستان بشید)
Address : مکانی که میخواید توش دیتا بنویسید.
Data : دیتایی که میخواید در مکان مد نظر بنویسید.
توجه : این تابع از ویژگی تابع ()EEPROM.update استفاده میکنه یعنی اگه مقداری که میخواید بنویسید در مکان مد نظر با مقدار اون مکان یکسان باشه عمل نوشتن رخ نمیده.
مثال :
 
EEPROM-address-
این عملگر اجازه شناسایی EEPROM رو به ما میده مانند یه آرایه، که خونه های EEPROM میتونن خونده و نوشته بشن به صورت مستقیم همانند آرایه ها.
Address : مکانی که میخواید مقدارش رو بخونید و یا تغییر بدید.
مثال :
 
 
مثال هایی برای این کتابخونه :

 
مطالب مرتبط :

 
اگه این مطلب براتون مفید بود، برای سلامتی رهبر انقلاب امام خامنه ای – علمای اسلام ( و نه عمامه انگلیسی ها ) – مسئولین خدمتگزار به کشور و اسلام – سلامتی رزمندگان اسلام و شادی روح شهدای مدافع حرم چه تو سوریه و چه عراق، یه 5 تا صلوات بفرستید ( این هزینه این مطلب هستش ^_^ )
خب بیش از این وقتتون رو نمیگیرم، فعلا یا علی.

پسورد فایل های سایت :
www.dmf313.ir
جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. ان‌شاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)
ارسال دیدگاه
67

1) تعداد حروف فارسی از حروف غیر فارسی بیشتر باشه دیدگاه جفنگ/اسپم محسوب میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    محمدرضا

    من هی بخاطر این مطلب وارد سایت شما میشم پشت سر هم صلوات میفرستم wink خدا خیرت بده،بده،کمکی چیزی خواستی در خدمتم

    1397/09/25
    08:37
  2. مهمان

    محمد جواد

    سلام خسته نباشی
    من روی آردوینو مگا کار می کنم و از EEPROM ش استفاده می کنم ،الان میخوام بفهمم چقدر از این حافظه مونده، امکانش هست ؟

    1397/09/05
    10:41
    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-برو دیتاشیت ببین میزان حافظش رو چقدر ذکر کرده.

      1397/09/06
      10:24
  3. مهمان

    no amoz

    سلام من یه برنامه ی قفل در دارم که با چندین پسورد میشه در رو باز کرد(یک int به صورت ماتریس در ابتدای برنامه مشخص شده)برای این که این int بره توی حافظه نمیدونم باید چیکار کنم باید تک تک بنویسم توی حافظه؟

    1397/06/19
    07:16
  4. مهمان

    no amoz

    سلام ممنونم یه سوال داشتم؛من الان میخوام یه قفل با اردوینو و کی پد داشته باشم که هر کس یه کد خاص برای باز کردن داشته باش؛یه int pass به صورت ماتریس رو در ابتدای برنامه تعریف کردم چطور باید اینو توی حافظه ذخیره کنم؟
    با تشکر.

    1397/06/19
    03:08
  5. مهمان

    مهران

    سلام من تازه کارم ببخشید اگه سوالای ابتدایی میپرسم sorry
    من یه آردوینو اونو دارم و یه برنامه براش نوشتم
    میخاستم ببینم اگه از کابل یو اس بی جداش کنم و بعد به منبع تغذیه متصلش کنم برنامم پاک میشه؟
    میتونم وقتی هنوز یو اس بی رو جدا نکردم فیش آداپتور رو بهش وصل کنم تا پاک نشه؟
    no

    1397/06/08
    11:39
    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-نه پاک نمیشه.

      1397/06/08
      02:10
  6. مهمان

    علی

    سلام
    من اومدم خونه های 1تا4 رو به ترتیب 1و2و3و4 کردم وتو یک برنامه دیگه گفتم که خونه های 1تا4 رو روی lcd نمایش بده.
    ولی روی lcd عدد 2344 رو نمایش میده!
    لطفا بگین چیکار باید بکنم؟؟؟ help
    ممنون

    1397/05/13
    11:46
    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام – خب دیتا رو به صورت کاراکتر ذخیره کردید یا عدد؟ ( 1 یا ‘1’ ) بعد اگه مثلا :
      به صورت عدد (1) ذخیره کردی – میخونی میریزی تو متغیر uint8_t بعد میای lcd-print میکنی
      اگه به صورت کاراکتر ذخیره کردی بعد از خوندن میای lcd-write میکنی.

      1397/05/14
      10:37
  7. مهمان

    مصطفی

    ببخشید من یه آردوینو due خریدم ولی چون حافظه EEPROM نداره ومن نیاز مبرمی به این حافظه دارم نمیتونم ازش استفاده کنم و به خاطر void loop های بیشتری که داره مجبورم ازش استفاده کنم.میتونین منو راهنمایی کنین.

    1397/05/08
    10:14
    • نویسنده این مطلب

      مهدی دمیرچیلو

      خب بهتر – از ایپرام خارجی استفاده کن – چیز خاصی نی که – مثلا 24c512 – پروژه ازش تو سایت چند تایی گزاشتم تو نت هم کتابخونه آمادش هم هستش – دیتاشیتش رو هم بخونی میتونی خودت کتابخونه براش بنویسی

      1397/05/09
      02:36
  8. مهمان

    سعید

    سلام
    آموزشات خیلی کامله ، دمت گرم.
    پرچم حزب الهی ها بالاست.
    لبیک یا خامنه ای لبیک یا حسین (ع) است.

    1397/03/17
    09:56
  9. مهمان

    naseri

    باسلام من میخوام روی ال سی دیم تاریخ نمایش بدم و با دو عدد کلید جهتی ماه و روز رو کم و زیاد کنم ا و با یک کلید ست اونهارو ست کنم ابتدا ماه رو با کلید های جهتی تنظیم میکنم و با زدن کلید ست میخوام ماه ست بشه و بعد روز تنظیم بشه اما بعد از زدن کلید ست روز تغییری نمیکنه و دوباره اگر از کلیدهای جهتی استفاده کنیم همون ماه تغییر میکنه میشه لطفا راهنمایی کنید مشکل از کجاست؟ ممنونم

    1397/03/02
    12:48
    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-یه متغییر تعریف کن که وقتی 0 هستش ماه تنظیم بشه و وقتی ماه تنظیم شد متغییر 1 بشه و وقتی متغییر 1 هستش روز تنظیم بشه و در آخر وقتی دکمه ذخیره فشرده میشه – متغییر مربوطه دوباره 0 بشه.

      1397/03/03
      10:43
  10. مهمان

    علی

    سلام
    اول ک دستت درد نکنه بابت مطالبت
    بعد اینکه من میخام ی سری عددو ذخیره کنم و ازش تو برنامه استفاده کنم ولی میخوام این عددا وقتی آردوینوم ریست شد یا برق قطع شد پاک نشن
    تا اونجایی ک فهمیدم باید از حافظه EEPROM استفاده کنم ولی ی مشکلی ک داره اینه که عمر این حافظه ها تا جایی ک من میدونم 100000 بار نوشتن و خوندنه ولی من میخوام خیلی بیشتر از این عدد بنویسمو پاکش کنم
    الآن من چیکار میتونم بکنم؟؟

    1397/02/24
    07:51
    • نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-از رم (sd card) میتونی استفاده کنی.

      1397/02/24
      09:59
      • مهمان

        علی

        از sd میشه اطلاعاتم خوند؟؟
        ممنون میشم اگ دستوراتش رو هم ی توضیحی بدی که مثل eeprom هست یا دستوراتش فرق داره

        1397/02/25
        07:10
        • نویسنده این مطلب

          مهدی دمیرچیلو

          چرا نشه
          تو نت سرچ کنید.
          دستوراتش قطعا فرق داره.

          1397/02/25
          11:55
  11. مهمان

    محمد جواد

    سلام خسته نباشی
    تابع EEPROM.write(address, value) اگر بخواییم یه عدد رو ذخیره کنیم مثلا address رو بزنیم 5 ، برای ذخیره کردن یه عدد دیگه باید address رو بزنیم مثلا 6 ؟ درست متوجه شدم ؟
    مقدار نهایی عددی که address میگیره چقدره ؟

    1396/11/23
    07:01
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      به کمک این تابع یک تک کاراکتر (8بیت/1بایت) مینویسیم – لذا آدرس باید یه واحد زیاد بشه و شما درست گفتید – اگه آدرس قبلی 5 بوده – آدرس برا ذخیره دیتای بعدی 6 میشه.
      البته اگه بخوای متغییر ( که بیش از 1بایت هستش ) رو ذخیره کنی باید تابعشو بنویسی ( نمیدونم تو این مطلب همچین تابعی رو گفتم یا اصلا کتابخونه خود آردوینو این امکانو داره یا نه ) – مه اون موقع اگه مثلا اندازه متغییرت 2 بایت باشه – باید آدرسو 2 تا 2تا جابجا کنی – بستگی به تعداد بایت دیتات داره.

      1396/11/23
      09:54
      • مهمان

        محمد جواد

        ممنون بابت جوابت ، فقط از کجا میتونم بفهمم دیتام چند بایته ؟
        من منظورم از عدد، عدد اعشاریه.
        من الان با کی پد یه عدد مثلا 26.33 رو روی eeprom ذخیره کردمو جواب گرفتم . حالا اگه بخوام یه عدد اعشاری دیگه رو ذخیره کنم address رو چند تا جابجا کنم ؟

        1396/11/23
        10:02
        • نویسنده این مطلب

          مهدی دمرچیلو

          خب معلومه دیگه-تو تموم کتابهای آموزش c اینو گفته – تو نت هم بسرچی میاد.
          مثلا متغییر های Char تک بایتی هستن.
          که خب آردوینو کارو ساده کرده.متغییر ها قابل فهم تر شدن.
          uint8_t : که خب معلومه یه متغییر 0 تا 255 هستش و 8 بیتیه
          int8_t : یه متغییر – -128 تا 127 هستش ( بازش فک کنم هیمین باشه ) – که خب منفی هارو هم شامل میشه و باز از اسمش معلومه که 8 بیتی ( 1 بایت ) هستش.
          یا uint_16_t یا int_16_t و….
          این برا اعداد صحیح – برا اعداد اعشاری – داستان فرق داره – نمیدونم استانداری چیزی برا تجزیه و ذخیرشون هستش یا نه – خودت باید تجزیشون کنی و به یه طریقی ذیخره کنی و حواسب باشه تو خوندن هم قاطی نکنی – یعنی بدونی چطوری ذخیره کردی – مثلا من باید آدرس خونه های متغییر هارو یادداشت میکنم-و خونه n تا n+m رو قسمت صحیح متغییر رو میزارم و بعد یه . میزارم و بعد از خونه n+m+2 تا n+m+x قسمت اعشاری رو ذخیره میکنم.
          در شروع و پایان عدد اعشاریم هم یه کاراکتر میزارم – یا فقط در پایانش میزارم- چون آدرس شروعشو میدونم.
          یا مثلا میگم عدد اعشاری من فقط به صورت 2 رقم اعشار ذخیره و خونده میشه که اون وقع کار سادس – تو خونه n تا n+3 ذخیره میکنم و میخونم – آدرسو هم که میدونم – خونه nوn+1 میشه قسمت صحیح و خونه n+2وn+3 هم میشه قسمت اعشاری عدد من – لذا عدد اعشاری من مثلا اگه 23.45 باشه – این عدد با این روش ذخیره سازی که گفتم 4 بایت اشغال میکنه. که خب روشاش زیاده و …

          1396/11/23
          10:09
        • مهمان

          محمد جواد

          پس float چون 4 بایت حساب میشه ، مثلا برا عدد 26.33 که Address رو 4 میزنم ، برای عدد اعشاری بعدی بایت address رو از 8 بنویسم .
          درسته ؟

          1396/11/23
          10:16
          • نویسنده این مطلب

            مهدی دمرچیلو

            خب میگم بستگی به عدد اعشاریت و روش ذخیره سازیت داره – مثلا 2.3 دو بایت اشغال میکنه – که خب اگه بخوای . رو هم ذخیره کنی و یه کاراکتر شروع و پایان هم براش بزاری میشه 5 بایت – بستگی به روش ذخیره سازیت و پروژت داره – که چطوری بهتره دیتارو ذخیره کنی.
            این که دیتارو چه آدرسی براش بدی بستگی به خودت داره – مثلا از خونه 2 شروع کن تا 6 یا به قول خودت از 4 شروع کن تا 8 و…

            1396/11/23
            10:20
        • مهمان

          محمد جواد

          اگه برناممو اینجا بنویسم میتونی بهم بگی چقدر فاصله باید بذارم؟
          کوتاهه . زیاد نیست .

          1396/11/23
          10:22
          • نویسنده این مطلب

            مهدی دمرچیلو

            نه-تست کن در عمل – بنویس – بخون – اندازه هر متغییر رو هم که میدونی الان.

            1396/11/23
            10:28
        • مهمان

          محمد جواد

          باشه، بازم دمت گرم

          1396/11/23
          10:29
  12. مهمان

    وی جی

    سلام به برنامم که ایپرام داخلی استفاده می کنه میتونم حافظه خارجی نصب کنم. اگر میشه بازم کدنویسیش باید تغییر کنه???

    1396/11/16
    05:50
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      نه به اون صورت-کتابخونه ایپرامو اضافه میکنی و…

      1396/11/17
      10:51
  13. مهمان

    بهروز

    سلام خسته نباشید
    میشه ی لطف بکنید و نحوه اتصال eeprom خرجی رو به اردوینو و توابعش توضیح بدید ممنون میشم
    ایا دستوراتش مث e2prom داخلی هست؟
    ممنون بازهم

    1396/11/10
    04:17
  14. مهمان

    علیرضا

    سلام
    اکه بخواهیم مقداری که یه یه متغیرمثلا X دادیم با قطع برق پاک نشه تو کد ویژن باید
    متغیر X را اینجوری EEPROM int X تعریف کنیم. حالا سوال من اینه که تو اردوینو این کار و باید با چه دستوری انجام بدیم

    1396/08/16
    06:46
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام – خب تو این مطلب پس من چی توضیح دادم!!!/؟

      1396/08/17
      10:47
  15. مهمان

    mobina

    سلام وقتتون بخیر
    ببخشید یه سوال میشه همه برنامه ها رو توی این حافظه نوشت؟
    مثلا کنترل دور یک موتور.
    یا خیلی ساده تر برنامه کنترل یک موتور dc؟

    1396/06/01
    12:00
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      نه

      1396/06/02
      07:29
  16. مهمان

    ENERGY001

    احسنت … واقعا عالی …

    1396/05/28
    10:57
  17. مهمان

    مجتبی

    سلام آقا مهدی
    ما دو تا سورس داریم که میخواهیم روی آروینو پروگرم شون کنیم.
    سورس اول توی eeprom یه سری کانفیگ رو میریزه
    سورس دوم هدف پروژه هست رو انجام میده
    سوالم اینه با هر بار پروگرم کردن سورس های متفاوت eeprom پاک میشه یا نه؟

    1396/03/30
    06:52
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام – اگه میخوای دیتا تو ایپرام بریزی – بستگی داره که چیو داری پروگرام میکنی و چطور پروگرام میکنی – اگه فقط فلشو پروگرام کنی که هیچ – اگه هر دو رو پروگرام کنی- روال کار پروگرامرتو نمیدونم – که میزنه اول کل حافظه ایپرامو پاک میکنه و بعد دیتای جدید رو مینویسه یا فقط بازنویسی میکنه که اینو میتونی با یه بار تست متوجه بشی – امیدوارم درست متوجه منظورتون شده باشم.

      1396/03/31
      03:52
  18. مهمان

    محمد

    سلام
    من این حافظه ایپرام رو راه انداختم و توش یه مقداری ریختم ولی وقتی برد چند دقیقه یا چند ساعت خاموشه اطلاعاتی که توی اون مکان ایپرام ریختم پاک میشه و برا خودش یه چیزایی میزاره روش
    چرا این جوریه؟؟ dash

    1395/12/26
    04:53
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      باید از ایپرام خارجی استفاده کنی.

      1395/12/26
      05:30
    • مهمان

      محمد

      ایپرام خارجی دیگه چیه unknw sorry

      1395/12/26
      05:52
      • نویسنده این مطلب

        مهدی دمرچیلو

        یه آیسی هستش
        مثلا AT24C512

        1395/12/26
        06:50
    • مهمان

      محمد

      یعنی خود میکرو نمیتونه ذخیره کنه؟؟
      با برنامه نویسی زبان c این مشکل نیست چه جوریه با آردوینو این جوریه؟

      1395/12/29
      06:57
      • نویسنده این مطلب

        مهدی دمرچیلو

        ذخیره میشه – ولی بعد زمانی مشکل بوجود میاد برا داده ها.

        1395/12/29
        07:35
  19. مهمان

    اشکان

    مهندس تو دستور
    EEPROM.write(address, value)
    من هر عددی (حتی عدد ۲۰ رقمی) (حتی اعشار) به عنوان آدرس میدم قبول میکنه، چطور ممکنه؟

    1395/12/14
    08:00
    • نویسنده این مطلب

      مهدی دمرچیلو

      سرریز میکنه – برو تایعش رو پیدا کن و بررسی کن.

      1395/12/14
      10:12
  20. مهمان

    مجتبی

    سلام یک مطلب که من متوجه شدم اگر بعد ازاستفاده از دستور EEPROM.Write
    از دستور ()EEPROM.commit استفاده نکنی اطلاعات توش ذخیره نمیشن

    1395/09/17
    11:19
  21. مهمان

    محمد

    سلام
    اگه من ابتدای برنامه مثل برنامه شما یه متغیر int eeAddress = 0 تعریف کنم بعد ادامه برنامه داخل یک if شرطی تعریف کنم و دستور (EEPROM.put(eeAddress, Val1 رو داخل حلقه if قرار بدم در صورتی که شرط برقرار بود و دستور اجرا شد و داخل متغیر eeAddress با مقدار جدید داخل Val1 پر شد زمانی که برق رفت و برنامه از اول شروع به اجر کرد وقتی که دوباره به دستور int eeAddress = 0 رسید مقدار متغیر مجدد 0 میشه یا این دستور دیگه اجرا نمیشه؟؟
    من این رو برای یه قفل رمز میخوام که یه رمز ابتدایی و پیشفرض داشته باشه و بعدا از بیرون برنامه به صورت سخت افزاری رمز رو تغییر بدم که با قطع برق رمز جدید جایگزین رمز قبلی شده باشه

    1395/08/05
    01:13
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام – پس متغییر اول برنامه رو به صورت زیر بزن : INT Pass= EEPROM.read
      (متغییر Pass داخل ایپرام هستش)
      حالا اگه از این روش استفاده کنی باید دوبار برنامه رو پروگرام کنی – برا حل این میشه یه متغیر در حافظه ایپرام درنظر بگیر – اگه 0 بود یعنی اولین باری هستش که میکرو شروع به کار میکنه بعد از پروگرام شدن و اگه 1 نبود یعنی دفعه اول نیست —- حالا اگه دفعه اول بود : کد INT Pass = 123اجرا بشه و اگه دفه اول نبود اجرا نشه.
      بعد کاربر رمز وارد کرد میای برسی میکنی اگه رمز با مقدار Pass اگه برابر بود – دوباره یه کد دریافت میکنی و این کد رو در متغییر Pass ذخیره میکنی

      1395/08/05
      01:22
      • مهمان

        محمد

        راستش درست نفهمیدم باید چی کار کنم
        برای چی باید برنامه رو دوباره پروگرام کنم؟؟
        راهی هست من برنامه رو پروگرام بکنم ولی مقدار قبلی که داخل ایپرام قرار دادم پاک نشه؟
        اگه این روشی که گفتید رو یکمی بیشتر توضیح بدید خیلی ممنون میشم

        1395/08/05
        01:44
        • نویسنده این مطلب

          مهدی دمرچیلو

          کجاش رو نفهمیدی بگو توضیح بدم.

          1395/08/05
          02:07
          • مهمان

            محمد

            اون جاش که گفتید برای حل این مشکل باید به متغیر تعریف کنم
            روش استفاده از این متغیر رو نفهمیدم البته نمیدونم چه جوری باید درستش کنم

            1395/08/05
            03:26
          • نویسنده این مطلب

            مهدی دمرچیلو

            خب یه متغییر داری که پسورد توش ذخیره میشه( این متغییر داخل حافظه ایپرام هستش)
            الان فرض من اینه که اول کاربر رمز قبلی رو وارد میکنه و بعد رمز جدید میسازه – اگه رمز قبلی رو درست وارد کرد بهش میگی رمز جدید رو وارد کن….
            بعد از این که برنامه رو، روی میکرو پروگرام کردی کاربر میاد رمز وارد میکنه، بررسی میکنی که با اون متغیر داخل ایپرام برابر هستش یا نه، اگه بود به کاربر میگی رمز جدید رو وارد کن – رمز جدید رو که گرفتی داخل همون متغییر در ایپرام ذخیرش میکنی.

            1395/08/05
            03:43
          • مهمان

            محمد

            آقا دستت درد نکنه گرفتم چی شد
            مشکلم این بود که مقدار اولیه رو نمیدونستم چه جوری به ایپرام بدم که توضیح قبلی رو دقیق تر خوندم فهمیدم

            1395/08/06
            11:18
          • مهمان

            محمد

            من این روش رو پیاده کردم تا یه حدودی جواب گرفتم
            فقط یه سوال دارم
            حافظه eeprom رو وقتی یه مقداری توش ریختی اگه یه برنامه دیگه پروگرام کنم که eeprom نیاز نداشته باشه اون مقدار قبلی از برنامه دفعه پیش توش بود هنوزم هست؟
            من یه برنامه نوشتم به نظر مقدار میمونه
            این اتفاق طبیعیه؟؟
            و یه سوال دیگه
            من وقتی حافظه ایپرام رو میخونم از هر آدرسی قبل از این که من چیزی توش بریزم یه مقدار توش هست و صفر نیست چرا؟

            1395/08/08
            08:35
          • نویسنده این مطلب

            مهدی دمرچیلو

            حافظه ایپرام بر خلاف حافظه فلش میکرو، با قطع شدن برق اطلاعاتش از بین نمیره 0 حالا شما تو این حافظه ایپرام خارجی بیا هرچی دوست داری بریز و در پروژه های دیگه اگه کاریش نداشته باشی و نقش هویچ داشته باشه – اطلاعاتش تغییری نمیکنه.
            ==
            یا قبلا مقدار ریختی یا باید بری تو دیتاشیت مربوطه ببینی مقدار اولیه خونه ها چی هستش.

            1395/08/08
            09:17
  22. مهمان

    مسعود

    سلام .خسته نباشین. …
    امکانش هست کار با استپر موتور و مازول a4988 را هم کامل مث این پروزه ها بگید
    خییلی ممنون

    1395/06/26
    01:16
  23. مهمان

    امین

    سلام و عرض ادب
    ابتدا خسته نباشید میگم بهتون بابت نطالب مفیدی که در سایت قرار میدید
    دوما اگر امکانش باشه میخواستم راجع به اینکه میشه در EEPROM برنامه ای که حاوی دو If , و دو حلقه for هستش سوال کنم.
    به این صورت که تا بلکه بشود برای اینکه وقتی وسط برنامه برق قطع میشه برنامه دیگه از اول شروع نشه و از از اول کد ها رو اجرا نکنه و از جایی که مانده شروع به اجرای کدهای برنامه بکند.

    1395/06/01
    12:07
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      متوجه منظور شما نشدم.

      1395/06/01
      12:36
      • مهمان

        امین

        منظورم اینه که چطوری وقیی یک حلقه اجرا میشه و مثلا با عنوان شمارنده کاربرد داره اگر قبل از به اتمام رسیدن شمارش گام حلقه برق قطع شد ، پس از وصل دوباره برق دیگه نره از اول حلقه شروع به شمارش کنه از همونجایی که برق قطع شده بوده ادامه بده

        1395/06/03
        01:47
        • نویسنده این مطلب

          مهدی دمرچیلو

          خب این کار که تقریبا نشدنی هستش(مگه این که یه منبع تغزیه جایگزین قرار بدی برای مدارت تا در صورت قطع شدن برق اصلی اون منبع سریع جایگزینش بشه)
          ولی یه کاری هم میشه کرد که زیاد عاقلانه نیست به نظرم – در هر بار اجرای حلقه شماره حلقه رو تو EEPROM ذخیره کن و تو اول پروژت بگو که برو فلان حلقه(به کمک GOTO) و بعد مقدار شروع حلقه رو هم که در EEPROM ذخیره کردی – حالا اومدیم و چند تا حلقه داشتی – خب کنار اون دیتای که قبلا ذخیره میکردی شماره حلقه رو هم ذخیره میکنی.

          1395/06/03
          06:55
  24. مهمان

    سید علی

    سلام داش مهدی. من یه هفته هست که با سایت شما آشنا شدم. واقعا از شما تشکر میکنم به خاطر این وقتی که برای یادگیری هموطنات میذاری. قطعا خدا خودش اجرت رو میده. از پشت کار و سواد زیادت خیلی خوشم میاد. از اینکه به عنوان یه بچه حزب اللهی این کارا رو میکنی هم واقعا خوشم میاد. قطعا تاثیری که این کار تو روی دانشجوها میذاره، خیلی از نهاد های فرهنگی با اون همه ادعا نمی تونن بذارن. اگر همه ی مردم ما یه خورده مثل تو فکر میکردن و به جای منفعت شخصی، منفعت ملی رو هم در نظر میگرفتن، ما با این همه منابع مادی و معنوی و انسانی، نیاز به التماس بیگانگان برای رفع تحریم نداشتیم.
    بگذریم، من هم رشته ام الکترونیکه و آردوینو را تازه شروع کردم. امیدوارم جلسات بعدی آموزش رو زودتر بذاری تو سایت…
    راستی هزینه هایی هم که برای این کارا از ما میخوای، عالی هستند.
    ممنون

    1395/04/30
    09:56
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      دانشجو جماعت که دنبال این چیزا نیستن(اکثرا) مگه این که بخوان پروژه ای به استادشون تحویل بدن میال سراغ سایتا الکترونیکی bomb

      1395/04/30
      10:42
  25. مهمان

    حمید

    سلام . دستت درد نکنه ….عالی بود.
    انشاالله سال بعد هر 3 جام مال خودمونه……

    1395/02/30
    10:37
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      این لیگیی که من میبینم از اون بچگیم تا الان(10 سال) هیچ فرقی نکره – میرن آسیا حذف میشن – چه فایده
      تیمای دیگه خارجی رو آسیا برنامه ریزی دارن تیمای لیگ ایران رو قهرمانی laugh

      1395/02/30
      10:52
  26. مهمان

    arman

    سلام داش میشه فرق Arduino باGenuinoرا بگی واسم میل کنی؟؟

    1395/01/29
    11:30
  27. مهمان

    حسین

    خیلی هم عالی

    1395/01/29
    11:56