In acest articol vom vedea cum putem folosi memoriile de tip EEPROM 24Cxx pentru a stoca diferiti parametri.
Aceasta memorie se gaseste sub forma de modul, costa 8 lei si poate fi cumparat de aici.
Poza cu acest modul este urmatoarea:

La inceput va trebui sa descarcam libraria AT24Cxx de aici. Dupa descarcarea acestei vom proceda la instalarea ei astfel: accesam meniul Schita > Incarcare biblioteca > Adauga biblioteca.zip.
Memoria EEPROM se conecteaza la Arduino foarte simplu folosind magistrala I2C.
In primul sketch vom incerca sa detectam capacitatea memoriei EEPROM. Pentru acest lucru vom folosi urmatorul sketch:
#include <AT24Cxx.h> //includem libraria externa
#define i2c_address 0x50 //definim adresa I2C a memoriei folosite
AT24Cxx eep(i2c_address, 32); //creem metoda de apelare a functiilor din libraria externa
void setup() {
Serial.begin(9600); //initializam terminalul serial
}
void loop() {
Serial.print("Marimea memoriei EEPROM : ");
Serial.print(eep.length()); //metoda eep.lenght() ne va returna capacitatea de stocare detectata a memoriei in KB
Serial.println(" KB");
delay(5000);
}
In urmatorul sketch vom sterge memoria EEPROM de eventualele date stocate:
#include <AT24Cxx.h>
#define i2c_address 0x50
AT24Cxx eep(i2c_address, 32);
void setup() {
Serial.begin(9600);
Serial.println("Incepere stergere memorie EEPROM.Atentie, in functie de capacitatea memoriei timpul poate fi destul de lung.");
for (int i = 0 ; i < eep.length() ; i++)
{
eep.update(i, 0x00); //actualizam adresa de memorie cu o valoare nula > 00
if ((i % 512) == 0)
{
Serial.print(i);
Serial.println(" Adrese Sterse");
}
}
Serial.println("Memoria EEPROM a fost stearsa cu success!");
}
void loop() {
}
In urmatorul sketch vom incerca sa scriem ceva date in memoria pregatita. Pentru acest lucru vom folosi acest sketch:
#include <AT24Cxx.h>
#define i2c_address 0x50
int address = 0;
AT24Cxx eep(i2c_address, 32);
void setup() {
Serial.begin(9600);
}
void loop() {
int val = 0;
int address = 0;
Serial.println("Incepere stocare informatii in memoria EEPROM");
for (address=0;address<100;address++) { //rulam o bucla for de 100 de ori pentru a scrie primele 100 de adrese din memorie
val = random(0, 99); //generam o valoare numerica random intre 0 si 99 pentru a o stoca
eep.write(address, val); //metoda folosita pentru a scrie date in memoria EEPROM
Serial.print("Scriere in adresa: ");
Serial.print(address);
Serial.print(" valoarea: ");
Serial.println(val);
delay(100);
}
if (address == 100) {
Serial.println("Stocare in EEPROM efectuata cu success!");
delay(500);
exit(0); // cand ajungem la adersa cu valoarea 100 incheiem executia programului
}
}
Acum va trebui sa citim informatiile stocate in memoria EEPROM. Pentru a face acest lucru vom folosi urmatorul sketch:
#include <AT24Cxx.h>
#define i2c_address 0x50
byte value;
AT24Cxx eep(i2c_address, 32);
void setup() {
Serial.begin(9600);
Serial.println("Incepem citirea memoriei EEPROM...");
delay(500);
}
void loop() {
int address = 0;
for (address=0;address<100;address++) {
value = eep.read(address); //citim valoarea de la adresa setata initial.
Serial.print("Adresa: ");
Serial.print(address);
Serial.print(" are stocata valoarea: ");
Serial.print(value, DEC);
Serial.println();
delay(100);
}
if (address == 100) {
Serial.println("Am terminat de citit continutul memoriei EEPROM.");
delay(500);
exit(0); // cand ajungem la adersa cu valoarea 100 incheiem executia programului
}
}