Hallo zusammen, also wie dem Betreff schon zu entnehmen ist, möchte ich gerne die Temperatur mit einer Nachkommastelle auf dem Display ausgeben. Ich verwende dabei einen AD 22100 KT an einem ATMega16-DIP (am ADC1) Die Ausgabe der Temperatur auf dem Display ohne Nachkommastellen funktioniert bereits, und die Umwandlung des ADC Wertes in einen richtigen Temperaturwert auch.. Jetzt stellt sich mir die Frage, wie ich das anstellen könnte, das ich die 1. Nachkommastelle auch noch angezeigt bekomme... Also damit berechne ich bisher die Temperatur: int ADC2Deg(int TempVal) { return (((220000/1024*TempVal)/1000)-60); //return ((TempVal-Min_ADC_Wert)*((MaxTemp-MinTemp)/(Max_ADC_Wert-Min_ADC_Wert))+ MinTemp); } so das ist jetzt noch alles in int, müsste dann logischerweise in float und diese floatzahl, also das Ergebnis müsste ich dann in zwei int Werte umwandeln, und zwar z.B. int VorKomma und int NachKomma Aber daran bin ich bisher gescheitert.... In C ganz normal oder C++ könnte ich mich der Funktion sprintf(); bedienen, was hier nicht möglich ist, da ih dafür extra wieder bibs einbinden müsste und so zu viel speicher und rechenzeit "verschwenden" würde... Ich hoffe ich konnte mein Problem anschaulich darstellen und das mir geholfen werden kann...
Rechne einfach in 1/10°C Auflösung! Vermeide float-Berechnungen!!! Die kosten nur Zeit und sind überflüssig! D.h. eine "1" in integer bedeutet dann 1/10°C, int(10)==1.0° int(255)==25.5° usw. Du must dann natürlich auf den Zahlenbereich (8bit/16bit) aufpassen, also int16_t nehmen. Der Dezimalpunkt ist dann einfach an einer fixen Stelle. Im Prinzip must Du in Deiner Formel die vorgegebenen Min-Max Temperaturen einfach mal 10 nehmen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.