Boa noite pessoal, 

estou enfrentando um problema com a biblioteca EEPROM.h, segue um trecho do código para que possam melhor visualizar.

void salvarEEPROM(){
addr=(nr*21)-21;
EEPROM.write(addr,n);
for(i=0;i<n;i++){
addr++;
auxrom=tempo[i];
EEPROM.write(addr,auxrom);
addr++;
auxrom=temperatura[i];
EEPROM.write(addr,auxrom);
}
}
void lerEEPROM(){
addr=(nr*21)-21;
n=EEPROM.read(addr);
for(i=0;i<n;i++){
addr++;
auxrom=EEPROM.read(addr);
tempo[i]=auxrom;
addr++;
auxrom=EEPROM.read(addr);
temperatura[i]=auxrom;


}
}

o que acontece é o seguinte, eu criei dois arrays (vetor, string, ou como chamarem) para armazenar valores para que possam ser guardados para futuras consultas, um é tempo[10] e o outro é temperatura[10], eu não sei onde esta o problema só sei que quando eu "printo" os arrays eles ficam com o ultimo valor escrito neles, ou seja não gravou na EEPROM, ja tentei utilizar a biblioteca EEPROMex.h, porém não teve efeito.

Exibições: 316

Responder esta

Respostas a este tópico

struct StoreStruct {
char version[4];
float fPressaoLimiteAlta;

float fPressaoLimiteAlerta;
float fPressaoIdealDegelo;
float fPressaoIdeal;
float fFatorPressao;
float fLimiteTempVent1;
int iTempoVent1On;
float fTempDesativaVent;
} sConfig = {sVersion, 16.80, 17.50, 15, 13, 0.91, 23.0, 10, 25.0};

Eu uso isso aqui, com esse código anexo, achei que foi a melhor solução,

No estruct eu leio e gravo os parametros, muito mais fácil

Anexos

Caro marcelo!

obrigado pela contribuição,  porém ao revisar o código, achei o erro, eu não estava "chamando" a void lerEEPROM da maneira correta,

mais uma vez obrigado pelo tempo!

Caro marcelo, o codigo é para um controlador de temperatuura, onde os set pois de tempo e temperatura são definidos pelo usuário, como se fosse uma receita, podendo ser alterados futuramente, e eu preciso salvar varias "receitas" acredito que 10 receitas estariam de bom tamanho,

void salvarEEPROM(){ 
addr=(nr*21)-21; // aqui faz um calculo para que ache a posição ne EEPROM, porque cada"receita" tem o tanho 21. nr é //o numero da "receita".
EEPROM.write(addr,n); // aqui lê a o tamanho da receita n para que eu nao salve espaços vazios na EEPROM
for(i=0;i<n;i++){ // neste loop eu passo os valores recebidos pelo array tempo e pelo array temperatura para a EEPROM
addr++;
auxrom=tempo[i];
EEPROM.write(addr,auxrom); // o esquema de gravação funciona assim //[nr,tempo[i],temperatura[i],tempo[i+1],temperatura[i+1],tempo[i+2],temperatura[i+2]............]
addr++;
auxrom=temperatura[i];
EEPROM.write(addr,auxrom); 
}

só que nao grava na EEPROM, nao sei onde estou errando

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço