Hallo,
ich brauche Eure Unterstützung!
Ich habe einen NTC-Widerstand an den ADC angeschlossen und der µC
ermittelt
mit Hilfe der gemessenen Spannung und der Steinhart-Hart Gleichung die
Temperatur.
Die Temperatur wird in °C auf ein LCD ausgegeben. Soweit funktioniert es
auch...
aber nur die Vorkommastellen werden angezeigt [Bsp. 25].
Ich möchte aber eine Kommazahl ausgeben lassen [Bsp. 00,00].
Ich habe mich über Festkommaarithmetik und ftoa() informiert, kann es
aber nicht
konkret auf mein Projekt anwenden.
Probleme:
-Datentyp der Konstanten bzw. Variablen und deren Genauigkeit (zu genau,
falscher Typ)
-Anwendung der Festkommaarithmetik auf die Formeln (vorallem T=...) ???
Vielen Dank für jedwede Hilfe!
(bitte keine Verweise auf G..gle)
Marvin B. schrieb:> Ich habe mich über Festkommaarithmetik und ftoa() informiert, kann es> aber nicht> konkret auf mein Projekt anwenden.
da du sowieso schon double benutzt, kannst du ruhig auch ftoa benutzen.
Was genau verwirrt dich an ftoa? Funktioniert fast genauso wie itoa.
Du musst aber nicht für deinen µC eine Bschäftigungstherapie machen,
indem du ihn 6 mal den Logarithmus von einem immer gleichen Wert
ausrechnen lässt.
Karl Heinz Buchegger schrieb:> ftoa?
Ja theoretisch, aber es kommt immer eine "implicit decleration of ..."
Fehlermeldung. Habe gelesen ich muss irgendwo etwas Linken ???
Aber in so etwas bin ich nicht geübt!
Karl Heinz Buchegger schrieb:> Marvin B. schrieb:>>> Ich habe mich über Festkommaarithmetik und ftoa() informiert, kann es>> aber nicht>> konkret auf mein Projekt anwenden.>> da du sowieso schon double benutzt, kannst du ruhig auch ftoa benutzen.> Was genau verwirrt dich an ftoa? Funktioniert fast genauso wie itoa.
Mein Fehler. Ich hab nicht mitgedacht. Ein ftoa gibt es ja gar nicht. Du
brauchst dtostrf()
Marvin B. schrieb:> Marvin B. schrieb:>> itoa(T,Buffer,10);>> Diesen Abschnitt durch dtostrf(T,Buffer,10) ersetzen oder andere> Übergabeparameter ?
Wie wärs wenn du die Funktion ergoogelst um zu sehen welche Parameter
sie haben will? Bei einer Gleitkommazahl gibt es noch mindestens einen
Parameter mehr, der interessant ist: wieviele Nachkommastellen will man
haben. Dafür sind die letzten 10 von itoa wieder eher uninteressant.
Kein Mensch wird sich eine Gleikommazahl in Hexadezimal oder einem
anderen Zahlen-System ausgeben lassen.
Marvin B. schrieb:> Marvin B. schrieb:>> (bitte keine Verweise auf G..gle)
Gut. Dann nicht.
Wie wärs mit einem C-Buch
(Wir werden hier nicht für dich Abhandlungen über ein Thema schreiben,
dass du problemlos und ausführlich in jedem Buch und/oder wahlweise in
15 Sekunden ergoogeln kannst. Sorry. Ein wenig Eigeninitiative wird von
dir erwartet. Was machst du, wenn die nächste Funktion ansteht, die du
noch nie benutzt hast? Du kriegst gerne einen Funktionsnamen als
Stichwort. Bei komplexeren Dingen auch mal eine Erklärung dazu. Aber im
Allgemeinen Fall musst du lernen, dir mit einem Stichwort selbst zu
helfen. Das ist heute einfacher als je zuvor)
dtostrf(double __val,signed char __width,unsigned char __prec, char*
__s)
dtostrf(double T,signed char ????? ,unsigned char 2, Buffer)
????? diesen Parameter verstehe ich nicht aus der Beschreibung?
Marvin B. schrieb:> dtostrf(double __val,signed char __width,unsigned char __prec, char*> __s)>> dtostrf(double T,signed char ????? ,unsigned char 2, Buffer)>> ????? diesen Parameter verstehe ich nicht aus der Beschreibung?
OK.
val ist klar. Das ist der Wert
width wieviele Zeichen soll die Ausgabe insgesammt maximal breit
sein.
Das ist inklusive eines möglichen Vorzeichens und des
Kommapunktes
prec wieviele Zeichen von width sollen hinter dem Komma sein
s buffer in den der String geschrieben werden soll (wie bei itoa)
-78.345
wären also width -> 7
prec -> 3
damit sind dann alle Zahlen von -99.999 bis +99.999 abbildbar. dennn
alle diese Textrepräsentierungen benötigen 7 Zeichenpositionen. Wenn,
wie zb bei 0.000 die 7 Zeichen nicht aufgebraucht werden, wird links mit
Leerzeichen aufgefüllt.
Marvin B. schrieb:> Karl Heinz Buchegger schrieb:>> -78.345>>>> wären also width -> 7>> prec -> 3>> Vielen Dank für das Beispiel! So etwas liefert G..gle nicht ohne ...
Na ja. Wer die Formatangabe in printf kapiert hat, sollte damit
eigentlich kein Schwierigkeiten haben. Ist bei Floating Point genau
gleich, nur anders geschrieben.