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;
}

Exibições: 6863

Comentar

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)

Comentário de Pedroso em 21 novembro 2012 às 18:07

Legal Wellington, irei testar. Obrigado pela dica.

Thiagoor: se salvar na eeprom, a memória não se apaga ao reiniciar o Arduino. 

Abç

Comentário de Thiagoor em 21 novembro 2012 às 17:59

Só por curiosidade: por que motivo você precisava gravar dados na ROM?

Valeu!

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço