Forum: Mikrocontroller und Digitale Elektronik Float-Zahlenbereich --> 8bit Hexzahl


von Brillitsch (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein riesen Problem.
Ein Zahlenbereich von -3,0 bis +3,0 soll in 255 Schritten als Hexwert
umgewandelt werden.
Also -3,0 entspricht 0x00 = 0d
      0,0 entspricht 0x7F = 127d
     +3,0 entspricht 0xFF = 255d

Bei einer Spanne von 6,0 erreiche ich bei Division durch 255 eine
Schrittweite von 0,0235...
Naiverweise habe ich an eine Tabelle gedacht. Aber das währe doch eine
zu plumpe Lösung , oder?

Was sagen die mathematischen Genies in diesem Forum dazu?

Es soll zwar in C programmiert werden, mich interessiert aber vorerst
das Prinzip zu einer Mathematischen Lösung.


Schönen Gruß    Brillitsch

von bratsand (Gast)


Lesenswert?

(wert+3)/255 muesste hinhauen. und wenn du es nicht immer berechnen
willst, dann nimm ne tabelle.

von sven (Gast)


Lesenswert?

nein nein

float wert;
char neuerwert

wert += 3;
wert *= 42.5;
wert /= 255;
neuerwert = (char)wert;

von Schmidle (Gast)


Lesenswert?

Hallo,

ich würde sagen mathematisch ist das
f(x) = 127 + 42.33 * x

Gruß
Schmidle

von sven (Gast)


Lesenswert?

halt
hab au n fehler :-P
ohne die zeile
wert /= 255;!!!!!!!!

zum prinzip:

0-6 soll 0-255 entsprechen

255/6 = 42.5

daher bsp: wert = 0 (127 soll ergebnis sein)

wert += 3;   // wert = 3

wert *= 42.5;  //wert = 127.5

neuerwert = (char)wert //neuerwert = 127


also:

float wert;
char neuerwert

wert += 3;
wert *= 42.5;
neuerwert = (char)wert;

von Brillitsch (Gast)


Lesenswert?

So, vielen Dank, für Eure Hilfe,

ich habe das Verfahren von User Schmidle gewählt. Funktioniert
ohne Probleme.

Schönen Gruß   Brillitsch

von Hanes (Gast)


Lesenswert?

Ich bin kein grosser Fan von so gebrochenen Zahlen.

Ich würde pro Bit mit 0.025 rechnen. bei 240 Schritten kannst du den
Breich von +3V bis -3V ausnutzen und hast noch reserve für Übersteuern
des Wertebereichs.

von Hanes (Gast)


Lesenswert?

0.025V meinte ich. Die Edit-Funktion fehlt eindeutig.

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
Noch kein Account? Hier anmelden.