Skip to content

Lab04 - EEPROM

Memoria EEPROM

A memória EEPROM (Electrically Erasable Programmable Read-Only Memory) é uma memória não volátil, o que significa que os dados armazenados nela persistem mesmo depois de desligar o Arduino. É útil para armazenar pequenas quantidades de dados que precisam ser preservados entre reinicializações, como configurações ou contadores.

Warning

Essa memoria não é infinita, pelo contrario! a memoria EEPROM é bem pequena, no caso do Arduino UNO é de apenas 1KB (1000 Bytes) tenha isso em mente para não ultrapassar esse valor.

Desafio 1: Escrevendo e Lendo Dados na EEPROM

Neste desafio, vamos aprender a escrever e ler dados na memória EEPROM. Vamos escrever apenas 1 unico valor inteiro.

Monte um circuito com um botão no pino 2 e carregue o seguinte código no seu Arduino:

#include <EEPROM.h>

const int buttonPin = 2; // Pino do botão
int lastButtonState = HIGH;
int buttonState; 

unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;    

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT_PULLUP); 

  EEPROM.write(0, 123); // Escreve o valor 123 na posição 0 da EEPROM
  delay(10); // Pequeno delay para garantir a escrita na memoria
}

void loop() {
  int reading = digitalRead(buttonPin); // Lê o estado do botão
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;

      // Se o botão estiver pressionado (estado LOW devido ao pull-up)
      if (buttonState == LOW) {

        int valor = EEPROM.read(0); // Lê o valor na posição 0 da EEPROM
        Serial.println(valor); // Imprime o valor
      }
    }
  }

  lastButtonState = reading; // Atualiza o estado anterior do botão
}

Desafio 2: Armazenando e Recuperando Strings

Agora altere o código para escrever e ler Strings.

Altre o código do desafio 1 para:

- Salve na memoria EEPROM a frase: `Let's Rock the Future` 
- Recuperar o valor salvo na memoria quando apertar o botão.

Tip

  • Defina a frase como do tipo String. String frase = "sua frase aqui"
  • Conheça um pouco mais do objeto String lendo a documentação aqui
  • Para salvar na memoria EEPROM temos que rodar um laço for para salvar caractere por caractere. for (int i = 0; i < frase.length(); i++){}
  • Dentro do laço for, defina a posição inicial da memoria e salve cada indice do frase EEPROM.write(startPos + i, frase[i]);
  • Faça a mesma coisa para recuperar os dados.

Desafio 3: Exiba os resultados em um display LCD

Agora vamos exibir o valor da memoria EEPROM em um display LCD. Para isso, busque por referências na internet de como realizar a ligação e elaborar o circuito.

Tip

execute os codigo exemplo que encontrar na internet para verificar o funcionamento do circuito antes de escrever seu proprio código