Mündəricat:

Arduino -nun Daxili EEPROM: 6 Addım
Arduino -nun Daxili EEPROM: 6 Addım

Video: Arduino -nun Daxili EEPROM: 6 Addım

Video: Arduino -nun Daxili EEPROM: 6 Addım
Video: Arduino 64 Step Sequencer с минимальным аппаратным обеспечением, адаптированный из Drum Sequencer 2024, Noyabr
Anonim
Arduino -nun Daxili EEPROM -u
Arduino -nun Daxili EEPROM -u

Bu yazıda Arduino lövhələrimizdəki daxili EEPROM -u araşdıracağıq. Bəziləriniz deyə biləcəyiniz bir EEPROM nədir? EEPROM, Elektriklə Silinə bilən Proqramlaşdırıla bilən Yalnız Oxunan Yaddaşdır.

Güc söndürüldükdə və ya Arduino sıfırlandıqdan sonra hər şeyi xatırlaya bilən dəyişməz bir yaddaş formasıdır. Bu cür yaddaşın gözəlliyi, eskizdə yaradılan məlumatları daha daimi olaraq saxlaya bilməyimizdir.

Niyə daxili EEPROM -dan istifadə edirsiniz? Vəziyyətə xas olan məlumatların daha daimi bir evə ehtiyacı olduğu vəziyyətlər üçün. Məsələn, kommersiya Arduino əsaslı bir layihənin unikal seriya nömrəsini və istehsal tarixini saxlamaq-eskizin funksiyası seriya nömrəsini LCD-də göstərə bilər və ya məlumatlar 'xidmət eskizi' yükləyərək oxunur. Yoxsa müəyyən hadisələri saymaq və istifadəçinin onları sıfırlamasına icazə verməmək lazım ola bilər-məsələn, odometr və ya əməliyyat dövrü sayğacı.

Addım 1: Hansı növ məlumatları saxlamaq olar?

Hansı növ məlumatları saxlamaq olar?
Hansı növ məlumatları saxlamaq olar?

Məlumat baytı kimi təqdim edilə bilən hər şey. Bir bayt məlumat səkkiz bit məlumatdan ibarətdir. Bir bit ya açıq (dəyər 1) və ya söndürülmüş (dəyər 0) ola bilər və ədədləri ikili formada əks etdirmək üçün idealdır. Başqa sözlə, ikili nömrə yalnız bir sıfırdan istifadə edərək dəyərləri təmsil edə bilər. Beləliklə, ikili də "baza-2 ″" olaraq da bilinir, çünki yalnız iki rəqəmdən istifadə edə bilər.

Necə ola bilər ki, yalnız iki rəqəmdən ibarət ikili rəqəm daha böyük bir rəqəmi ifadə edə bilər? Bir çoxu və sıfırdan istifadə edir. İkili bir rəqəmi araşdıraq, deyək 10101010. Bu, baza-2 ədəd olduğu üçün, hər rəqəm x = 0-dan başlayaraq x-in gücünə 2-ni təmsil edir.

Addım 2:

Şəkil
Şəkil

İkili ədədin hər bir rəqəminin baza-10 ədədini necə təmsil edə biləcəyinə baxın. Beləliklə, yuxarıdakı ikilik sayı baza-10-da 85-i təmsil edir-85 dəyəri, baz-10 dəyərlərinin cəmidir. Başqa bir nümunə - ikilikdə 11111111, baza 10 -da 255 -ə bərabərdir.

Addım 3:

İndi bu ikili nömrədəki hər rəqəm bir "bit" yaddaşdan istifadə edir və səkkiz bit bir bayt təşkil edir. Arduino lövhələrimizdəki mikro nəzarətçilərin daxili məhdudiyyətləri səbəbindən yalnız 8 bitlik nömrələri (bir bayt) EEPROM-da saxlaya bilərik.

Bu rəqəmin ondalık dəyərinin sıfırdan 255 -ə düşməsini məhdudlaşdırır. O zaman məlumatlarınızın bu rəqəm aralığında necə təmsil olunacağına qərar vermək sizə aiddir. Bunun sizi təxirə salmasına imkan verməyin - düzgün tərtib edilmiş nömrələr demək olar ki, hər şeyi təmsil edə bilər! Diqqət yetirməli olduğumuz bir məhdudiyyət var - EEPROM -a nə qədər oxuya və ya yaza biləcəyimiz. İstehsalçı Atmelə görə, EEPROM 100.000 oxu/yazma dövrü üçün yaxşıdır (məlumat vərəqinə baxın).

Addım 4:

İndi bit və baytlarımızı bilirik, Arduino'nun mikro nəzarətçisində neçə baytı saxlamaq olar? Cavab mikrokontrolörün modelindən asılı olaraq dəyişir. Misal üçün:

  • Arduino Uno, Uno SMD, Nano, Lilypad və s. Kimi Atmel ATmega328 lövhələri - 1024 bayt (1 kilobayt)
  • Arduino Mega seriyası kimi Atmel ATmega1280 və ya 2560 olan lövhələr - 4096 bayt (4 kilobayt)
  • Orijinal Arduino Lilypad, köhnə Nano, Diecimila və s. Kimi Atmel ATmega168 lövhələri - 512 bayt.

Əmin deyilsinizsə, Arduino hardware indeksinə baxın və ya lövhə təchizatçınızdan soruşun. Mikro nəzarətçinizdə olanlardan daha çox EEPROM yaddaşına ehtiyacınız varsa, xarici bir I2C EEPROM istifadə etməyi düşünün.

Bu anda, Arduino'nun EEPROM -da nə cür məlumatların və nə qədər saxlanıla biləcəyini başa düşürük. İndi bunu həyata keçirməyin vaxtıdır. Daha əvvəl müzakirə edildiyi kimi, məlumatlarımız üçün sonlu bir yer var. Aşağıdakı nümunələrdə, 1024 baytlıq EEPROM yaddaşı olan ATmega328 ilə tipik bir Arduino lövhəsindən istifadə edəcəyik.

Addım 5:

EEPROM -dan istifadə etmək üçün kitabxana lazımdır, buna görə də eskizlərinizdə aşağıdakı kitabxanadan istifadə edin:

#"EEPROM.h" daxil edin

Qalanı çox sadədir. Bir məlumatı saxlamaq üçün aşağıdakı funksiyadan istifadə edirik:

EEPROM.write (a, b);

A parametri, EEPROM -dəki b məlumatlarının (0 ~ 255) tam ədədini saxlama mövqeyidir. Bu nümunədə, 1024 bayt yaddaş saxlama yerimiz var, buna görə də a -nın dəyəri 0 ilə 1023 arasındadır. Məlumat parçasını əldə etmək eyni dərəcədə sadədir:

z = EEPROM.read (a);

Burada z, EEPROM mövqeyindən məlumatları saxlamaq üçün bir tam ədəddir a. İndi bir nümunəyə baxaq.

Addım 6:

Şəkil
Şəkil

Bu eskiz 0 ilə 255 arasında təsadüfi ədədlər yaradacaq, onları EEPROM -da saxlayacaq, sonra əldə edib serial monitorda göstərəcək. Dəyişən EEsize, EEPROM ölçüsünüzün yuxarı həddi olduğu üçün (məsələn) bu bir Arduino Uno üçün 1024 və ya Mega üçün 4096 olardı.

// Arduino daxili EEPROM nümayişi

#daxil edin

int zz; int EEsize = 1024; // lövhənizin EEPROM -un bayt ölçüsü

boş quraşdırma ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Təsadüfi ədədlərin yazılması …"); for (int i = 0; i <EEsize; i ++) {zz = təsadüfi (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM mövqeyi:"); Serial. çap (a); Serial.print ("ehtiva edir"); Serial.println (zz); gecikmə (25); }}

Şəkildə göstərildiyi kimi seriyalı monitordan çıxış görünəcək.

Arduino sistemlərimizlə məlumat saxlamağın başqa bir faydalı yolu var. Ən maraqlı dərs olmasa da, əlbəttə ki, faydalıdır.

Bu yazı pmdway.com tərəfindən sizə gətirildi - istehsalçılar və elektronika həvəskarları üçün hər şey, bütün dünyada pulsuz çatdırılma.

Tövsiyə: