ذاكرة EEPROM المدمجة في Arduino: 6 خطوات
ذاكرة EEPROM المدمجة في Arduino: 6 خطوات
Anonim
ذاكرة EEPROM المدمجة في Arduino
ذاكرة EEPROM المدمجة في Arduino

في هذه المقالة سنقوم بفحص EEPROM الداخلي في لوحات Arduino الخاصة بنا. ما هو EEPROM الذي قد يقوله البعض منكم؟ EEPROM هي ذاكرة للقراءة فقط قابلة للبرمجة كهربائيًا.

إنه شكل من أشكال الذاكرة غير المتطايرة التي يمكنها تذكر الأشياء عند إيقاف تشغيل الطاقة ، أو بعد إعادة ضبط Arduino. يكمن جمال هذا النوع من الذاكرة في أنه يمكننا تخزين البيانات التي تم إنشاؤها داخل رسم تخطيطي على أساس دائم.

لماذا تستخدم EEPROM الداخلي؟ بالنسبة للحالات التي تحتاج فيها البيانات الخاصة بموقف ما إلى منزل أكثر ديمومة. على سبيل المثال ، تخزين الرقم التسلسلي الفريد وتاريخ التصنيع لمشروع تجاري قائم على Arduino - يمكن لوظيفة الرسم أن تعرض الرقم التسلسلي على شاشة LCD ، أو يمكن قراءة البيانات عن طريق تحميل "مخطط الخدمة". أو قد تحتاج إلى حساب أحداث معينة وعدم السماح للمستخدم بإعادة تعيينها - مثل عداد المسافات أو عداد دورة التشغيل.

الخطوة 1: ما نوع البيانات التي يمكن تخزينها؟

ما نوع البيانات التي يمكن تخزينها؟
ما نوع البيانات التي يمكن تخزينها؟

أي شيء يمكن تمثيله على هيئة بايت من البيانات. يتكون بايت واحد من البيانات من ثمانية بتات من البيانات. يمكن أن يكون البت إما قيد التشغيل (القيمة 1) أو إيقاف التشغيل (القيمة 0) ، وهو مثالي لتمثيل الأرقام في شكل ثنائي. بمعنى آخر ، يمكن أن يستخدم الرقم الثنائي فقط الأصفار والآحاد لتمثيل قيمة. وبالتالي ، يُعرف النظام الثنائي أيضًا باسم "الأساس -2" ، حيث يمكنه استخدام رقمين فقط.

كيف يمكن للعدد الثنائي باستخدام رقمين فقط أن يمثل عددًا أكبر؟ يستخدم الكثير من الآحاد والأصفار. لنفحص رقمًا ثنائيًا ، لنقل 10101010. نظرًا لأن هذا رقم أساس 2 ، فإن كل رقم يمثل 2 أس x ، بدءًا من x = 0 وما بعده.

الخطوة 2:

صورة
صورة

انظر كيف يمكن أن يمثل كل رقم من الرقم الثنائي رقم أساس 10. لذا فإن الرقم الثنائي أعلاه يمثل 85 في الأساس 10 - القيمة 85 هي مجموع قيم الأساس 10. مثال آخر - 11111111 في النظام الثنائي يساوي 255 في الأساس 10.

الخطوه 3:

الآن كل رقم في هذا الرقم الثنائي يستخدم "بت" واحد من الذاكرة ، وثمانية بتات تشكل بايتًا. نظرًا للقيود الداخلية للميكروكونترولر في لوحات Arduino الخاصة بنا ، يمكننا فقط تخزين أرقام 8 بت (بايت واحد) في EEPROM.

هذا يحد من أن تقع القيمة العشرية للرقم بين صفر و 255. الأمر متروك لك بعد ذلك لتقرر كيف يمكن تمثيل بياناتك بهذا النطاق الرقمي. لا تدع هذا يزعجك - فالأرقام المرتبة بالطريقة الصحيحة يمكن أن تمثل أي شيء تقريبًا! هناك قيد واحد يجب مراعاته - عدد المرات التي يمكننا فيها القراءة أو الكتابة إلى EEPROM. وفقًا للشركة المصنعة Atmel ، فإن EEPROM جيد لـ 100000 دورة قراءة / كتابة (انظر ورقة البيانات).

الخطوة الرابعة:

الآن نحن نعرف البتات والبايتات الخاصة بنا ، كم عدد البايتات التي يمكن تخزينها في متحكم Arduino الخاص بنا؟ تختلف الإجابة حسب طراز الميكروكونترولر. على سبيل المثال:

  • اللوحات التي تحتوي على Atmel ATmega328 ، مثل Arduino Uno و Uno SMD و Nano و Lilypad وما إلى ذلك - 1024 بايت (1 كيلوبايت)
  • اللوحات ذات Atmel ATmega1280 أو 2560 ، مثل سلسلة Arduino Mega - 4096 بايت (4 كيلوبايت)
  • اللوحات المزودة بـ Atmel ATmega168 ، مثل Arduino Lilypad الأصلي و Nano القديم و Diecimila وما إلى ذلك - 512 بايت.

إذا لم تكن متأكدًا ، فقم بإلقاء نظرة على فهرس أجهزة Arduino أو اسأل مورد اللوحة الخاصة بك. إذا كنت بحاجة إلى مساحة تخزين EEPROM أكثر مما هو متاح مع وحدة التحكم الدقيقة الخاصة بك ، ففكر في استخدام I2C EEPROM خارجي.

في هذه المرحلة ، نفهم الآن نوع البيانات ومقدار ما يمكن تخزينه في EEPROM من Arduino. حان الوقت الآن لوضع هذا موضع التنفيذ. كما تمت مناقشته سابقًا ، هناك مساحة محدودة لبياناتنا. في الأمثلة التالية ، سنستخدم لوحة Arduino نموذجية مع ATmega328 بسعة 1024 بايت من تخزين EEPROM.

الخطوة الخامسة:

لاستخدام EEPROM ، يلزم وجود مكتبة ، لذا استخدم المكتبة التالية في رسوماتك:

# تضمين "EEPROM.h"

الباقي بسيط جدا لتخزين جزء من البيانات ، نستخدم الوظيفة التالية:

EEPROM.write (أ ، ب) ؛

المعلمة a هي الموضع في EEPROM لتخزين العدد الصحيح (0 ~ 255) من البيانات ب. في هذا المثال ، لدينا 1024 بايت من مساحة تخزين الذاكرة ، وبالتالي فإن قيمة a تتراوح بين 0 و 1023. لاسترداد جزء من البيانات بنفس البساطة ، استخدم:

ض = EEPROM.read (أ) ،

حيث z هو عدد صحيح لتخزين البيانات من موقع EEPROM أ. الآن لنرى مثالا.

الخطوة السادسة:

صورة
صورة

سيقوم هذا الرسم التخطيطي بإنشاء أرقام عشوائية بين 0 و 255 ، وتخزينها في EEPROM ، ثم استردادها وعرضها على الشاشة التسلسلية. المتغير EEsize هو الحد الأعلى لحجم EEPROM الخاص بك ، لذلك (على سبيل المثال) سيكون 1024 لـ Arduino Uno أو 4096 لـ Mega.

// مظاهرة اردوينو الداخلية EEPROM

#يشمل

كثافة العمليات zz int EEsize = 1024 ؛ // الحجم بالبايت من EEPROM للوحة الخاصة بك

الإعداد باطل()

{Serial.begin (9600) ، randomSeed (analogRead (0)) ؛ } void loop () {Serial.println ("كتابة أرقام عشوائية …")؛ لـ (int i = 0 ؛ i <EEsize ؛ i ++) {zz = random (255) ؛ EEPROM.write (i، zz) ؛ } Serial.println () ، لـ (int a = 0؛ a <EEsize؛ a ++) {zz = EEPROM.read (a)؛ Serial.print ("موضع EEPROM:") ؛ Serial.print (أ) ؛ Serial.print ("يحتوي") ؛ Serial.println (zz) ؛ تأخير (25) ؛ }}

سيظهر الإخراج من الشاشة التسلسلية ، كما هو موضح في الصورة.

إذن فهناك طريقة أخرى مفيدة لتخزين البيانات مع أنظمة Arduino الخاصة بنا. على الرغم من أنه ليس البرنامج التعليمي الأكثر إثارة ، إلا أنه مفيد بالتأكيد.

هذا المنشور يقدمه لك pmdway.com - كل شيء للصانعين وعشاق الإلكترونيات ، مع التوصيل المجاني في جميع أنحاء العالم.

موصى به: