Jak Ukládat Data V Arduinu

Obsah:

Jak Ukládat Data V Arduinu
Jak Ukládat Data V Arduinu

Video: Jak Ukládat Data V Arduinu

Video: Jak Ukládat Data V Arduinu
Video: Storing Data on an Arduino 2024, Listopad
Anonim

Desky Arduino mají několik typů paměti. Nejprve je to statická RAM (paměť s náhodným přístupem), která se používá k ukládání proměnných během provádění programu. Za druhé, je to flash paměť, která ukládá náčrtky, které jste napsali. A za třetí, je to EEPROM, kterou lze použít k trvalému ukládání informací. První typ paměti je nestálý, po restartu Arduina ztrácí všechny informace. Druhé dva typy paměti ukládají informace, dokud nejsou přepsány novým, a to i po vypnutí napájení. Poslední typ paměti - EEPROM - umožňuje podle potřeby zapisovat, ukládat a číst data. Tuto paměť nyní zvážíme.

Ukládání dat do EEPROM Arduino
Ukládání dat do EEPROM Arduino

Nezbytné

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

Instrukce

Krok 1

EEPROM je zkratka pro elektricky mazatelnou programovatelnou paměť pouze pro čtení, tj. elektricky vymazatelná paměť pouze pro čtení. Data v této paměti lze uložit po dobu desítek let po vypnutí napájení. Počet přepisovacích cyklů je řádově několik milionůkrát.

Množství paměti EEPROM v Arduinu je poměrně omezené: pro desky založené na mikrokontroléru ATmega328 (například Arduino UNO a Nano) je velikost paměti 1 kB, pro desky ATmega168 a ATmega8 - 512 bajtů, pro ATmega2560 a ATmega1280 - 4 kB.

Krok 2

Pro práci s EEPROM pro Arduino byla napsána speciální knihovna, která je standardně obsažena v Arduino IDE. Knihovna obsahuje následující funkce.

read (address) - čte 1 bajt z EEPROM; adresa - adresa, ze které jsou data čtena (buňka začínající od 0);

write (address, value) - zapíše hodnotu hodnoty (1 bajt, číslo od 0 do 255) do paměti na adresu adresy;

aktualizovat (adresa, hodnota) - nahradí hodnotu na adrese, pokud se její starý obsah liší od nového;

get (adresa, data) - načte data zadaného typu z paměti na adresu;

put (adresa, data) - zapíše data zadaného typu do paměti na adresu;

EEPROM [adresa] - umožňuje použít identifikátor „EEPROM“jako pole pro zápis dat do paměti a čtení z paměti.

Chcete-li použít knihovnu v náčrtu, zahrneme ji do direktivy #include EEPROM.h.

Krok 3

Napišme dvě celá čísla do EEPROM a pak je přečtěte z EEPROM a odešlete je na sériový port.

S čísly od 0 do 255 nejsou žádné problémy, zabírají pouze 1 bajt paměti a zapisují se na požadované místo pomocí funkce EEPROM.write ().

Pokud je číslo větší než 255, musí být pomocí operátorů highByte () a lowByte () rozděleno bajty a každý bajt musí být zapsán do vlastní buňky. Maximální počet je v tomto případě 65536 (nebo 2 ^ 16).

Podívejte se, monitor sériového portu v buňce 0 jednoduše zobrazuje číslo menší než 255. V buňkách 1 a 2 je uloženo velké číslo 789. V tomto případě buňka 1 ukládá faktor přetečení 3 a buňka 2 ukládá chybějící číslo 21 (tj. 789 = 3 * 256 + 21). Chcete-li znovu sestavit velké číslo rozložené na bajty, existuje funkce word (): int val = word (hi, low), kde hi a low jsou hodnoty vysokých a nízkých bajtů.

Ve všech ostatních buňkách, které jsme nikdy nezapsali, jsou uložena čísla 255.

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

Krok 4

Chcete-li psát čísla a řetězce s plovoucí desetinnou čárkou, použijte metodu EEPROM.put () a ke čtení použijte EEPROM.get ().

V proceduře setup () nejprve napíšeme číslo s plovoucí desetinnou čárkou f. Poté se přesuneme o počet paměťových buněk, které floatový typ zabírá, a zapíšeme char řetězec s kapacitou 20 buněk.

V proceduře loop () načteme všechny paměťové buňky a pokusíme se je dešifrovat nejprve jako „float“a poté jako „char“a výsledek vygenerovat na sériový port.

Vidíte, že hodnota v buňkách 0 až 3 byla správně definována jako číslo s plovoucí desetinnou čárkou a počínaje 4. - jako řetězec.

Výsledné hodnoty ovf (přetečení) a nan (ne číslo) naznačují, že číslo nelze správně převést na číslo s plovoucí desetinnou čárkou. Pokud přesně víte, jaký typ dat zabírají paměťové buňky, nebudete mít žádné problémy.

Zápis čísel a řetězců s plovoucí desetinnou čárkou do EEPROM Arduino
Zápis čísel a řetězců s plovoucí desetinnou čárkou do EEPROM Arduino

Krok 5

Velmi pohodlnou funkcí je odkazovat na paměťové buňky jako na prvky pole EEPROM. V tomto náčrtu v proceduře setup () nejprve zapíšeme data do prvních 4 bajtů a v proceduře loop () každou minutu načteme data ze všech buněk a odešleme je na sériový port.

Doporučuje: