Du verfolgst fast den richtigen Ansatz, aber machst kurz vor der
Zielgeraden einen entscheidenden Fehler.
Einerseits wandelt itoa nicht "Binär->Dez" um, sondern erzeugt eine
Klartext-Repräsentation (ein String, eine Zeichenkette) des übergebenen
numerischen Wertes, andererseits musst Du, um Deine Berechnung anstellen
zu können, das nicht mit der Klartext-Repräsentation des Wertes
anstellen.
Am einfachsten ist das mit Floating-Point-Arithmetik:
1 | int result;
|
2 | float spannung;
|
3 |
|
4 | spannung = (result / 1023.0) * 5.0;
|
(Beachte hier die abweichende Schreibweise der Konstanten!)
Diesen so bestimmten /float/-Wert musst Du noch für die Ausgabe in eine
Klartextrepräsentation umwandeln, das geht am einfachsten mit der
Funktion sprintf.
1 | sprintf(buffer, "%2.2f V", spannung);
|
Der Ansatz hat aber zwei Nachteile:
- Floating-Point-Arithmetik ist rechenzeitintensiv und benötigt viel
Codespeichher
- sprintf benötigt ebenfalls viel Codespeicher