Weil float auf dem Arduino nicht implementiert ist. Das ist sehr umfangreich. Deshalb hat man es in der avr libc standardmäßig weggelassen. Es gibt einen Compiler Options Schalter um das zu aktivieren, aber daran kommt man in der Arduino IDE wieder nicht so einfach ran.
Es gibt einen Patch mit fertig compilierten Datein dafür:
Aber wie da steht bläht das den Code um 1,5kB auf, auch wenn man es nicht verwendet!
Eine Alternative bei manchen Anwendungen ist die nicht-ANSI C Funktion dtostrf(). Aber die formatiert nur eine Zahl und keine Strings dazwischen: http://www.mikrocontroller.net/topic/86391
Man kann das natürlich mit Serial.print() zusammenstückeln.
update:
habs jetzt einfach über alle Ordner drüberkopiert:
Klappt!
void setup()
{
// -----------------------------------------------------------------
// TEST !
char buffer [31];
float n, a=5, b=3;
n=sprintf (buffer, "%.1f plus %.1f is %.1f", a, b, a+b); // funktioniert jetzt!
// -----------------------------------------------------------------
Serial.begin(9600);
Serial.println(buffer);
Serial.println();
}
void loop() {
// put your main code here, to run repeatedly:
while(1);
}