Nezkoušel jsem to, takže si nejsem moc jistý, jak dopadne to přetypování floatu na byte, ale dá se to udělat i jinak, kdyby to nefungovalo. Princip je snad jasný.
Kód: Vybrat vše
byte Cele=0, Destinne=0;
float Temp=25.87;
if(Temp<0){ // pro zaporne nastavime nejvissi bit jako signum
Cele=128;
Temp=Temp*(-1);
}
Cele=Cele+(byte)Temp;
Temp=Temp-((byte)Temp); //v Temp zbyde jen desetinna cast;
Temp=Temp*100;
Desetinne=(byte)Temp; //ted jsou v Desetinne desetiny a setiny
//prevod zpet
Temp=(float)Desetinne/100;
Temp=Temp+(float)(Cele&127);
if(Cele>127) Temp=Temp*(-1);
//tisk
if(Cele>127) {
Serial.print(''-'');
Serial.print(Cele-128);
}else{
Serial.print(Cele);
}
Serial.print(".");
if(Destinne<10) Serial.print("0");
Serial.print(Desetinne);