جدول المحتويات:

إضافة 24LC256 EEPROM إلى Arduino Due: 3 خطوات
إضافة 24LC256 EEPROM إلى Arduino Due: 3 خطوات

فيديو: إضافة 24LC256 EEPROM إلى Arduino Due: 3 خطوات

فيديو: إضافة 24LC256 EEPROM إلى Arduino Due: 3 خطوات
فيديو: Arduino C++ Arduino UNO and external EEPROM 24LC256 2024, شهر نوفمبر
Anonim
إضافة 24LC256 EEPROM إلى Arduino Due
إضافة 24LC256 EEPROM إلى Arduino Due

يفتقر اردوينو المستحق إلى eeprom. يضيف هذا التوجيه واحدًا ويسمح لك بتخزين القيم في ذاكرة غير متطايرة من شأنها أن تنجو من تحديث برنامج Arduino الثابت.

الخطوة 1: اللوح

اللوح
اللوح

هناك بعض الإرشادات الجيدة حقًا هنا: https://www.hobbytronics.co.uk/arduino-external-eeprom لقد اتبعتها للتو ، حيث تُظهر الصورة الدائرة الكهربية. تم تأريض المسامير من 1 إلى 4 والدبوس 7. يتم توصيل السن 8 بمصدر الإمداد 3.3 فولت على اللوحة المناسبة ، والأسلاك الصفراء (رقم 6) والأبيض (رقم 5) متصلة بمنافذ i2c SDA (البيانات) و SCL (الساعة) على اللوحة المستحقة (المرقمة 21 و 20).

الخطوة 2: كود الوقت

وقت الرمز
وقت الرمز

فيما يلي بعض المقتطفات من التعليمات البرمجية التي أستخدمها في رسوماتي. أولاً ، قم بتضمين رؤوس مكتبة Wire في مكان ما بالقرب من الجزء العلوي من المخطط الخاص بك: / * استخدم 24LC256 EEPROM لحفظ الإعدادات * / #include ثم أضف بعض الوظائف لقراءة وكتابة البايت من EEPROM (أنا مهتم فقط بالبايتات الفردية ولكن هناك ميزة كتابة الصفحة في الشريحة أيضًا). لاحظ أن هناك تعريفًا ماكروًا لـ 0x50.. هذا هو عنوان الشريحة على ناقل i2c (يمكنك توصيل أكثر من عنصر i2c واحد على ناقل i2c وتحديد أي واحد تريد التحدث إليه عن طريق تغيير العنوان). / * تساعدنا هاتان الوظيفتان في الكتابة إلى شريحة 24LC256 EEPROM * / # تعريف EEPROM_ADDR 0x50 void EEPROM_write (عنوان int غير موقعة ، بيانات البايت) {int rdata = data ؛ Wire.beginTransmission (EEPROM_ADDR) ؛ Wire.write ((int) (addr >> 8)) ؛ // MSB Wire.write ((int) (addr & 0xFF)) ؛ // LSB Wire.write (rdata) ؛ Wire.endTransmission () ؛ //Serial.print("EEPROM write: addr: ")؛ //Serial.print (addr) ؛ //Serial.print ("") ؛ //Serial.println(data) ؛ تأخير (5) ؛ } بايت EEPROM_read (عنوان int غير موقعة) {بيانات البايت = 0xFF ؛ Wire.beginTransmission (EEPROM_ADDR) ؛ Wire.write ((int) (addr >> 8)) ؛ // MSB Wire.write ((int) (addr & 0xFF)) ؛ // LSB Wire.endTransmission () ؛ Wire.request From (EEPROM_ADDR، 1) ، إذا كانت البيانات (Wire.available ()) = Wire.read () ؛ //Serial.print("EEPROM قراءة: addr: ") ؛ //Serial.print (addr) ؛ //Serial.print ("") ؛ //Serial.println(data) ؛ تأخير (5) ؛ عودة البيانات } يمكنك uncomment خطوط Serial.print (…) إذا كنت تريد رؤية بعض إخراج التصحيح. في وظيفة إعداد arduinos () ، تبدأ مكتبة الأسلاك ويمكنك القراءة بالقيم الأولية. قرأت هنا في 2 بايت (أعلام و max_cc) ، كلمتين (lean_min و lean_max) ومجموعة من الكلمات sd_max [3]: // قراءة القيم المحفوظة في EEPROM Wire.begin () ؛ الأعلام = EEPROM_read (0) ، max_cc = EEPROM_read (1) ، lean_min = word (EEPROM_read (3) ، EEPROM_read (2)) ؛ lean_max = word (EEPROM_read (5) ، EEPROM_read (4)) ؛ لـ (int j = 0 ؛ j <3 ؛ j) {sd_max [j] = word (EEPROM_read (7 j * 2) ، EEPROM_read (6 j * 2)) ؛ } هذا هو جزء الكود الذي يكتبها في EEPROM: EEPROM_write (0، flags)؛ EEPROM_write (1، max_cc) ؛ EEPROM_write (2، lowByte (lean_min)) ؛ EEPROM_write (3، highByte (lean_min)) ؛ EEPROM_write (4، lowByte (lean_max)) ؛ EEPROM_write (5، highByte (lean_max)) ؛ لـ (int j = 0 ؛ j <3 ؛ j) {EEPROM_write (6 j * 2، lowByte (sd_max [j])) ؛ EEPROM_write (7 j * 2، highByte (sd_max [j])) ؛ } هذا حقًا.

الخطوة 3: اربطها

اربطها
اربطها

قم بتوصيله ببعض الألواح الخشبية لتثبيته في حاوية وتم إنجاز المهام.

موصى به: