EEPROM înseamnă o memorie programabilă numai pentru citire, care poate fi șters, de ex. memorie reprogramabilă separată numai pentru citire. Datele din această memorie pot fi stocate timp de decenii după ce alimentarea este oprită. Numărul ciclurilor de rescriere este de ordinul a câtorva milioane de ori.
Numărul Arduino în memorie EEPROM este destul de limitat: pentru placi bazate pe un ATmega328 microcontroler (de exemplu, Arduino UNO și Nano), cantitatea de 1 kB de memorie, pentru placi de pe ATmega168 și ATmega8 - 512 bytes, iar pe ATmega2560 ATmega1280 - 4 kB.
Să punem două numere întregi în memoria EEPROM și apoi să le citim de pe EEPROM și să le scoatem la portul serial.
Cu numere de la 0 la 255 nu există probleme, ocupă doar 1 octet de memorie și folosind funcția EEPROM.write () sunt scrise în celula corectă.
Dacă numărul este mai mare de 255, apoi folosind operatorii highByte () și lowByte (), trebuie să îl împărțiți în octeți și să scrieți fiecare octet în celulă. Numărul maxim este de 65536 (sau 2 ^ 16).
A se vedea, celula monitor port serial ieșiri simplu 0 valoare mai mică de 255. Celulele 1 și 2 sunt stocate un număr mare de 789. In aceasta celula una stochează multiplicatoare de preaplin 3, iar celula 2 - lipsă numărul 21 (adică, 789 = 3 * 256 + 21). Pentru a reasambla un număr mare, analizat în octeți, este un cuvânt de funcționare (). int val = cuvânt (hi, low), unde hi și low sunt valorile octeților de înaltă și joasă.
În toate celelalte celule care nu au fost înregistrate de noi, numerele 255 sunt stocate.
Pentru a scrie numere în virgulă mobilă și șiruri de caractere, trebuie să utilizați metoda EEPROM.put (). și pentru citire - EEPROM.get ().
În rutina de configurare (), mai întâi scriem un număr de punct floating f. Apoi treceți la numărul de celule de memorie care ocupă tipul float și scrieți un șir de caractere char cu o capacitate de 20 de celule.
În rutina buclă (), citim toate locațiile de memorie și încercăm să le decodificăm mai întâi ca tip "float", apoi ca tip "char" și ieșim rezultatul în portul serial.
Se poate observa că valoarea din celulele de la 0 la 3 a fost corect definită ca număr de punct floating și începând cu a patra ca șir.
Valorile emergente ale ovf (overflow) și nan (nu este un număr) indică faptul că numărul nu poate fi corect convertit la un număr în virgulă mobilă. Dacă știți exact ce tip de date ocupă celulele de memorie, atunci nu veți avea probleme.
O opțiune foarte convenabilă este accesarea celulelor de memorie ca elemente ale unei matrice EEPROM. În această schiță, în rutina de configurare (), vom scrie mai întâi datele în primele 4 octeți, iar în rutina buclă (), vom citi datele din toate celulele în fiecare minut și le vom extrage în portul serial.