PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem bei der Berechung einer linearen Funktion und der knovertierung für ein LCD



Schirmo
03.06.2013, 17:28
Hallo zusammen,
ich stehe momentan vor folgendem Problem: Ich möchte mein konvertiertes 10-Bit Analogsignal (uint16_t) einem Wert von 0V ... 15V (Char oder String) zuweisen und an einem LC-Display ausgeben (am liebsten "XX.XX V"). Das LC-Display kann nur Strings bzw. Chars ausgeben. Jetzt habe ich folgendes versucht:

void adcw_to_lcd (void)
{
char adc_ergebnis [4];
double m;

m = (15/1024)*ADCW;
dtostrf (m,3,2,adc_ergebnis);

lcd_string (adc_ergebnis);
lcd_string (" V");
}

Ich habe schon versucht "m = 2.14" und Dies dann einfach auszugeben und es hat funktioniert. Mein zweiter verrsuch war dann 2*ADCW auszugeben und es hat auch geklappt, aber sobald ich einen Bruch einfüge klappt es nicht mehr.
Frage1: Wo genau liegt mein Fehler :D
Frage2: Wie löst man so was am elgantetsten? Sollte ich andere Variablen verwenden, gibt es befehle für lineare funktionen oder sollte ich ie Methode anders aufbauen??? Wenn möglich anfängerfreundliche Tipps bzw. Beispiele geben.

Danke im Vorraus.

sternst
03.06.2013, 21:21
Frage1: Wo genau liegt mein FehlerHier: (15/1024)
Das ist eine Integer-Division, und hat damit 0 als Ergebnis.



Frage2: Wie löst man so was am elgantetsten?
Indem du daraus eine Float-Division machst.

Noch eleganter wäre allerdings, wenn du die Formel umstellen und komplett auf Gleitkomma verzichten würdest (und statt dessen Festkomma verwendest).

Schirmo
03.06.2013, 22:20
Danke, jetzt klappts endlich.