نقل قول نوشته اصلی توسط siib نمایش پست ها
خیلی چیز باحالی بود
چیزی که فهمیدم:
به نظر میاد این میکروها 3 جور حاقظه دارن
Flash که برنامه (اسکچ) اونجا ذخیره میشه ، به نظر میاد بوتلودر هم همینجا ذخیره میشه
SRAM که مقادیر متغیرهایی که در حین برنامه ایجاد میشن داخلش ذخیره میشن ، بعد از قطع و وصل شدن تغذیه این حافظه پاک میشه
ٍEEPROM حافظه ای که برنامه برای ذخیره سازی مقادیر برای مدت طولانی تر استفاده میکنه ، این حاقظه و Flash با قطع و وصل شدن برق مقادیرشون سر جاش باقی میمونه

برای ذخیره مقادیر توی EEPROM و بازخوانی هم میشه از کتابخونه EEPROM (https://www.arduino.cc/en/Reference/EEPROM)استفاده کرد
و این brown out detection خیلی چیز باحالی به نظر میاد اما شاید
خوب باشه که قبل ورودی ولتاژ آردوینو به دیود بذاریم و خازن ها رو بعد دیود وصل کنیم و مقدار ولتاژ ورودی قبل دیود رو analogread کنیم و هر وقت برق قطع شد قبل دیود ولتاژ سریعا صفره و احتمالا سریع تر متوجه این موضوع برای ذخیره سازی مقادیر میشیم
از اونجایی که فرکانس کریستال آردوینو هم 16 مگاهرتز هست فکر میکنم بدون اینتراپت هم مشکلی پیش نیاد و این چک کردن ولتاژ توی همون loop جا بگیره (البته توی loop دیگه delay نباید باشه)
به نظر من این کار دو تا مشکل داره
اولیش که خودت اشاره کردی کد اصلا نباید delay داشته باشه ( که البته با millis ) این رو حل می کنیم
دوم هم اینکه عملا داری یه پردازش انجام میدی اگه پین های آنالوگت آزاد هم باشن همین analogread چون داره از adc استفاده می کنه cpu رو مشغول خودش می کنه به طور دائم