Токовый датчик - 24c32

serg-abeliar
Offline
Зарегистрирован: 21.07.2016

Есть сигнал с токового датчика ACS712, его нужно использовать для расчёта накопленного заряда АКБ. Заряд/разряд. В 24C32 при определённом условии его нужно записать/прочитать. Писать хотел 1байт этого хватает. Но расчёт с плавающей точкой и как его в байт запихать?

serg-abeliar
Offline
Зарегистрирован: 21.07.2016

код существующий сейчас:

float Ah1 = 0.0;

int t = 0, Ah = 0;

Boolean s = false;//меняется 1 раз в секунду

rw0 = 641;           //значение для теста 

    if((s)&&(t == 0)) {Ah1 = Ah1 + (rw0-511)/13;t = t + 1;}//расчет ампер часов-интервал секунда

    if (!s) t = 0;

    Ah = round(Ah1/360);

//перевод из float

    char buff1[1];          

    itoa(Ah,buff1,10);

//отображение на табло

    if (skrin == 2){ if(Ah < 10){Massdata [0] = 148;Massdata [1] = buff1[0];}

    else{Massdata [0] = buff1[0]+100;Massdata [1] = buff1[1];}}

//мигание значения при установке параметра

         if((skrin == 2)&&(s)&&(razr)) {Massdata [0] = 0; Massdata [1] = 0;}

//запись в память Ah должен быть  “integer”

         if(OE == false) {i2c_eeprom_write_byte(87,r,Ah);delay(10);}

serg-abeliar
Offline
Зарегистрирован: 21.07.2016

поправляюсь //запись в память, Ah должен быть  “byte” Или каким то образом float перевести в byte, или вообще все переделывать, но идей пока нет

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

serg-abeliar пишет:
Писать хотел 1байт этого хватает. Но расчёт с плавающей точкой и как его в байт запихать?

Байт и плавающая точка - вещи взаимоисключающие.

Если Вы увероены, что хватает байта - его и используйте.

Если непременно нужна плавающая точка - используйте ее.

Но не пытайтесь совместить несовместимое.