Esses tempos quando estava tentando salvar um dado(Temperatura) na EEPROM, deparei com a limitação de 1 byte por endereço, podendo salvar números de 0 255 por endereço, já um dado float tem 4 bytes.
Então resolvi o problema com seguinte algoritmo que o ocupa dois endereços de memoria para casa dado float.(considerando duas casas decimais)
Exemplo: Salvar 3 dados float
Dado 1 p=0 (ocupa posição 0 e 1)
Dado 2 p=2 (ocupa posição 2 e 3)
Dado 3 p=4 (ocupa posição 4 e 5)
A posição para cada dado tem que ser posição do ultimo dado + 2.
void gravar(float x,int p) //X valor a ser salvo P posição na memoria
{
EEPROM.write (p,int(x));
EEPROM.write (p+1,int((x-int(x))*100));
}
float ler(int p)
{
return float(EEPROM.read(p))+ float(EEPROM.read(p+1))/100;
}
Comentar
Legal Wellington, irei testar. Obrigado pela dica.
Thiagoor: se salvar na eeprom, a memória não se apaga ao reiniciar o Arduino.
Abç
Só por curiosidade: por que motivo você precisava gravar dados na ROM?
Valeu!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)