I am trying to read/write a float number into an external I2C EEPROM with the following pieces of code but all i get is the number i saved with positive sign. how can i write negative float numbers into an external I2C EEPROM?
code to read float number
dht_temper_calib_value = (eepromRead(0,1) * 0.1); //read number and convert it to a float
dht_temper_calib_sign = (eepromRead(0,2)); //read sign flag
if (dht_temper_calib_sign == 1){ //if the flag is 1 (for negative) then convert the number into a negative number
dht_temper_calib_value = dht_temper_calib_value * (-1);
}
code to write float number
if (analogRead(0) > 650 && analogRead(0) < 700) { //read a button
delay(500);
dht_temper_calib_value = dht_temper_calib_value + 0.1; //increase value by 0.1
if (dht_temper_calib_value > 10){ //restrict max value to 10
dht_temper_calib_value = 10;
}
}
if (analogRead(0) > 350 && analogRead(0) < 450) { //read a button
delay(500);
dht_temper_calib_value = dht_temper_calib_value - 0.1; //decrease value by 0.1
if (dht_temper_calib_value < -10){ //restrict min value to -10
dht_temper_calib_value = -10;
}
}
if (dht_temper_calib_value >= 0){ //check to see if the number is positive
dht_temper_calib_sign = 0; //if so set sign flag to 0
}
else dht_temper_calib_sign = 1; //else if number <0 set sign flag to 1
dht_temper_calib_value = abs(dht_temper_calib_value) * 10; //convert number into a 3 digit decimal number
eepromWrite(0,1, dht_temper_calib_value); //write converted number to I2c eeprom
eepromWrite(0,2, dht_temper_calib_sign); //write sign flag to i2c eeprom