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