Taula de continguts:

EEPROM incorporada del vostre Arduino: 6 passos
EEPROM incorporada del vostre Arduino: 6 passos

Vídeo: EEPROM incorporada del vostre Arduino: 6 passos

Vídeo: EEPROM incorporada del vostre Arduino: 6 passos
Vídeo: Arduino UNO - Write/Read EEPROM 24LC256 2024, Desembre
Anonim
EEPROM incorporada del vostre Arduino
EEPROM incorporada del vostre Arduino

En aquest article examinarem la EEPROM interna a les nostres plaques Arduino. Què és una EEPROM que alguns de vosaltres diuen? Una EEPROM és una memòria de només lectura programable esborrable elèctricament.

És una forma de memòria no volàtil que pot recordar coses amb l’apagada de l’alimentació o després de restablir l’Arduino. La bellesa d’aquest tipus de memòria és que podem emmagatzemar les dades generades dins d’un esbós de manera més permanent.

Per què utilitzaríeu l'EEPROM interna? Per a situacions en què les dades exclusives d’una situació necessiten una llar més permanent. Per exemple, emmagatzemar el número de sèrie únic i la data de fabricació d’un projecte comercial basat en Arduino: una funció de l’esbós podria mostrar el número de sèrie en una pantalla LCD o es podrien llegir les dades carregant un “esbós de servei”. O és possible que hàgiu de comptar certs esdeveniments i no permetre que l'usuari els restableixi, com ara un comptaquilòmetres o un comptador de cicles d'operació.

Pas 1: quin tipus de dades es poden emmagatzemar?

Quin tipus de dades es poden emmagatzemar?
Quin tipus de dades es poden emmagatzemar?

Qualsevol cosa que es pugui representar com a bytes de dades. Un byte de dades està format per vuit bits de dades. Un bit pot estar activat (valor 1) o apagat (valor 0) i és perfecte per representar números en forma binària. En altres paraules, un nombre binari només pot utilitzar zeros i uns per representar un valor. Per tant, el binari també es coneix com a "base-2", ja que només pot utilitzar dos dígits.

Com pot un nombre binari només amb dos dígits representar un nombre més gran? Utilitza molts uns i zeros. Examinem un número binari, per exemple, 10101010. Com que es tracta d’un número base-2, cada dígit representa 2 a la potència de x, a partir de x = 0 en endavant.

Pas 2:

Imatge
Imatge

Vegeu com cada dígit del número binari pot representar un número base-10. Per tant, el nombre binari anterior representa 85 en base-10: el valor 85 és la suma dels valors de base-10. Un altre exemple: 11111111 en binari és igual a 255 a la base 10.

Pas 3:

Ara cada dígit d’aquest número binari utilitza un ‘bit’ de memòria i vuit bits formen un byte. A causa de les limitacions internes dels microcontroladors a les nostres plaques Arduino, només podem emmagatzemar números de 8 bits (un byte) a la EEPROM.

Això limita el valor decimal del nombre entre 0 i 255. Aleshores, heu de decidir com es poden representar les vostres dades amb aquest interval de números. No deixeu que això us enganyi; els números disposats de la manera correcta poden representar gairebé qualsevol cosa. Hi ha una limitació a tenir en compte: el nombre de vegades que podem llegir o escriure a l’EEPROM. Segons el fabricant Atmel, l'EEPROM és bona per a 100.000 cicles de lectura / escriptura (vegeu el full de dades).

Pas 4:

Ara sabem els nostres bits i bytes, quants bytes es poden emmagatzemar al microcontrolador del nostre Arduino? La resposta varia en funció del model de microcontrolador. Per exemple:

  • Taulers amb un ATmel ATmega328, com ara Arduino Uno, Uno SMD, Nano, Lilypad, etc. - 1024 bytes (1 kilobyte)
  • Taulers amb un ATmel ATmega1280 o 2560, com ara la sèrie Arduino Mega - 4096 bytes (4 kilobytes)
  • Taulers amb un Atmel ATmega168, com ara l’Arduino Lilypad original, Nano antic, Diecimila, etc. - 512 bytes.

Si no esteu segur, consulteu l'índex de maquinari Arduino o pregunteu al proveïdor del tauler. Si necessiteu més emmagatzematge EEPROM que el que hi ha disponible amb el vostre microcontrolador, considereu utilitzar una EEPROM I2C externa.

En aquest moment, ja entenem quin tipus de dades i quant es poden emmagatzemar a la EEPROM del nostre Arduino. Ara és hora de posar-ho en pràctica. Com s'ha comentat anteriorment, hi ha una quantitat finita d'espai per a les nostres dades. En els exemples següents, utilitzarem una placa Arduino típica amb l'ATmega328 amb 1024 bytes d'emmagatzematge EEPROM.

Pas 5:

Per utilitzar l'EEPROM, cal una biblioteca, així que utilitzeu la següent biblioteca als vostres esbossos:

#include "EEPROM.h"

La resta és molt senzill. Per emmagatzemar una dada, fem servir la funció següent:

EEPROM.write (a, b);

El paràmetre a és la posició a l'EEPROM per emmagatzemar l'enter (0 ~ 255) de les dades b. En aquest exemple, tenim 1024 bytes d'emmagatzematge de memòria, de manera que el valor de a està entre 0 i 1023. Per recuperar una peça de dades és igual de simple, utilitzeu:

z = EEPROM.read (a);

On z és un enter per emmagatzemar les dades de la posició EEPROM a. Ara a veure un exemple.

Pas 6:

Imatge
Imatge

Aquest esbós crearà números aleatoris entre 0 i 255, els emmagatzemarà a l'EEPROM i els recuperarà i els mostrarà al monitor sèrie. La variable EEsize és el límit superior de la mida de la vostra EEPROM, de manera que (per exemple) seria 1024 per a un Arduino Uno o 4096 per a un Mega.

// Demostració EEPROM interna Arduino

#incloure

int zz; int EEsize = 1024; // mida en bytes de la EEPROM del vostre tauler

configuració nul·la ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Escriptura de números aleatoris …"); for (int i = 0; i <EEsize; i ++) {zz = random (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("Posició EEPROM:"); Serial.print (a); Serial.print ("conté"); Serial.println (zz); retard (25); }}

Apareixerà la sortida del monitor sèrie, tal com es mostra a la imatge.

Així ho teniu, una altra manera útil d’emmagatzemar dades amb els nostres sistemes Arduino. Tot i que no és el tutorial més emocionant, sens dubte és útil.

Aquest article us el proporciona pmdway.com: tot per a fabricants i aficionats a l'electrònica, amb lliurament gratuït a tot el món.

Recomanat: