Hogyan Tároljuk Az Adatokat Az Arduino Alkalmazásban

Tartalomjegyzék:

Hogyan Tároljuk Az Adatokat Az Arduino Alkalmazásban
Hogyan Tároljuk Az Adatokat Az Arduino Alkalmazásban

Videó: Hogyan Tároljuk Az Adatokat Az Arduino Alkalmazásban

Videó: Hogyan Tároljuk Az Adatokat Az Arduino Alkalmazásban
Videó: #49 - Az Arduino MKR1000 2024, Lehet
Anonim

Az Arduino tábláknak többféle memóriája van. Először is, ez egy statikus RAM (véletlen hozzáférésű memória), amelyet a változók tárolására használnak a program végrehajtása során. Másodszor, a flash memória tárolja az Ön által készített vázlatokat. Harmadszor, ez egy EEPROM, amely felhasználható az információk tartós tárolására. Az első típusú memória ingatag, minden információt elveszít az Arduino újraindítása után. A második két típusú memória addig tárolja az információkat, amíg azokat felülírják egy úttal, még az áram kikapcsolása után sem. Az utolsó típusú memória - az EEPROM - lehetővé teszi az adatok szükség szerinti írását, tárolását és olvasását. Most figyelembe vesszük ezt az emléket.

Adatok tárolása az EEPROM Arduino alkalmazásban
Adatok tárolása az EEPROM Arduino alkalmazásban

Szükséges

  • - Arduino;
  • - számítógép.

Utasítás

1. lépés

Az EEPROM jelentése elektromosan törölhető, programozható, csak olvasható memória, azaz elektromosan törölhető, csak olvasható memória. Az ebben a memóriában lévő adatok a készülék kikapcsolása után több tíz évig tárolhatók. Az újraírási ciklusok száma több milliószoros nagyságrendű.

Az Arduino-ban az EEPROM memória mennyisége meglehetősen korlátozott: az ATmega328 mikrovezérlőn alapuló táblák esetében (például Arduino UNO és Nano) a memória mennyisége 1 KB, az ATmega168 és ATmega8 alaplapok esetében - 512 bájt, az ATmega2560 és az ATmega1280 esetében - 4 KB.

2. lépés

Az EEPROM for Arduino használatához egy speciális könyvtárat írtak, amelyet alapértelmezés szerint az Arduino IDE tartalmaz. A könyvtár a következő szolgáltatásokat tartalmazza.

olvas (cím) - 1 bájtot olvas az EEPROM-ból; cím - az a cím, ahonnan az adatokat beolvassák (cella 0-tól kezdődően);

ír (cím, érték) - az érték értékét (1 bájt, szám 0-tól 255-ig) beírja a cím címû memóriába;

frissítés (cím, érték) - kicseréli a cím értékét, ha a régi tartalma eltér az újatól;

lekérés (cím, adat) - a megadott típusú adatokat beolvassa a cím memóriájából;

put (cím, adat) - a megadott típusú adatokat a memóriába írja a címre;

EEPROM [cím] - lehetővé teszi az "EEPROM" azonosító használatát tömbként az adatok írására és a memóriából történő olvasásra.

A könyvtár használatához a vázlatban fel kell tüntetnünk az #include EEPROM.h direktívát.

3. lépés

Írjunk két egész számot az EEPROM-ba, majd olvassuk le őket az EEPROM-ból, és adjuk ki a soros portra.

A 0 és 255 közötti számokkal nincs probléma, csupán 1 bájt memóriát foglalnak el, és az EEPROM.write () függvény segítségével a kívánt helyre íródnak.

Ha a szám nagyobb, mint 255, akkor a highByte () és az lowByte () operátorok segítségével bájtokkal kell felosztani, és mindegyik bájtot a saját cellájába kell írni. A maximális szám ebben az esetben 65536 (vagy 2 ^ 16).

Nézze, a soros portmonitor a 0. cellában egyszerűen 255-nél kisebb számot jelenít meg. Az 1. és 2. cellában nagy számot tárolunk 789. Ebben az esetben az 1. cella tárolja a 3 túlcsordulási tényezőt, a 2. cella pedig a hiányzó 21-es számot (azaz 789 = 3 * 256 + 21). Nagyszámú bájtokba bontott szám összegyűjtéséhez létezik a () függvény szó: int val = szó (hi, low), ahol hi és low a magas és az alacsony bájt értékei.

Minden más cellában, amelyet még soha nem írtunk le, a 255 számot tároljuk.

Egész számok írása az EEPROM Arduino alkalmazásba
Egész számok írása az EEPROM Arduino alkalmazásba

4. lépés

Lebegőpontos számok és karakterláncok írásához használja az EEPROM.put () metódust, az olvasáshoz pedig az EEPROM.get () metódust.

A setup () eljárásban először felírjuk az f lebegőpontos számot. Ezután haladunk az úszó típus által elfoglalt memória cellák számával, és írunk egy 20 cellás kapacitású karakterláncot.

A ciklus () eljárás során az összes memóriacellát kiolvassuk, és megpróbáljuk őket először "lebegő", majd "char" típusúként visszafejteni, és az eredményt a soros portra továbbítani.

Láthatja, hogy a 0–3 cellákban szereplő értéket helyesen definiálták lebegőpontos számként, és a 4-től kezdődően - karakterláncként.

Az így kapott ovf (túlcsordulás) és nan (nem szám) értékek azt jelzik, hogy a számot nem lehet helyesen lebegőponttá alakítani. Ha pontosan tudja, hogy milyen típusú adatokat foglalnak el a memória cellák, akkor nem lesz semmi problémája.

Lebegőpontos számok és karakterláncok írása az EEPROM Arduino számára
Lebegőpontos számok és karakterláncok írása az EEPROM Arduino számára

5. lépés

Nagyon kényelmes funkció az, hogy a memória cellákat EEPROM tömb elemeként említjük. Ebben a vázlatban a setup () eljárásban először az adatokat az első 4 bájtba írjuk, a loop () eljárásba pedig minden percben beolvassuk az összes cellából származó adatokat és kimenjük a soros portba.

Ajánlott: