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.
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.
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.
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.