für floats habe ich nichts passendes gefunden, ftoa ging bei mir nicht und sprintf verbietet sich, weil es zuviel flashspeicher klaut.
ich habe das dann so gelöst:
Code:
void display(int value)
{
char buffer[8];
float f=((float)value*5)/1023;
if(f<0)f=0;
itoa((int)f,buffer,10);
lcd_puts(buffer);
lcd_putc(',');
f=(f-(int)f)*1000;
if(f<100)lcd_putc('0');
if(f<10)lcd_putc('0');
itoa((int)f,buffer,10);
lcd_puts(buffer);
return;
}
in diesem fall wird eine kommazahl ausgegeben, die sich aus value berechnet. 0->0,000; 1023->5,000.
besonders elegant ist das ja nicht, und braucht sicher auch eine menge speicher. weiss jemand, wie man das einfacher/besser hinbekommt?
gruesse von der katz
Lesezeichen