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:
in diesem fall wird eine kommazahl ausgegeben, die sich aus value berechnet. 0->0,000; 1023->5,000.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; }
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







Zitieren

Lesezeichen