PRINT_CSTSTR("%s", "ADC1 is ");
PRINT_VALUE("%f", ADC1);
PRINTLN;
Der Wert wird korrekt als z.B. 8.07 angezeigt. (Klar kann man diese konvertriererei besser machen. Ist aber derweil nur zum Spielen). Nun ist es so, wenn ich einen Float to String haben möchte, mache ich dies so:
ftoa(float_str, ADC1, 4);
Serial.print("ADC1 is ");
Serial.println(ADC1); //Hier werden die 8,07 korrekt angezeigt
Serial.println(float_str); // Und hier kommt mein Problem
Beim Float bekomme ich ein riesen Problem. Der berechnete Wert um vier Nachkommastellen ist 8.0678 (Wird ja auf 8.07 gerundet). Gebe ich den float_str allerdings aus, kommt hier 8.6788 raus. Er verschluckt also nach der Dezimalstelle die 0. Dies macht er allerdings immer, wenn der Wert X.0X wäre.
Alles was über 0 ist, wird korrekt ausgegeben. Nun meine Frage. Was ist hierbei der Fehler?
Wäre schön, wenn mir hier jemand helfen könnte. Ich habe leider keine Idee.
Hmmm... bedeutet, dass ich hier ein Problem habe?:
-->Genau, wollte gerade schreiben, dass es ftoa() so gar nicht gibt, und dass er nen Fehler ausgeben müsste.... nun hast ja den Rest angeliefert^^
Kannst es ja mal mit dieser selbstgeschrieben Funktion versuchen
Danke. Oh je, so langsam verzweifle ich. Wenns nicht so ein komplexes Programm wäre, wäre es sicher einfacher g. Es war eine Vorlage für nen Datenfunk und habs extrem angepasst und jetzt macht das Float ein Problem g
Also, jetzt bekomme ich jedenfalls nen Fehler:
cannot convert 'char*' to 'float' for argument '1' to 'char* ftoa(float, char*, uint8_t)'