Arduino-da Məlumatları Necə Saxlamaq Olar

Mündəricat:

Arduino-da Məlumatları Necə Saxlamaq Olar
Arduino-da Məlumatları Necə Saxlamaq Olar

Video: Arduino-da Məlumatları Necə Saxlamaq Olar

Video: Arduino-da Məlumatları Necə Saxlamaq Olar
Video: Диагностика и ремонт ARDUINO UNO R3 2024, Noyabr
Anonim

Arduino lövhələri bir neçə növ yaddaşa malikdir. Birincisi, proqramın icrası zamanı dəyişənlərin saxlanılması üçün istifadə olunan statik RAM (təsadüfi giriş yaddaş). İkincisi, yazdığınız eskizləri saxlayan flash yaddaşdır. Üçüncüsü, məlumatları daimi olaraq saxlamaq üçün istifadə edilə bilən bir EEPROMdur. Birinci yaddaş növü dəyişkəndir, Arduinonu yenidən yüklədikdən sonra bütün məlumatları itirir. Yaddaşın ikinci iki növü, güc kəsildikdən sonra da yenisi ilə yazılana qədər məlumatları saxlayır. Son yaddaş növü - EEPROM - məlumatların yazılmasına, saxlanmasına və lazım olduqda oxunmasına imkan verir. Bu yaddaşı indi nəzərdən keçirəcəyik.

EEPROM Arduino-da məlumatların saxlanılması
EEPROM Arduino-da məlumatların saxlanılması

Zəruri

  • - Arduino;
  • - kompüter.

Təlimat

Addım 1

EEPROM, Elektriklə silinə bilən, yalnız oxuna bilən yaddaş deməkdir, yəni. elektriklə silinən və yalnız oxunan yaddaş. Bu yaddaşdakı məlumatlar güc kəsildikdən sonra on illər ərzində saxlanıla bilər. Yenidən yazılan dövrlərin sayı bir neçə milyon dəfədir.

Arduinodakı EEPROM yaddaş miqdarı kifayət qədər məhduddur: ATmega328 mikrokontroller (məsələn, Arduino UNO və Nano) əsaslı lövhələr üçün yaddaş miqdarı 1 KB, ATmega168 və ATmega8 lövhələr üçün - 512 bayt, ATmega2560 və ATmega1280 - 4 KB.

Addım 2

Arduino üçün EEPROM ilə işləmək üçün, standart olaraq Arduino IDE-yə daxil olan xüsusi bir kitabxana yazılmışdır. Kitabxana aşağıdakı xüsusiyyətləri özündə cəmləşdirir.

oxu (ünvan) - EEPROM-dan 1 bayt oxuyur; ünvan - məlumatların oxunduğu ünvan (0-dan başlayan hücrə);

yazın (ünvan, dəyər) - ünvan dəyərindəki yaddaşa dəyər dəyərini (1 bayt, 0-dan 255-ə qədər) yazır;

yeniləmə (ünvan, dəyər) - köhnə məzmunu yenisindən fərqlənirsə, ünvandakı dəyəri əvəz edir;

almaq (ünvan, məlumat) - göstərilən tip məlumatları ünvanda yaddaşdan oxuyur;

put (adres, data) - göstərilən tipdəki məlumatları ünvandakı yaddaşa yazır;

EEPROM [adres] - məlumat yazmaq və yaddaşdan oxumaq üçün "EEPROM" identifikatorunu bir sıra kimi istifadə etməyə imkan verir.

Kitabxananı eskizdə istifadə etmək üçün #include EEPROM.h təlimatına əlavə edirik.

Addım 3

EEPROM-a iki tam ədədi yazaq, sonra EEPROM-dan oxuyub seriya portuna çıxarıraq.

0-dan 255-ə qədər rəqəmlərlə heç bir problem yoxdur, yalnız 1 bayt yaddaş tutur və EEPROM.write () funksiyasından istifadə edərək istədiyiniz yerə yazılır.

Sayı 255-dən çoxdursa, highByte () və lowByte () operatorlarından istifadə edərək baytlara bölünməli və hər bayt öz xanasına yazılmalıdır. Bu vəziyyətdə maksimum rəqəm 65536 (və ya 2 ^ 16) -dır.

Baxın, 0 hüceyrəsindəki serial port monitoru sadəcə 255-dən az bir rəqəm göstərir. 1 və 2-ci hücrələrdə çox sayda 789 saxlanılır. Bu vəziyyətdə, 1 hücrə daşma faktorunu 3, 2 hücrə isə çatışmayan 21 nömrəni saxlayır. (yəni 789 = 3 * 256 + 21). Bayta ayrılmış çox sayda yenidən toplanmaq üçün () funksiyası var: int val = word (hi, low), burada hi və low yüksək və aşağı baytın dəyərləridir.

Heç vaxt yazmadığımız bütün digər hücrələrdə 255 rəqəmləri saxlanılır.

EEPROM Arduinoya tam ədədlərin yazılması
EEPROM Arduinoya tam ədədlərin yazılması

Addım 4

Üzən nöqtə nömrələrini və sətirləri yazmaq üçün EEPROM.put () metodunu, oxumaq üçün isə EEPROM.get () istifadə edin.

Setup () prosedurunda əvvəlcə üzən nöqtə f yazırıq. Sonra float tipinin tutduğu yaddaş hüceyrələrinin sayına görə hərəkət edirik və 20 hüceyrə tutumu olan bir char simli yazırıq.

Loop () prosedurunda bütün yaddaş hüceyrələrini oxuyacağıq və əvvəlcə "float" tipi, daha sonra "char" növü kimi şifrəsini açmağa çalışacağıq və nəticəni serial porta çıxardırıq.

0-dan 3-ə qədər olan hüceyrələrdə dəyərin üzən nöqtə sayı, dördüncüdən başlayaraq simli kimi düzgün müəyyənləşdirildiyini görə bilərsiniz.

Nəticədə ovf (daşma) və nan (rəqəm deyil) dəyərləri rəqəmin üzən nöqtə sayına düzgün çevrilə bilməyəcəyini göstərir. Yaddaş hüceyrələrinin hansı məlumat tipini tutduğunu dəqiq bilirsinizsə, probleminiz olmayacaqdır.

EEPROM Arduinoya üzən nöqtə nömrələri və sətirlərin yazılması
EEPROM Arduinoya üzən nöqtə nömrələri və sətirlərin yazılması

Addım 5

Çox rahat bir xüsusiyyət, yaddaş hüceyrələrini bir EEPROM massivinin elementləri kimi göstərməkdir. Bu eskizdə setup () prosedurunda əvvəlcə məlumatları ilk 4 bayta yazacağıq və loop () prosedurunda hər dəqiqə bütün hüceyrələrdən məlumatları oxuyub serial portuna çıxardacağıq.

Tövsiyə: