Olá pessoal,

alguém sabe como faço para gravar numeros negativos na eeprom?

Vou usar como limite para um sensor de temperatura...exemplo

-10

-8

e etc...

Obrigado

Sérgio

Exibições: 1378

Responder esta

Respostas a este tópico

Um byte vai de 0 à 255, para representar números negativos, utiliza-se o bit 7 para indicar que o número é negativo, sendo assim um byte passa a representar de -128 à 127.

Fui claro?

Abraços

Outra ideia é fazer assim :

Vamos supor que o maximo de temperatura suportado pelo seu sistema seja 200 graus.

Pode fazer assim. se for 201 vai ser -1 graus e assim por diante.

É uma forma de ter temperatura positiva de 1 a 200 graus e ainda tem 55 valores para temperaturas positivas.

Sera que daria certo ?

[]´s

Jota

O tópico é antigo, mas eu também estava com esse problema e pesquisando não achei nada que me ajudasse, então achei uma solução que funcionou.

Fiz o seguinte, criei um dígito de controle e atribuí a ele o valor zero (0) se o número a ser grava for negativo, e valor um (1) se o número a ser gravado for positivo (o zero foi considerado como positivo). Então, gravei em posições de memória diferentes em cada caso.

offset  é o dígito de controle;

temp_offset é o valor a ser gravado na memória;

Para gravação utilizei:

if(temp_offset>=0){
offset=1;//positivo
EEPROM.update(1,temp_offset);
}else {
offset=0;//negativo
EEPROM.update(0,temp_offset);
}

Na hora da leitura da memória, se for negativo, subtraio -256 do valor lido na memória em bytes, que resulta no valor desejado:

if(offset==0)temp_offset = EEPROM.read(0)-256;
if(offset==1)temp_offset = EEPROM.read(1);

Lembre-se de gravar na memória também o valor do digito de controle (offset).

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço