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

 

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.