به نام خدا : سلام، تو این مطلب از سری مطالب آموزش آردوینو که این جلسه 17امش هستش میخوام بریم سراغ حافظه EEPROM در آردوینو و یه توضیح کوچولو بدیم، یه چند تا پروژه آردوینو هم براتون قرار دادم، منبع تموم آموزش های سایت من هم خود سایت آردوینو هستش و از خودم در نمیارم^_^ و میرم از سایت آردوینو یاد میگیرم و میام به شما یاد میدم، اینا رو دارم میگم که شما هم برید یاد بگیرید چیزای مختلف رو و بعد بیاید و یاد بدید.^_^ این طوری تعداد مطالب الکترونیکی سایت های فارسی زیاد و زیاد تر میشه و چون دیگه اون وقتی که ما میزاریم و میریم سراغ منابع خارجی و یاد میگیرم چیزها رو دیگه بقیه نمیخواد این وقت رو صرف کنن و میان مطالب فارسی ما رو سریع میخونن و وقتشون رو میرن رو یاد گیری چیزای جدید تر از سایت های خارجی صرف میکنن و اگه این روال ادامه داشته باشه عجب چیزی میشه.
آموزش آردوینو جلسه 17 حافظه eeprom
حافظه 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 در آردوینو
مثال هایی برای این کتابخونه :
مطالب مرتبط :
اگه این مطلب براتون مفید بود، برای سلامتی رهبر انقلاب امام خامنه ای – علمای اسلام ( و نه عمامه انگلیسی ها ) – مسئولین خدمتگزار به کشور و اسلام – سلامتی رزمندگان اسلام و شادی روح شهدای مدافع حرم چه تو سوریه و چه عراق، یه 5 تا صلوات بفرستید ( این هزینه این مطلب هستش ^_^ )
خب بیش از این وقتتون رو نمیگیرم، فعلا یا علی.
مهمان
تو را بخدا قسمت میدم ضروری را ظروری ننویس
مهمان
سلام
یه راهنمایی می خواستم
من یه کنترلر استپ موتور با ریموت رادیویی ساختم که وقتی کلید A ریموت رو میزنم موتور 45 درجه می چرخه و قفل رو میبنده و B رو که میزنم 45 درجه به وضعیت قبلی برمی گرده و قفل باز میشه. حالا وقتی برق آردوینو قطع میشه، ترتیب این دو حالت به هم میخوره و دستور آخر از حافظه پاک میشه و پین قفل از جاش در میاد.
چطور میتونم با استفاده از دستور EEPROM آخرین وضعیت چرخش موتور رو در آردوینو ذخیره کنم ؟
اگه لازم باشه میتونم کدها رو براتون ایمیل کنم
پروژه رو باید به زودی تحویل بدم و لنگ این کد هستم.
اگه کمک کنید ممنوتون میشم
مهمان
سلام ممنون از آموزش خوبتون من می خوام اطلاعات یک تایمر قابل تنظیم را در حافظه eepromذخیره کنم میشه اطلاعات realtimeرا در حافظه eeprom ذخیره کرد یا نه؟
مهمان
سلام
آقا مهدی هنوز جواب سوال منو ندادی منتظرم ممنون
نویسنده این مطلب
سلام؛ والا باید با سازنده پرینتر تماس بگیری و این مشکلو باهاشون مطرح کنی، منم کارم تعمیرات این دستگاه ها نی و کار هم نکردم باهاشون تاحالا.
مهمان
با سلام و وقت بخیر
بارک الله به شما که طرفدار کشورت هستی ..
برادر یکعدد پرینتر سه بعدی دارم که بعد ازپایان کار به جای اولیه برنمیگرده..واگرپرینت بعدی رو بگیریم ادامه مسیری که قبلاً ایستاده بود را ادامه میدهد..که پرینتر به خارج از صفحه میرود..
مشکل بعدی آن هم اینکه وقتی میخواهیم پرینت بعدی رو بگیریم دوباره باید تنظیم شود (تنظیم دما..وغیرو…).. آیا میشود همان برنامه را درست کرد یا باید برنامه پاک و دوباره پروگرام شود…البته فقط بلدم با پرینتر کار کنم چیز دیگری از آردینو بلد نیستم .اما نرم افزار آردینو را در کامپیوتر دارم
مهمان
با سلام و وقت بخیر
مهندس جان جواب سوال ما را ندادی یا اگر جواب دادی نمیدونم کجای سایت دنبالش بگردم
مهمان
سلام .میخواستم برنامه ای بنویسم که کاربر به وسیله کیپد شماره همراه موردنظر را وارد کند و این شماره در حافظه ذخیره شود و در مواقع نیاز استفاده شود . ممنون میشم راهنمایی کنید
مهمان
سلام و خسته نباشی , ازت ی کمک میخوام . ببین من ی برنامه نوشتم برای ماژول MRF522 که میتونه هر کارت یا تگ جدیدی رو توی حافظه اضافه کنه , اما ی مشکلی هست , وقتی تغذیه آردوینو رو قطع کنم اون اطلاعات پاک میشن و دوباره وقتی تغذیه رو وصل کنم دوباره باید اون کارت یا تگ ها رو اضافه کنم , حالا نمیدونم چطوری باید از حافظه eeprom استفاده کنم تا وقتی تغذیه آردوینو رو قطع کردم اون اطلاعات پاک نشن.
مهمان
سلام
اخلاق، بصیرت و تخصص شما قابل تقدیره برادر
از مطالبتون لذت بردیم
الهم عجل لولیک الفرج
مهمان
من هرکاری میکنم نمیتونم توی ایتوپرام ذخیره کنم هم آدرس میدم و هم value رو مشخص کردم ولی باز برای من کار نمیکنه میشه کمک کنید ممنون میشم
نویسنده این مطلب
کد پروژه رو زیپ کن بفرست برام / اسم برد/میکرو مرود استفاده تون چیه؟
مهمان
درواقع میخام بدونم چطوری میشه یه دیتا بیس تو eeprom همزمان با آپلود کردن برنامه رو آردوینو داشته باشم
دستورات ش چی هست و …؟
مهمان
سلام چجوری میشه یک آرایه دیتا در eeprom ذخیره کرد و حین برنامه از اعداد داخلش استفاده کرد… مثلا اعداد اذان ظهر همه ی سال
نویسنده این مطلب
سلام- مثلا اذان ظهر میشه به صورت زیر ( اگه دقیقه یا ثانیه تک رقمی شد، یه 0 اولش میزاریم تا بعدا داستان نشه برامون)، که خب میشه 8 بایت
13:34:25
13:04:25
13:34:05
13:04:05
حالا میخوای 365 تا از این رشته های 8 بایتی رو داخل eeprom ذخیره کنی / خب فرق کنید شما یه آرایه 2 بعدی در پروژتون دارید که حاوی داده اذان ظهر برای 365 روز سال هستش / باید یکبار داده ها رو در eeprom ذخیره کنید / خب داده ها رو تک بایت تک باید در eeprom ذخیره کنید ( توابعشو در بالا گفتم ) / یا مثلا یه تابع بنویسید که داده مربوط به اذان ظهر یک روز رو بهش بدید تا ذخیره کنه ( یعنی به جای این که تک بایت تک بایت ذخیره کنید، بیاید 8 بایت 8 بایت ذخیره کنید، یکم شیک تر و بهتر میشه اینطوری ) / خب شما کل داده هاتونو در eeprom ذخیره کردید.
void writeDay(char* Azan)
{
for(int i=0; char[i]!='\0'; i++)
{
write to eeprom
}
}
حالا یه چی مهمه، داده فلان روز در کدوم خونه از حافظه eeprom قرار داره؟ خب شما از خونه 1 حافظه eeprom شروع کردید به ذخیره داده :
)
خونه 1 تا 8 : داده روز 1
خونه 9 تا 16 : داده روز 2
خونه 17 تا 24 : داده روز 3
و…
یه تابع مینویسید که در ورودی شماره روز رو بگیره، بعد خودش بیاد محاسبه کنه که برا این شماره روز، داده ها در کدوم خونه ها قرار گرفته اند ( یکم بازی با ریاضیات
همین – چیز زیاد سختی نی.
مهمان
سلام
خدا گره های کارهاتو باز کنه که گره کار ما رو باز کردی
بخاطر شلوغی های گرونی بنزین و قطع شدن اینترنت بین المللی و عدم امکان سرچ کردن واقعا مونده بودم چیکار کنم، به خاطر یه خط کد که باید یه عدد رو تو حافظه ایپرام مینوشتم، پروژه ام نصفه مونده بود رو زمین و باید فردا پروژه رو تحویل میدادم
از رو اعصاب خوردی داشتم یکی یکی همه بوکمارک هام رو میزدم ببینم کدوم باز میشه که یکم خودمو سرگرم کنم ذهنم باز بشه که یهو سایت شما اومد بالا و با یکم سرچ به مطلبی که میخواستم رسیدم
اجرکم عندالله برادر
نویسنده این مطلب
سلام – این موتور جستجو گر ایرانی خوبی هستش – نسبت به بقیه بهتره.
http://parseek.ir
مهمان
سلام.ساعت 1 بامداده.خواستم بگم خیلی آقایی.این مطلب خیلی بدردم خورد.یاشا
نویسنده این مطلب
سلام-خداروشکر که مطلب مفید بوده براتون – ساعت 3 بامداد!
مهمان
سلام دوستان تو رو خدا کمکم کنید
موقع اجرای برنامه ها تو اردینو از فضای کم رم ایراد میگیره و کدهگز رو برای پروتعوس تولید نمیکنه دلیلش چیه
نویسنده این مطلب
سلام.خب اگه خطای پر شدن حافظه میده که حتما باید این مشکلو رفعش کنید.اگه هم هشدار هستش طبیعتا نباید مشکلی رخ بده و شما اگه از تو تنظیمات تیک گزینه #تولید کد هگز# رو زده باشید باید کد در مسیری که هنگام کامپایل نشون میده ذخیره بشه
مهمان
من هی بخاطر این مطلب وارد سایت شما میشم پشت سر هم صلوات میفرستم
خدا خیرت بده،بده،کمکی چیزی خواستی در خدمتم
مهمان
سلام خسته نباشی
من روی آردوینو مگا کار می کنم و از EEPROM ش استفاده می کنم ،الان میخوام بفهمم چقدر از این حافظه مونده، امکانش هست ؟
نویسنده این مطلب
سلام-برو دیتاشیت ببین میزان حافظش رو چقدر ذکر کرده.
مهمان
سلام من یه برنامه ی قفل در دارم که با چندین پسورد میشه در رو باز کرد(یک int به صورت ماتریس در ابتدای برنامه مشخص شده)برای این که این int بره توی حافظه نمیدونم باید چیکار کنم باید تک تک بنویسم توی حافظه؟
مهمان
سلام ممنونم یه سوال داشتم؛من الان میخوام یه قفل با اردوینو و کی پد داشته باشم که هر کس یه کد خاص برای باز کردن داشته باش؛یه int pass به صورت ماتریس رو در ابتدای برنامه تعریف کردم چطور باید اینو توی حافظه ذخیره کنم؟
با تشکر.
مهمان
سلام من تازه کارم ببخشید اگه سوالای ابتدایی میپرسم

من یه آردوینو اونو دارم و یه برنامه براش نوشتم
میخاستم ببینم اگه از کابل یو اس بی جداش کنم و بعد به منبع تغذیه متصلش کنم برنامم پاک میشه؟
میتونم وقتی هنوز یو اس بی رو جدا نکردم فیش آداپتور رو بهش وصل کنم تا پاک نشه؟
نویسنده این مطلب
سلام-نه پاک نمیشه.
مهمان
سلام
من اومدم خونه های 1تا4 رو به ترتیب 1و2و3و4 کردم وتو یک برنامه دیگه گفتم که خونه های 1تا4 رو روی lcd نمایش بده.
ولی روی lcd عدد 2344 رو نمایش میده!
لطفا بگین چیکار باید بکنم؟؟؟
ممنون
نویسنده این مطلب
سلام – خب دیتا رو به صورت کاراکتر ذخیره کردید یا عدد؟ ( 1 یا ‘1’ ) بعد اگه مثلا :
به صورت عدد (1) ذخیره کردی – میخونی میریزی تو متغیر uint8_t بعد میای lcd-print میکنی
اگه به صورت کاراکتر ذخیره کردی بعد از خوندن میای lcd-write میکنی.
مهمان
ببخشید من یه آردوینو due خریدم ولی چون حافظه EEPROM نداره ومن نیاز مبرمی به این حافظه دارم نمیتونم ازش استفاده کنم و به خاطر void loop های بیشتری که داره مجبورم ازش استفاده کنم.میتونین منو راهنمایی کنین.
نویسنده این مطلب
خب بهتر – از ایپرام خارجی استفاده کن – چیز خاصی نی که – مثلا 24c512 – پروژه ازش تو سایت چند تایی گزاشتم تو نت هم کتابخونه آمادش هم هستش – دیتاشیتش رو هم بخونی میتونی خودت کتابخونه براش بنویسی
مهمان
سلام
آموزشات خیلی کامله ، دمت گرم.
پرچم حزب الهی ها بالاست.
لبیک یا خامنه ای لبیک یا حسین (ع) است.
مهمان
باسلام من میخوام روی ال سی دیم تاریخ نمایش بدم و با دو عدد کلید جهتی ماه و روز رو کم و زیاد کنم ا و با یک کلید ست اونهارو ست کنم ابتدا ماه رو با کلید های جهتی تنظیم میکنم و با زدن کلید ست میخوام ماه ست بشه و بعد روز تنظیم بشه اما بعد از زدن کلید ست روز تغییری نمیکنه و دوباره اگر از کلیدهای جهتی استفاده کنیم همون ماه تغییر میکنه میشه لطفا راهنمایی کنید مشکل از کجاست؟ ممنونم
نویسنده این مطلب
سلام-یه متغییر تعریف کن که وقتی 0 هستش ماه تنظیم بشه و وقتی ماه تنظیم شد متغییر 1 بشه و وقتی متغییر 1 هستش روز تنظیم بشه و در آخر وقتی دکمه ذخیره فشرده میشه – متغییر مربوطه دوباره 0 بشه.
مهمان
سلام
اول ک دستت درد نکنه بابت مطالبت
بعد اینکه من میخام ی سری عددو ذخیره کنم و ازش تو برنامه استفاده کنم ولی میخوام این عددا وقتی آردوینوم ریست شد یا برق قطع شد پاک نشن
تا اونجایی ک فهمیدم باید از حافظه EEPROM استفاده کنم ولی ی مشکلی ک داره اینه که عمر این حافظه ها تا جایی ک من میدونم 100000 بار نوشتن و خوندنه ولی من میخوام خیلی بیشتر از این عدد بنویسمو پاکش کنم
الآن من چیکار میتونم بکنم؟؟
نویسنده این مطلب
سلام-از رم (sd card) میتونی استفاده کنی.
مهمان
از sd میشه اطلاعاتم خوند؟؟
ممنون میشم اگ دستوراتش رو هم ی توضیحی بدی که مثل eeprom هست یا دستوراتش فرق داره
نویسنده این مطلب
چرا نشه
تو نت سرچ کنید.
دستوراتش قطعا فرق داره.
مهمان
سلام خسته نباشی
تابع EEPROM.write(address, value) اگر بخواییم یه عدد رو ذخیره کنیم مثلا address رو بزنیم 5 ، برای ذخیره کردن یه عدد دیگه باید address رو بزنیم مثلا 6 ؟ درست متوجه شدم ؟
مقدار نهایی عددی که address میگیره چقدره ؟
نویسنده این مطلب
سلام
به کمک این تابع یک تک کاراکتر (8بیت/1بایت) مینویسیم – لذا آدرس باید یه واحد زیاد بشه و شما درست گفتید – اگه آدرس قبلی 5 بوده – آدرس برا ذخیره دیتای بعدی 6 میشه.
البته اگه بخوای متغییر ( که بیش از 1بایت هستش ) رو ذخیره کنی باید تابعشو بنویسی ( نمیدونم تو این مطلب همچین تابعی رو گفتم یا اصلا کتابخونه خود آردوینو این امکانو داره یا نه ) – مه اون موقع اگه مثلا اندازه متغییرت 2 بایت باشه – باید آدرسو 2 تا 2تا جابجا کنی – بستگی به تعداد بایت دیتات داره.
مهمان
ممنون بابت جوابت ، فقط از کجا میتونم بفهمم دیتام چند بایته ؟
من منظورم از عدد، عدد اعشاریه.
من الان با کی پد یه عدد مثلا 26.33 رو روی eeprom ذخیره کردمو جواب گرفتم . حالا اگه بخوام یه عدد اعشاری دیگه رو ذخیره کنم address رو چند تا جابجا کنم ؟
نویسنده این مطلب
خب معلومه دیگه-تو تموم کتابهای آموزش 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 بایت اشغال میکنه. که خب روشاش زیاده و …
مهمان
پس float چون 4 بایت حساب میشه ، مثلا برا عدد 26.33 که Address رو 4 میزنم ، برای عدد اعشاری بعدی بایت address رو از 8 بنویسم .
درسته ؟
نویسنده این مطلب
خب میگم بستگی به عدد اعشاریت و روش ذخیره سازیت داره – مثلا 2.3 دو بایت اشغال میکنه – که خب اگه بخوای . رو هم ذخیره کنی و یه کاراکتر شروع و پایان هم براش بزاری میشه 5 بایت – بستگی به روش ذخیره سازیت و پروژت داره – که چطوری بهتره دیتارو ذخیره کنی.
این که دیتارو چه آدرسی براش بدی بستگی به خودت داره – مثلا از خونه 2 شروع کن تا 6 یا به قول خودت از 4 شروع کن تا 8 و…
مهمان
اگه برناممو اینجا بنویسم میتونی بهم بگی چقدر فاصله باید بذارم؟
کوتاهه . زیاد نیست .
نویسنده این مطلب
نه-تست کن در عمل – بنویس – بخون – اندازه هر متغییر رو هم که میدونی الان.
مهمان
باشه، بازم دمت گرم
مهمان
سلام به برنامم که ایپرام داخلی استفاده می کنه میتونم حافظه خارجی نصب کنم. اگر میشه بازم کدنویسیش باید تغییر کنه???
نویسنده این مطلب
سلام
نه به اون صورت-کتابخونه ایپرامو اضافه میکنی و…
مهمان
سلام خسته نباشید
میشه ی لطف بکنید و نحوه اتصال eeprom خرجی رو به اردوینو و توابعش توضیح بدید ممنون میشم
ایا دستوراتش مث e2prom داخلی هست؟
ممنون بازهم
مهمان
سلام
اکه بخواهیم مقداری که یه یه متغیرمثلا X دادیم با قطع برق پاک نشه تو کد ویژن باید
متغیر X را اینجوری EEPROM int X تعریف کنیم. حالا سوال من اینه که تو اردوینو این کار و باید با چه دستوری انجام بدیم
نویسنده این مطلب
سلام – خب تو این مطلب پس من چی توضیح دادم!!!/؟
مهمان
سلام وقتتون بخیر
ببخشید یه سوال میشه همه برنامه ها رو توی این حافظه نوشت؟
مثلا کنترل دور یک موتور.
یا خیلی ساده تر برنامه کنترل یک موتور dc؟
نویسنده این مطلب
سلام
نه
مهمان
احسنت … واقعا عالی …
مهمان
سلام آقا مهدی
ما دو تا سورس داریم که میخواهیم روی آروینو پروگرم شون کنیم.
سورس اول توی eeprom یه سری کانفیگ رو میریزه
سورس دوم هدف پروژه هست رو انجام میده
سوالم اینه با هر بار پروگرم کردن سورس های متفاوت eeprom پاک میشه یا نه؟
نویسنده این مطلب
سلام – اگه میخوای دیتا تو ایپرام بریزی – بستگی داره که چیو داری پروگرام میکنی و چطور پروگرام میکنی – اگه فقط فلشو پروگرام کنی که هیچ – اگه هر دو رو پروگرام کنی- روال کار پروگرامرتو نمیدونم – که میزنه اول کل حافظه ایپرامو پاک میکنه و بعد دیتای جدید رو مینویسه یا فقط بازنویسی میکنه که اینو میتونی با یه بار تست متوجه بشی – امیدوارم درست متوجه منظورتون شده باشم.
مهمان
سلام
من این حافظه ایپرام رو راه انداختم و توش یه مقداری ریختم ولی وقتی برد چند دقیقه یا چند ساعت خاموشه اطلاعاتی که توی اون مکان ایپرام ریختم پاک میشه و برا خودش یه چیزایی میزاره روش
چرا این جوریه؟؟
نویسنده این مطلب
سلام
باید از ایپرام خارجی استفاده کنی.
مهمان
ایپرام خارجی دیگه چیه

نویسنده این مطلب
یه آیسی هستش
مثلا AT24C512
مهمان
یعنی خود میکرو نمیتونه ذخیره کنه؟؟
با برنامه نویسی زبان c این مشکل نیست چه جوریه با آردوینو این جوریه؟
نویسنده این مطلب
ذخیره میشه – ولی بعد زمانی مشکل بوجود میاد برا داده ها.
مهمان
مهندس تو دستور
EEPROM.write(address, value)
من هر عددی (حتی عدد ۲۰ رقمی) (حتی اعشار) به عنوان آدرس میدم قبول میکنه، چطور ممکنه؟
نویسنده این مطلب
سرریز میکنه – برو تایعش رو پیدا کن و بررسی کن.
مهمان
سلام یک مطلب که من متوجه شدم اگر بعد ازاستفاده از دستور EEPROM.Write
از دستور ()EEPROM.commit استفاده نکنی اطلاعات توش ذخیره نمیشن
مهمان
سلام
اگه من ابتدای برنامه مثل برنامه شما یه متغیر int eeAddress = 0 تعریف کنم بعد ادامه برنامه داخل یک if شرطی تعریف کنم و دستور (EEPROM.put(eeAddress, Val1 رو داخل حلقه if قرار بدم در صورتی که شرط برقرار بود و دستور اجرا شد و داخل متغیر eeAddress با مقدار جدید داخل Val1 پر شد زمانی که برق رفت و برنامه از اول شروع به اجر کرد وقتی که دوباره به دستور int eeAddress = 0 رسید مقدار متغیر مجدد 0 میشه یا این دستور دیگه اجرا نمیشه؟؟
من این رو برای یه قفل رمز میخوام که یه رمز ابتدایی و پیشفرض داشته باشه و بعدا از بیرون برنامه به صورت سخت افزاری رمز رو تغییر بدم که با قطع برق رمز جدید جایگزین رمز قبلی شده باشه
نویسنده این مطلب
سلام – پس متغییر اول برنامه رو به صورت زیر بزن : INT Pass= EEPROM.read
(متغییر Pass داخل ایپرام هستش)
حالا اگه از این روش استفاده کنی باید دوبار برنامه رو پروگرام کنی – برا حل این میشه یه متغیر در حافظه ایپرام درنظر بگیر – اگه 0 بود یعنی اولین باری هستش که میکرو شروع به کار میکنه بعد از پروگرام شدن و اگه 1 نبود یعنی دفعه اول نیست —- حالا اگه دفعه اول بود : کد INT Pass = 123اجرا بشه و اگه دفه اول نبود اجرا نشه.
بعد کاربر رمز وارد کرد میای برسی میکنی اگه رمز با مقدار Pass اگه برابر بود – دوباره یه کد دریافت میکنی و این کد رو در متغییر Pass ذخیره میکنی
مهمان
راستش درست نفهمیدم باید چی کار کنم
برای چی باید برنامه رو دوباره پروگرام کنم؟؟
راهی هست من برنامه رو پروگرام بکنم ولی مقدار قبلی که داخل ایپرام قرار دادم پاک نشه؟
اگه این روشی که گفتید رو یکمی بیشتر توضیح بدید خیلی ممنون میشم
نویسنده این مطلب
کجاش رو نفهمیدی بگو توضیح بدم.
مهمان
اون جاش که گفتید برای حل این مشکل باید به متغیر تعریف کنم
روش استفاده از این متغیر رو نفهمیدم البته نمیدونم چه جوری باید درستش کنم
نویسنده این مطلب
خب یه متغییر داری که پسورد توش ذخیره میشه( این متغییر داخل حافظه ایپرام هستش)
الان فرض من اینه که اول کاربر رمز قبلی رو وارد میکنه و بعد رمز جدید میسازه – اگه رمز قبلی رو درست وارد کرد بهش میگی رمز جدید رو وارد کن….
بعد از این که برنامه رو، روی میکرو پروگرام کردی کاربر میاد رمز وارد میکنه، بررسی میکنی که با اون متغیر داخل ایپرام برابر هستش یا نه، اگه بود به کاربر میگی رمز جدید رو وارد کن – رمز جدید رو که گرفتی داخل همون متغییر در ایپرام ذخیرش میکنی.
مهمان
آقا دستت درد نکنه گرفتم چی شد
مشکلم این بود که مقدار اولیه رو نمیدونستم چه جوری به ایپرام بدم که توضیح قبلی رو دقیق تر خوندم فهمیدم
مهمان
من این روش رو پیاده کردم تا یه حدودی جواب گرفتم
فقط یه سوال دارم
حافظه eeprom رو وقتی یه مقداری توش ریختی اگه یه برنامه دیگه پروگرام کنم که eeprom نیاز نداشته باشه اون مقدار قبلی از برنامه دفعه پیش توش بود هنوزم هست؟
من یه برنامه نوشتم به نظر مقدار میمونه
این اتفاق طبیعیه؟؟
و یه سوال دیگه
من وقتی حافظه ایپرام رو میخونم از هر آدرسی قبل از این که من چیزی توش بریزم یه مقدار توش هست و صفر نیست چرا؟
نویسنده این مطلب
حافظه ایپرام بر خلاف حافظه فلش میکرو، با قطع شدن برق اطلاعاتش از بین نمیره 0 حالا شما تو این حافظه ایپرام خارجی بیا هرچی دوست داری بریز و در پروژه های دیگه اگه کاریش نداشته باشی و نقش هویچ داشته باشه – اطلاعاتش تغییری نمیکنه.
==
یا قبلا مقدار ریختی یا باید بری تو دیتاشیت مربوطه ببینی مقدار اولیه خونه ها چی هستش.
مهمان
سلام .خسته نباشین. …
امکانش هست کار با استپر موتور و مازول a4988 را هم کامل مث این پروزه ها بگید
خییلی ممنون
نویسنده این مطلب
سلام
ماژولش رو ندارم – مطلب زیر رو بخون.
چه مطلبی بزارم تو سایت؟
مهمان
سلام و عرض ادب
ابتدا خسته نباشید میگم بهتون بابت نطالب مفیدی که در سایت قرار میدید
دوما اگر امکانش باشه میخواستم راجع به اینکه میشه در EEPROM برنامه ای که حاوی دو If , و دو حلقه for هستش سوال کنم.
به این صورت که تا بلکه بشود برای اینکه وقتی وسط برنامه برق قطع میشه برنامه دیگه از اول شروع نشه و از از اول کد ها رو اجرا نکنه و از جایی که مانده شروع به اجرای کدهای برنامه بکند.
نویسنده این مطلب
سلام
متوجه منظور شما نشدم.
مهمان
منظورم اینه که چطوری وقیی یک حلقه اجرا میشه و مثلا با عنوان شمارنده کاربرد داره اگر قبل از به اتمام رسیدن شمارش گام حلقه برق قطع شد ، پس از وصل دوباره برق دیگه نره از اول حلقه شروع به شمارش کنه از همونجایی که برق قطع شده بوده ادامه بده
نویسنده این مطلب
خب این کار که تقریبا نشدنی هستش(مگه این که یه منبع تغزیه جایگزین قرار بدی برای مدارت تا در صورت قطع شدن برق اصلی اون منبع سریع جایگزینش بشه)
ولی یه کاری هم میشه کرد که زیاد عاقلانه نیست به نظرم – در هر بار اجرای حلقه شماره حلقه رو تو EEPROM ذخیره کن و تو اول پروژت بگو که برو فلان حلقه(به کمک GOTO) و بعد مقدار شروع حلقه رو هم که در EEPROM ذخیره کردی – حالا اومدیم و چند تا حلقه داشتی – خب کنار اون دیتای که قبلا ذخیره میکردی شماره حلقه رو هم ذخیره میکنی.
مهمان
سلام داش مهدی. من یه هفته هست که با سایت شما آشنا شدم. واقعا از شما تشکر میکنم به خاطر این وقتی که برای یادگیری هموطنات میذاری. قطعا خدا خودش اجرت رو میده. از پشت کار و سواد زیادت خیلی خوشم میاد. از اینکه به عنوان یه بچه حزب اللهی این کارا رو میکنی هم واقعا خوشم میاد. قطعا تاثیری که این کار تو روی دانشجوها میذاره، خیلی از نهاد های فرهنگی با اون همه ادعا نمی تونن بذارن. اگر همه ی مردم ما یه خورده مثل تو فکر میکردن و به جای منفعت شخصی، منفعت ملی رو هم در نظر میگرفتن، ما با این همه منابع مادی و معنوی و انسانی، نیاز به التماس بیگانگان برای رفع تحریم نداشتیم.
بگذریم، من هم رشته ام الکترونیکه و آردوینو را تازه شروع کردم. امیدوارم جلسات بعدی آموزش رو زودتر بذاری تو سایت…
راستی هزینه هایی هم که برای این کارا از ما میخوای، عالی هستند.
ممنون
نویسنده این مطلب
سلام
دانشجو جماعت که دنبال این چیزا نیستن(اکثرا) مگه این که بخوان پروژه ای به استادشون تحویل بدن میال سراغ سایتا الکترونیکی
مهمان
سلام . دستت درد نکنه ….عالی بود.
انشاالله سال بعد هر 3 جام مال خودمونه……
نویسنده این مطلب
سلام
این لیگیی که من میبینم از اون بچگیم تا الان(10 سال) هیچ فرقی نکره – میرن آسیا حذف میشن – چه فایده
تیمای دیگه خارجی رو آسیا برنامه ریزی دارن تیمای لیگ ایران رو قهرمانی
مهمان
سلام داش میشه فرق Arduino باGenuinoرا بگی واسم میل کنی؟؟
مهمان
خیلی هم عالی