Site icon AranaCorp

Usar a EEPROM com o Arduino

0
(0)

A EEPROM é uma memória interna do microcontrolador que permite manter os dados registrados mesmo depois de reiniciar a placa. Quando trabalhamos com microcontroladores, é interessante manter os dados na memória, especialmente quando a placa desliga por vontade nossa ou não, como no caso de uma queda de energia.

Material

Princípio de funcionamento

A EEPROM é um local de memória especial do microcontrolador. É um conjunto de registros onde são armazenados dados que permanecem guardados mesmo depois de a placa ser desligada É uma memória somente de leitura (ou ROM, do inglês Read-Only Memory), em oposição às memórias de acesso aleatório (ou RAM, de Random-Access Memory), que se apagam a cada ciclo de ligar e desligar. O tamanho da memória varia em função do microprocessador do cartão.

Limitação da EEPROM

Uma coisa importante a notar é que a EEPROM tem tamanho e vida útil limitados. As células de memória podem ser lidas tantas vezes quanto necessário, mas o número de ciclos de gravação é limitado a 100.000. É aconselhável prestar atenção ao tamanho dos dados armazenados e à frequência com que se pretende atualizá-los. Se quiser armazenar os dados de um conjunto de sensores para traçar gráficos em tempo real, é melhor optar por um módulo de cartão SD.

Código

Para interagir com a EEPROM, utilizamos a biblioteca EEPROM.h que permite escrever e ler dados na memória. Para isso, utilizaremos duas funções:

Outras funções da biblioteca podem ser úteis conforme a sua utilização da EEPROM.

//Libraries
#include <EEPROM.h>//https://www.arduino.cc/en/Reference/EEPROM

void setup(){
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize System"));
//Write data into eeprom
  int address = 0;
  int boardId = 18; 
  EEPROM.put(address, boardId);
  address += sizeof(boardId); //update address value

  float param = 26.5;
  EEPROM.put(address, param); 
  
  //Read data from eeprom
  address = 0;
  int readId;
  EEPROM.get(address, readId);
  Serial.print("Read Id = ");
  Serial.println(readId);
  address += sizeof(readId); //update address value
  
  float readParam;
  EEPROM.get(address, readParam);
  Serial.print("Read param = ");
  Serial.println(readParam);
  

 }

void loop(){}

Resultado

Os valores lidos correspondem perfeitamente aos valores salvos. Experimente remover a parte de escrita e executar o código novamente para verificar que os valores estão guardados na memória.

Aplicações

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Exit mobile version