Bom dia, como utilizo a biblioteca EEPROM para gravar os valores das variáveis sendo que quando eu der um reset no arduino ele volte com os valores gravados na EEPROM?

Exibições: 1367

Responder esta

Respostas a este tópico

Cara sou iniciante por aqui...mas eu faria da seguinte forma:

1- no LOOP de sua rotina principal eu acrescentaria uma rotina de salvamento que ficaria continuamente gravando na EEprom como ultima tarefa de seu LOOP...

2- no SETUP  faria uma rotina de restaurasse todas as variaveis salvas na EEprom antes de ir ao LOOP...e ja era!!!

abracao

Meu amigo, vi que essa operacao de escrita na EEPROM eh limitada:

"The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it."

assim nao vai poder deixar ficar escrevendo cada ciclo do LOOP que vai danificar a EEPROM!!! teria que ser uma maneira que escrevesse apenas uma vez por reset!!!

eu tenho uma ideia mas valeria apenas para DESLIGAR/LIGAR, mas nao serviria ao apertar o botao reset, que descrevo abaixo:

1- fazer um comparador de tensao que detect a queda de tensao mas antes do total desligamento(por exemplo se a linha de 5,00V cair a menos que 4,85V) acionando uma Interrupcao que trataria de salvar tudo rapidinho enquanto ainda esta operacional

2- ao ligar fariamos a leitura da EEPROM restabelecendo as variaveis, no SETUP

abs

Anderson, pesquise aqui no forum tem um tutorial muito completo sobre a EEPROM do arduino, vc conseguirá o que quer lá.

Eduardo, vc está correto na sua opção 1 do exemplo anterior. Eu testei, mas ainda no meu caso não ficou confiável, algumas vezes ele salva valores "loucos" na eeprom, mas muitas vezes deu certo, ainda preciso melhorar. Uma dica por cima da sua ideia seria utilizar um capacitor, para depois da interrupção ainda ter energia, para salvar as variáveis.

Abç

Consegui esse código: 

Código:
int variavel; 

EEPROM.write(1, variavel); 


variavel = EEPROM.read(1);




usei ele para salvar meu status da web testei uma vezes e funcionou Ok , porem 99% das vezes eu preciso resetar o arduino pra poder ao menos carregar a pagina. nisso perde o valor da eeprom. 

o que eu posso fazer?

Cara ai tem gato!!!

teste suas rotinas salvando primeiro alguns numeros (deixo seus status de web de lado a principio)e ao regressar veja se os mesmos numeros estao identicos

comprovando que a operacao de escreita e leitura estao ok"s...

depois que comprovar que sim pode ser as variaveis utilizadas...talves antes de salvar e depois de recuperar voce tenha que converter seus dados em BCD por exemplo...

Uma coisa eh certa ...na EEPROM uma vez gravada nao se perde os dados...assim ou a escrita ou a leitura ou ambos estao com problema, assim tente encontrar testando de uma forma mais simples primeiramete passo a passo...

abraco e boa sorte, nos mantenha informados do que esta rolando e ....coragem!!!rsrsrsr

outra coisa :

com a biblioteca EEPROM apenas se pode salvar bytes...por exemplo se vc tem variaveis Double, Long , float

esquece: nao vai gravar e ler corrretamente ....para isso utilize a biblioteca EEPROMex  porque ai pode gravar qualquer coisa e ler qualquer coisa pois essa biblioteca tranforma sua variavel byte a byte nao importa o tamanho dela e escreve/le corretamente na EEPROM. nao tenho mas o link de download mas seria so procurar na net

EEPROMex   library arduino e ja era!!!

Olá Eduardo,

Salvei a pasta da biblioteca EEPROMex na pasta libraries do Arduino versão 022 e testei com os exemplos que vieram junto e surgiram mensagens de erro ao compilar.

É necessário mais algum procedimento para que a compilação ocorra perfeitamente?

Agradeço pela ajuda.

Olá, já que você tem que resetar o arduino eu te aconselho fazer isso da seguinte forma:

Utilize um botão (sem ser o de reset do arduino) que quando apertado salva os dados na eeprom e em seguida coloque um delay(200); para ter certeza que houve tempo suficiente para gravar os dados e em seguida chame o comando asm volatile ("  jmp 0");  que vai resetar seu arduino por meio de software.

Assim você não fica salvando os dados na eeprom infinitamente e seu sistema ficará mais rápido.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço