ok, für einen Uno ist meine Lösung nicht geeignet, wohl aber für einen Mega.
Es geht um das unsägliche Serial.print mit seinen schauderhaften Formatiermöglichkeiten.
In C nutzt man für Ausgaben den sehr mächtigen Befehl printf(), wenn man direkt ausgeben will, bzw. sprintf(), wenn man die Ausgabezeile erst einmal in einen Puffer-String kopieren will.
Da eine direkte printf() Ausgabe bei Arduino Sketch nicht möglich ist, bleibt also nur sprintf(), und dann den Pufferstring per Serial.print (ohne weitere Formatierung).
Beide C-Funktionen nutzen ein 100% identisches Formatiersystem.
Aber:
Die schlauen Arduino-Entwickler haben die Float-Ausgabe für sprintf() bei AVRs unterbunden. Will man sie nutzen, kann man aber die lib patchen.
Das ist viel Aufwand und eine Menge Holz für einen Anfänger, und unsinnig für einen Uno, da zuwenig Speicher. Für einen Mega ist es den Aufwand aber wert.
Statt
Serial.print ("Drehwinkel2 = ");
Serial.println (Drehwinkel2_ber (),4);
hättest du dann
char sbuf[100]; // string buffer
sprintf(sbuf,"Drehwinkel2 = %.4f \n ", Drehwinkel2_ber () ); // sbuf zusammensetzen, evtl auch mit noch viel mehr Variablen und String-Bezeichnern
Serial.print(sbuf);
Das macht bei 1 string und 1 Variablen noch nicht viel aus, erleichtert aber erheblich die Formatierung bei komplexeren Aufgaben.
Wie gesagt, sehr mächtig, ein wenig aufwändig, aber anschließend höchst effizient, und du siehst leichter, welche Variablen evtl falsch formatiert wurden (int vs. float).
Hier ist die Beschreibung zu printf und sprintf:
http://www.cplusplus.com/reference/cstdio/printf/
http://www.cplusplus.com/reference/cstdio/sprintf/
Wenn es dich interessiert, poste ich dir auch den Link zum Float-Patch für den Mega.
Lesezeichen