Официальный сайт компании Arduino по адресу arduino.cc
Токовый датчик - 24c32
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 17/08/2016 - 15:08
Есть сигнал с токового датчика ACS712, его нужно использовать для расчёта накопленного заряда АКБ. Заряд/разряд. В 24C32 при определённом условии его нужно записать/прочитать. Писать хотел 1байт этого хватает. Но расчёт с плавающей точкой и как его в байт запихать?
код существующий сейчас:
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);}
поправляюсь //запись в память, Ah должен быть “byte” Или каким то образом float перевести в byte, или вообще все переделывать, но идей пока нет
Байт и плавающая точка - вещи взаимоисключающие.
Если Вы увероены, что хватает байта - его и используйте.
Если непременно нужна плавающая точка - используйте ее.
Но не пытайтесь совместить несовместимое.