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.
Tags:
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
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por