Hallo zusammen. Zusehen ist eine zweifache ADCMessung. Ich teile den
Messwert durch 200 damit ich nur eine Zahl zwischen 0 und 5 habe(0-5V).
Zur Zeit stehen nur ganze Zahlen da.(0 1 2 3 4 5). Wie kann ich es jetzt
umschreiben, dass eine Kommazahl mit dabei ist.?
Danke euch
MfG
Entweder du benutzt richtige Gleitkommavariablen und entsprechende
Berechnungen oder du lässt dein 'Dogma' fallen, dass aus der Funktion
unbedingt Werte in Volt rauskommen müssen.
WEnn du in Geld rechnest, hast du ja auch 2 Möglichkeiten. Entweder du
rechnest alles in Euro, wodurch du ganz automatisch um Kommazahlen nicht
rum kommst (denn wie willst du sonst €1.99 ausdrücken), oder aber du
rechnest ganz einfach alles in Cent. Dann hast du statt €1.99 eben 199
Cent und das ist wieder eine ganze Zahl.
Anstatt von in Volt könntest du zb in Zehntelvolt oder Hunderstelvolt
rechnen. Sagt ja keiner, dass du eine 'Einheit' benutzen musst, die
'üblich' sind.
"Fixkommaarithmetik
Diese Seite enthält momentan noch keinen Text. Du kannst sie bearbeiten,
ihren Titel auf anderen Seiten suchen oder die zugehörigen Logbücher
betrachten."
Besser Festkommaarithmetik
das problem ist: wenn ich in der adc messung float anstatt uint_16 nehme
und in der main float m1=0 zeigt mir mein display nichts mehr an. was
mach ich falsch?
seens schrieb:> das problem ist: wenn ich in der adc messung float anstatt uint_16 nehme> und in der main float m1=0 zeigt mir mein display nichts mehr an. was> mach ich falsch?
Wahrscheinlich hast du die Floating Point Library nicht eingebunden.
Kann aber auch alles andere sein, kenne ja deinen Code nicht, wenn er
auf Floating Point umgearbeitet ist.
FAQ
Der Punkt wo es um die Aktivierung der Floating Point Lib geht
seens schrieb:> PS: es geht um ein schulprojekt und da wollte ich schon dass 0.0 bis 5.0> da steht ;)
Ja, und?
Was hindert dich daran, aus der ganzen Zahl zuerst den Vorkommaanteil
durch eine Division durch 10 zu erhalten und dann einen '.' hinzumalen
und den 'Nachkommaanteil' als den Rest von der Division auszugeben?
(wenn du mit dem 10-fachen des Wertes operierst)
Um bei den Euro zu bleiben.
Sei
ein wunderbares "1.99 Euro" in den String, das du ausgeben kannst. Kein
Mensch weiß, dass du intern mit Cent (also dem 100-ten Teil eines Euros
und damit 2 'Nachkommastellen') rechnest.
Wenn man davon ausgeht, dass 200 Counts = 1,0V sind, kann man das
Problem, am Offensichtlichsten folgendermaßen angehen:
Messwert = Wert vom A/D-Dingsbums.
Zeichen = Zeichen für den Stringeinbau
Zaehler = Keine Ahnung
String = char [4]
Zeichen = '0';
for (Zaehler=0;Zaehler<6;Zaehler++) {
if (Messwert > 199) {
++Zeichen;
Messwert-=200;
} else {
break;
}
}
String [0]=Zeichen;
String [1]= ’,’; // oder Punkt
Zeichen = ’0’;
for (Zaehler=0;Zaehler<10;Zaehler++) {
if (Messwert > 19) {
++Zeichen;
Messwert-=20;
} else {
break;
}
}
String [2]=Zeichen;
String [3]= '\0';
// Wenn gewünscht: char [5]
// und for mit ">=2" nochmal
// ist aber Glaubenssache