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
- Computador
- Arduino UNO
- Cabo USB A Macho/B Macho
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:
- put() para escrever
- get() para ler
- Não a utilizaremos aqui, mas a função EEPROM.update() permite salvar um valor apenas se este for diferente, para economizar vida útil.
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
- Salvar na memória o endereço IP ou I2C de uma placa Arduino
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

