Como faço para guardar um valor int maior que 256 na EEPROM

Olá a todos,estou com esta dificuldade, quero guardar na eeprom um valor int que o valor seja de 256 até 600 mas eu só consigo guardar um valor até 255 depois disso ele guarda como se fosse 0. alguém sabe me dizer o porque?

eu faço da seguinte forma:

int a = 256;

 EEPROM.write(1,a);

O problema que ao ler a eeprom 1 ele me da o valor int 0 e não o 256 que eu mandei guardar.

Exibições: 687

Responder esta

Respostas a este tópico

Boa noite caro Napster, 

Favor informar qual Biblioteca EEPROM esta usando. 

Provavelmente a variável que esta armazenando é do tipo Byte. 

Na rel eu não sei qual é a biblioteca, acho que ja vem no arduino, eu chamo ela assim: #include <EEPROM.h>

Realmente a EEPROM só armazena 1 Byte em cada posição de memória, que equivale a 255 em decimal. Para armazenar valores maiores você precisa dividir esse valor e armazenar em mais de uma posição de memória.


http://labdegaragem.com/profiles/blogs/tutorial-usando-a-eeprom-do-...

obrigado pela resposta, ajudou bastante no meu entendimento da EEPROM, no seu link explica certinho como fazer para guardar um valor maior que 255, só que eu reproduzi o exemplo e mesmo assim não consegui guardar um valor por exemplo de "511" o valor que eu consigo visualizar na serial e de 255. vou deixar em anexo o sketch que eu fiz.

meu sketch e só de exemplo, não é onde exatamente eu quero usar e sim só um para eu aprender a guardar estes valores logo ele é bem pequeno

Anexos

Consegui resolver, pesquisei e achei uma forma fácil e pratica de fazer este armazenamento.

void EEPROMWriteInt(int address, int value)
{
byte two = (value & 0xFF);
byte one = ((value >> 8) & 0xFF);

EEPROM.update(address, two);
EEPROM.update(address + 1, one);
}

int EEPROMReadInt(int address)
{
long two = EEPROM.read(address);
long one = EEPROM.read(address + 1);

return ((two 0) & 0xFFFFFF) + ((one 8) & 0xFFFFFFFF);
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço