فهرست مطالب:

EEPROM داخلی Arduino شما: 6 مرحله
EEPROM داخلی Arduino شما: 6 مرحله

تصویری: EEPROM داخلی Arduino شما: 6 مرحله

تصویری: EEPROM داخلی Arduino شما: 6 مرحله
تصویری: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, نوامبر
Anonim
EEPROM داخلی Arduino شما
EEPROM داخلی Arduino شما

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

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

چرا از EEPROM داخلی استفاده می کنید؟ برای شرایطی که داده های منحصر به فرد به یک موقعیت خاص نیاز به خانه دائمی تری دارند. به عنوان مثال ، ذخیره شماره سریال منحصر به فرد و تاریخ تولید یک پروژه تجاری مبتنی بر آردوینو-یک تابع طرح می تواند شماره سریال را بر روی LCD نمایش دهد ، یا داده ها را می توان با بارگذاری "طرح خدمات" خواند. یا ممکن است لازم باشد برخی رویدادها را شمارش کنید و اجازه ندهید کاربر آنها را بازنشانی کند-مانند کیلومتر شمار یا شمارنده چرخه عمل.

مرحله 1: چه نوع داده ای را می توان ذخیره کرد؟

چه نوع داده ای را می توان ذخیره کرد؟
چه نوع داده ای را می توان ذخیره کرد؟

هر چیزی که می تواند به عنوان بایت داده نمایش داده شود. یک بایت داده از هشت بیت داده تشکیل شده است. بیت می تواند روشن (مقدار 1) یا خاموش (مقدار 0) باشد و برای نمایش اعداد به صورت دودویی مناسب است. به عبارت دیگر ، یک عدد دودویی فقط می تواند از صفر و یک برای نشان دادن یک مقدار استفاده کند. بنابراین باینری به عنوان "base-2" نیز شناخته می شود ، زیرا فقط می تواند از دو رقم استفاده کند.

چگونه می توان یک عدد دودویی با استفاده از دو رقم نشان دهنده یک عدد بزرگتر بود؟ از تعداد زیادی صفر و یک استفاده می کند. بیایید یک عدد دودویی را بررسی کنیم ، مثلاً 10101010. از آنجا که این یک عدد پایه 2 است ، هر رقم نشان دهنده 2 به توان x است ، از x = 0 به بعد.

گام 2:

تصویر
تصویر

ببینید چگونه هر رقم از عدد دودویی می تواند یک عدد پایه 10 را نشان دهد. بنابراین عدد دوتایی بالا 85 را در مبنای 10 نشان می دهد-مقدار 85 مجموع مقادیر پایه 10 است. مثال دیگر - 11111111 در دوتایی برابر 255 در مبنای 10 است.

مرحله 3:

اکنون هر رقم در آن شماره دودویی از یک "بیت" حافظه استفاده می کند و هشت بیت یک بایت می سازد. به دلیل محدودیت های داخلی میکروکنترلرها در بردهای آردوینو ، ما فقط می توانیم اعداد 8 بیتی (یک بایت) را در EEPROM ذخیره کنیم.

این امر مقدار اعشاری عدد را بین صفر و 255 محدود می کند. سپس به شما بستگی دارد که چگونه داده های خود را با آن محدوده اعداد نمایش دهید. اجازه ندهید این کار شما را ناامید کند - اعداد به ترتیب صحیح مرتب شده می توانند تقریباً همه چیز را نشان دهند! توجه به یک محدودیت وجود دارد - تعداد دفعاتی که می توانیم برای EEPROM بخوانیم یا بنویسیم. به گفته سازنده Atmel ، EEPROM برای 100،000 چرخه خواندن/نوشتن مناسب است (به برگه اطلاعات مراجعه کنید).

مرحله 4:

اکنون ما بیت ها و بایت های خود را می دانیم ، چند بایت می تواند در میکروکنترلر آردوینو ذخیره شود؟ بسته به مدل میکروکنترلر ، پاسخ متفاوت است. مثلا:

  • تخته هایی با Atmel ATmega328 مانند Arduino Uno ، Uno SMD ، Nano ، Lilypad و غیره - 1024 بایت (1 کیلوبایت)
  • تخته هایی با Atmel ATmega1280 یا 2560 ، مانند سری Arduino Mega - 4096 بایت (4 کیلوبایت)
  • تخته هایی با Atmel ATmega168 ، مانند Arduino Lilypad اصلی ، نانو قدیمی ، Diecimila و غیره - 512 بایت.

اگر مطمئن نیستید به شاخص سخت افزار Arduino نگاهی بیندازید یا از تامین کننده برد خود بپرسید. اگر به حافظه EEPROM بیشتری نسبت به میزان موجود در میکروکنترلر خود نیاز دارید ، از یک IEP I2C EEPROM خارجی استفاده کنید.

در این مرحله ما در حال درک این هستیم که چه نوع داده ای و چه مقدار را می توان در EEPROM آردوینو ذخیره کرد. اکنون وقت آن است که این امر را عملی کنیم. همانطور که قبلاً بحث شد ، فضای محدودی برای داده های ما وجود دارد. در مثال های زیر ، ما از یک برد معمولی آردوینو با ATmega328 با 1024 بایت حافظه EEPROM استفاده می کنیم.

مرحله 5:

برای استفاده از EEPROM ، یک کتابخانه مورد نیاز است ، بنابراین از کتابخانه زیر در طرح های خود استفاده کنید:

#شامل "EEPROM.h"

بقیه خیلی ساده است. برای ذخیره یک داده ، از تابع زیر استفاده می کنیم:

EEPROM.write (a ، b) ؛

پارامتر a موقعیتی است که در EEPROM برای ذخیره عدد صحیح (255 0 0) داده b است. در این مثال ، ما 1024 بایت حافظه داریم ، بنابراین مقدار a بین 0 تا 1023 است. برای بازیابی یک قطعه داده به همان سادگی ، از موارد زیر استفاده کنید:

z = EEPROM.read (a) ؛

جایی که z یک عدد صحیح برای ذخیره داده ها از موقعیت EEPROM a است. حالا برای دیدن یک مثال.

مرحله 6:

تصویر
تصویر

این طرح اعداد تصادفی بین 0 تا 255 ایجاد می کند ، آنها را در EEPROM ذخیره می کند ، سپس آنها را بازیابی و روی مانیتور سریال نمایش می دهد. متغیر EEsize حد بالایی اندازه EEPROM شما است ، بنابراین (برای مثال) این مقدار برای Arduino Uno 1024 یا برای Mega 4096 خواهد بود.

// نمایش داخلی EEPROM آردوینو

#عبارتند از

int zz؛ int EEsize = 1024؛ // اندازه بایت EEPROM هیئت مدیره شما

void setup ()

{Serial.begin (9600) ؛ randomSeed (analogRead (0)) ؛ } void loop () {Serial.println ("نوشتن اعداد تصادفی …") ؛ برای (int i = 0 ؛ i <EEsize ؛ i ++) {zz = تصادفی (255) ؛ EEPROM.write (i، zz)؛ } Serial.println ()؛ برای (int a = 0؛ a <EEsize؛ a ++) {zz = EEPROM.read (a)؛ Serial.print ("موقعیت EEPROM:")؛ Serial.print (a)؛ Serial.print ("حاوی") ؛ Serial.println (zz) ؛ تأخیر (25) ؛ }}

خروجی از مانیتور سریال همانطور که در تصویر نشان داده شده ظاهر می شود.

بنابراین ، این یک راه مفید دیگر برای ذخیره داده ها با سیستم های آردوینو است. اگرچه هیجان انگیزترین آموزش نیست ، اما مطمئناً مفید است.

این پست توسط pmdway.com برای شما ارسال شده است - همه چیز برای سازندگان و علاقه مندان به لوازم الکترونیکی ، با ارسال رایگان در سراسر جهان.

توصیه شده: