Ako Ukladať údaje V Arduine

Obsah:

Ako Ukladať údaje V Arduine
Ako Ukladať údaje V Arduine

Video: Ako Ukladať údaje V Arduine

Video: Ako Ukladať údaje V Arduine
Video: arduino подключение питания и виды сигналов урок №2. 2024, November
Anonim

Dosky Arduino majú niekoľko typov pamätí. Najskôr je to statická RAM (pamäť s náhodným prístupom), ktorá sa používa na ukladanie premenných počas vykonávania programu. Po druhé, je to flash pamäť, ktorá ukladá náčrty, ktoré ste napísali. A do tretice, ide o EEPROM, ktorú je možné použiť na trvalé ukladanie informácií. Prvý typ pamäte je nestály, po reštarte Arduina stráca všetky informácie. Druhé dva typy pamätí uchovávajú informácie, kým nebudú prepísané novými, a to aj po vypnutí napájania. Posledný typ pamäte - EEPROM - umožňuje podľa potreby zapisovať, ukladať a čítať údaje. Túto spomienku teraz zvážime.

Ukladanie údajov do EEPROM Arduino
Ukladanie údajov do EEPROM Arduino

Nevyhnutné

  • - Arduino;
  • - počítač.

Inštrukcie

Krok 1

EEPROM znamená elektricky mazateľná programovateľná pamäť iba na čítanie, t.j. elektricky vymazateľná pamäť iba na čítanie. Dáta v tejto pamäti je možné ukladať ešte desiatky rokov po vypnutí napájania. Počet prepisovacích cyklov je rádovo niekoľko miliónovkrát.

Množstvo pamäte EEPROM v Arduine je dosť obmedzené: pre dosky založené na mikrokontroléri ATmega328 (napríklad Arduino UNO a Nano) je veľkosť pamäte 1 kB, pre dosky ATmega168 a ATmega8 - 512 bajtov, pre ATmega2560 a ATmega1280 - 4 kB.

Krok 2

Pre prácu s EEPROM pre Arduino bola napísaná špeciálna knižnica, ktorá je štandardne zahrnutá v Arduino IDE. Knižnica obsahuje nasledujúce funkcie.

read (address) - načíta 1 bajt z EEPROM; adresa - adresa, z ktorej sa údaje načítajú (bunka začínajúca od 0);

write (adresa, hodnota) - zapíše hodnotu hodnoty (1 bajt, počet od 0 do 255) do pamäte na adresu adresy;

aktualizácia (adresa, hodnota) - nahradí hodnotu na adrese, ak sa jej starý obsah líši od nového;

get (adresa, dáta) - načíta dáta zadaného typu z pamäte na adresu;

put (adresa, údaje) - zapíše údaje zadaného typu do pamäte na adrese;

EEPROM [adresa] - umožňuje vám použiť identifikátor „EEPROM“ako pole na zápis dát do a na čítanie z pamäte.

Ak chcete knižnicu použiť v náčrte, zahrnieme ju do smernice #include EEPROM.h.

Krok 3

Poďme zapísať dve celé čísla do EEPROM a potom ich načítať z EEPROM a odoslať ich na sériový port.

S číslami od 0 do 255 nie sú problémy, zaberajú iba 1 bajt pamäte a zapisujú sa na požadované miesto pomocou funkcie EEPROM.write ().

Ak je číslo väčšie ako 255, musí sa pomocou operátorov highByte () a lowByte () vydeliť bajtmi a každý bajt sa musí zapísať do vlastnej bunky. Maximálny počet je v tomto prípade 65536 (alebo 2 ^ 16).

Pozrite sa, monitor sériového portu v bunke 0 jednoducho zobrazuje číslo menšie ako 255. V bunkách 1 a 2 je uložené veľké číslo 789. V takom prípade bunka 1 uchováva faktor pretečenia 3 a bunka 2 chýbajúce číslo 21 (tj. 789 = 3 * 256 + 21). Ak chcete znova zostaviť veľké množstvo, rozdelené na bajty, existuje funkcia word (): int val = slovo (hi, low), kde hi a low sú hodnoty vysokého a nízkeho bajtu.

Vo všetkých ostatných bunkách, ktoré sme si nikdy nezapísali, sú uložené čísla 255.

Zápis celých čísel na EEPROM Arduino
Zápis celých čísel na EEPROM Arduino

Krok 4

Na zápis čísel a reťazcov s pohyblivou rádovou čiarkou použite metódu EEPROM.put () a na čítanie použite EEPROM.get ().

V procedúre setup () najskôr napíšeme plávajúcu desatinnú čiarku číslo f. Potom sa presunieme o počet pamäťových buniek, ktoré floatový typ zaberá, a napíšeme char reťazec s kapacitou 20 buniek.

V procedúre loop () prečítame všetky pamäťové bunky a pokúsime sa ich dešifrovať najskôr ako „float“typu, a potom ako „char“typu a výsledok odošleme na sériový port.

Vidíte, že hodnota v bunkách 0 až 3 bola správne definovaná ako číslo s pohyblivou rádovou čiarkou a od 4. bodu - ako reťazec.

Výsledné hodnoty ovf (pretečenie) a nan (nie číslo) naznačujú, že číslo nemožno správne previesť na číslo s pohyblivou rádovou čiarkou. Ak presne viete, aký typ dát zaberajú pamäťové bunky, nebudete mať žiadne problémy.

Zápis čísel a reťazcov s pohyblivou rádovou čiarkou do EEPROM Arduino
Zápis čísel a reťazcov s pohyblivou rádovou čiarkou do EEPROM Arduino

Krok 5

Veľmi pohodlnou vlastnosťou je označiť pamäťové bunky ako prvky poľa EEPROM. V tomto náčrte v procedúre setup () najskôr zapíšeme údaje do prvých 4 bajtov a v procedúre loop () každú minútu prečítame údaje zo všetkých buniek a odošleme ich na sériový port.

Odporúča: