Les plaques Arduino tenen diversos tipus de memòria. En primer lloc, és la memòria RAM estàtica (memòria d'accés aleatori), que s'utilitza per emmagatzemar variables durant l'execució del programa. En segon lloc, és la memòria flash que emmagatzema els esbossos que heu escrit. I, en tercer lloc, és una EEPROM que es pot utilitzar per emmagatzemar informació permanentment. El primer tipus de memòria és volàtil, perd tota la informació després de reiniciar l'Arduino. Els dos segons tipus de memòria emmagatzemen informació fins que se sobreescriu amb una de nova, fins i tot després d’apagar l’alimentació. L'últim tipus de memòria (EEPROM) permet escriure, emmagatzemar i llegir les dades segons sigui necessari. Considerarem aquesta memòria ara.
Necessari
- - Arduino;
- - ordinador.
Instruccions
Pas 1
EEPROM significa Memòria de només lectura programable esborrable elèctricament, és a dir, memòria de només lectura esborrable elèctricament. Les dades d’aquesta memòria es poden emmagatzemar durant desenes d’anys després d’apagar l’alimentació. El nombre de cicles de reescriptura és de l’ordre de diversos milions de vegades.
La quantitat de memòria EEPROM a Arduino és bastant limitada: per a les plaques basades en el microcontrolador ATmega328 (per exemple, Arduino UNO i Nano), la quantitat de memòria és d’1 KB, per a les plaques ATmega168 i ATmega8 - 512 bytes, per a ATmega2560 i ATmega1280 - 4 KB.
Pas 2
Per treballar amb l'EEPROM per a Arduino, s'ha escrit una biblioteca especial que s'inclou per defecte a l'IDE d'Arduino. La biblioteca conté les funcions següents.
llegir (adreça): llegeix 1 byte d'EEPROM; adreça: l'adreça des de la qual es llegeixen les dades (cel·la a partir de 0);
escriure (adreça, valor): escriu el valor del valor (1 byte, número de 0 a 255) a la memòria a l'adreça de l'adreça;
actualització (adreça, valor): substitueix el valor de l'adreça si el seu contingut antic difereix del nou;
get (adreça, dades): llegeix les dades del tipus especificat des de la memòria a l'adreça;
put (adreça, dades): escriu dades del tipus especificat a la memòria a l'adreça;
EEPROM [adreça]: us permet utilitzar l'identificador "EEPROM" com a matriu per escriure dades i llegir-les des de la memòria.
Per utilitzar la biblioteca a l’esbós, l’incloem amb la directiva #include EEPROM.h.
Pas 3
Escrivim dos enters a la EEPROM i, a continuació, llegim-los des de la EEPROM i els deixem al port sèrie.
No hi ha problemes amb els números del 0 al 255, ocupen només 1 byte de memòria i s’escriuen a la ubicació desitjada mitjançant la funció EEPROM.write ().
Si el nombre és superior a 255, mitjançant els operadors highByte () i lowByte () s’ha de dividir per bytes i cada byte s’ha d’escriure a la seva pròpia cel·la. El nombre màxim en aquest cas és 65536 (o 2 ^ 16).
Mireu, el monitor de port sèrie de la cel·la 0 simplement mostra un nombre inferior a 255. A les cel·les 1 i 2 s’emmagatzema un gran nombre 789. En aquest cas, la cel·la 1 emmagatzema el factor de desbordament 3 i la cel·la 2 emmagatzema el número 21 que falta (és a dir, 789 = 3 * 256 + 21). Per tornar a muntar un gran nombre, analitzat en bytes, hi ha la funció word (): int val = word (hi, low), on hi i low són els valors dels bytes alt i baix.
A la resta de cel·les que mai no hem escrit, s’emmagatzemen els números 255.
Pas 4
Per escriure números i cadenes de punt flotant, utilitzeu el mètode EEPROM.put () i, per llegir, utilitzeu EEPROM.get ().
En el procediment setup (), primer escrivim el número de coma flotant f. A continuació, ens movem pel nombre de cel·les de memòria que ocupa el tipus float i escrivim una cadena de caràcters amb una capacitat de 20 cel·les.
En el procediment loop () llegirem totes les cel·les de memòria i intentarem desxifrar-les primer com a tipus "float" i després com a "char" i enviarem el resultat al port sèrie.
Podeu veure que el valor de les cel·les 0 a 3 es va definir correctament com a número de coma flotant i a partir del quart, com una cadena.
Els valors resultants ovf (desbordament) i nan (no un número) indiquen que el número no es pot convertir correctament en un número de coma flotant. Si sabeu exactament quin tipus de dades ocupen les cel·les de memòria, no tindreu cap problema.
Pas 5
Una característica molt convenient és referir-se a les cel·les de memòria com a elements d’una matriu EEPROM. En aquest esbós, en el procediment setup (), primer escriurem les dades als primers 4 bytes i, en el procediment loop (), cada minut llegirem les dades de totes les cel·les i les enviarem al port sèrie.