Hallo, habe da ein kleines Problem. Ich möchte mit einer AD-Wandlung die Spannung eines Mignonakkus abfragen und diese auf einem Display darstellen. Die Abfrage klappt und anhand von LEDs kann ich ausrechnen was für eine Spannung der Akku hat. Durch eine Umrechnung ((2,56V/1024)*ADC) bekomme ich die aktuelle Spannung als float. Die Übertragung auf das Display klappt auch. Leider bekomme ich anstatt 1,44V einen utopischen Wert. Das Problem ist die Umwandlung von float in char. Wie kann ich den errechneten Wert so in ein char konvertieren (einfache Lösung), dass die 1,44 im Display zu sehen sind? itoa und utoa ergeben den gleichen Müll. Verwendet werden: AVR-Studio 4.15 und Atmega16 auf einem Pollin-Board. Ich selber bezeichne mich als Neuling in der Programmierung mit wenig Erfahrung. Danke
Irgendwie find ich in dem Code die angegebene Berechnung nicht. Um welche Zeile(n) gehts da genau?
Da du sowohl hier als auch in deinen Kommentaren immer 1,44 schreibst, lass dir gesagt sein, dass man in Programmiersprachen normalerweise immer die engliche Schreibweise benutzt, bei der es kein Dezimalkomma sondern einen Dezimalpunkt gibt! Also nicht 1,44 sondern 1.44 das i in itoa steh für int. das u in utoa steht für unsigned(int). Du willst aber float ausgeben, also wird wohl weder itoa noch utoa die passende Funktion sein :-) Und auch immer daran denken: Wenn auf dem Display schon 103 steht, und du gibst an dieselbe Stelle linksbündig 20 aus, dann steht auf dem Display 203 und nicht 20, weil niemand die 3 von den ursrünglichen 103 übeschrieben hat :-)
schreib deine Umrechnung so um das du 144 als wert erhältst, das ist ein reiner int wert. diesen kann man dann mit itoa passend wandeln Das komma kannst du dann von hand in dein char array einpflegen..
Danke für die Antworten! Habe gestern noch eine lange Nacht am Rechner gehabt. Aber es hat sich gelohnt. Ich glaube es war Karl heinz Buchegger der einen Code ins Forum gestellt hat der mir weitergeholfen hat. --> Erst den int/1000 dann int%1000 dazwischen ein Komma. Das ganze wird mit sprintf irgendwie zu char... Muss ich mir noch mal in Ruhe anschauen und begreifen! Aber nun bekomme ich die Spannungen der Akkus auf dem Display angezeigt. Mein nächste Problem wird sein die Ausgänge als Soft-PWM einzurichten. Im Anhang das geänderte Programm
1 | Akku1 = (2.502443793*Spannung); // ( ( (2,56/1024) *1000) *Spannung) |
schreib ruhig die komplette formel hin (nicht nur den 2... Wert), das wird automatisch vereinfacht (vom präprozessor/compiler)
Super! Danke für den Beitrag! Hat mir eine ganze Stange Zeit eingespart! Irgendwie hat mir nur noch dieser Artikel gefehlt um das HowTo zu "Festkommaarithmetik" zu kapieren. Nun funktioniert bei mir die Ausgabe am LCD ebenfalls. Danke Bernd M. für den Code.
>Danke Bernd M. für den Code.
Glaub, der liest nicht mehr mit .....
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.