Skalenanzeige: runden von Variablen

Gast #4529846
Lesenswert?
• ▲
▼
Hallo zusammen,

ich weiß nicht weiter, bei der Dartellung eines Sensorwertes, der anhand 
einer einfachen Skalenanzeige eines DOG-Displays visualisiert werden 
soll.

Der Sensorwert liegt als float-Variable (vereinfacht) zwischen 0 und 60.
Ich werwende die zweite Zeile des Displays an Skalenanzeige. Die Zeile 
hat 16 Elemente. 60/16 ergibt 3,75. Ich würde gerne bei Werten bis 3,75 
das erste Element ein Zeichen angeben lassen, bei Werten z.Bsp. 
(3x3,75)bis 11,25
die Skala bis zum dritten Zeichen etwas anzeigen lassen usw..
Wie setzte ich das programmiertechnisch am einfachsten um ?

Sensorwert 3,5:
[|               ]
Sensorwert 35
[|||||||||       ]

Wie würdet ihr das machen ? Ich habe im Forum nur leider Artikel zum 
runden von Nachkommazahlen etc. gefunden.
Hat da jmd. ein Stichwort ?

Danke,
Michael
Gast #4529859
Lesenswert?
• ▲
▼
Wie wäre es mit "round(x/3.75)" oder dazu äquivalent "trunc(x/3.75 + 
0.5)"?

Die genaue Funktion hängt davon ab, ob Du z. B. bei einem Wert von 1.0 
schon ein Segment on haben willst, oder nicht. Oder wann genau alle 
Segmente on sein sollen.
Gast #4529872
Lesenswert?
• ▲
▼
Michael schrieb:
> Der Sensorwert liegt als float-Variable (vereinfacht) zwischen 0 und 60.
> Ich werwende die zweite Zeile des Displays an Skalenanzeige. Die Zeile
> hat 16 Elemente. 60/16 ergibt 3,75.

Dann verabschiedest du dich erstmal von dem Datentyp float. 
Multipliziere deine Werte mit 4 und du bist irgendwelche 
Nachkommastellen für die Umschaltpunkte los. Und dann solltest du 
erstmal festlegen, wo genau umgeschaltet werden soll (s.o.)
Gast #4529919
Lesenswert?
• ▲
▼
wendelsberg schrieb:
> Du kannst davor auch noch setzen:
>
> Wert = Wert * 1.067;

Da ist es doch wesentlich günstiger mit 17/64 zu rechnen. Die 
Genauigkeit von 0,4% sollte allemal ausreichen.

Mit dem Faktor 1.067 wird man den ganzen Float-Overhead nicht los. Aber 
manche µC langweilen sich leicht zu tode und da ist es gut, wenn man sie 
mit ein bisschen Float-Rechnerei in Bewegung hält. Für nicht genutzten 
Flash Speicher gibt es sowie so kein Geld zurück.</ironie>
Gast #4529931
Lesenswert?
• ▲
▼
Wolfgang schrieb:
> Da ist es doch wesentlich günstiger mit 17/64 zu rechnen. Die
> Genauigkeit von 0,4% sollte allemal ausreichen.

Man koennte natuerlich diesen Faktor auch gleich in die vorgelagerte 
Floatberechnung einfliessen lassen, so dass eben nicht Werte von 0 bis 
60, sondern Werte von 0 bis 64 ankommen, bei denen koennte man dann 
einfach mit dem ganzzahligen Teil weiterrechnen.

> Mit dem Faktor 1.067 wird man den ganzen Float-Overhead nicht los. Aber
> manche µC langweilen sich leicht zu tode und da ist es gut, wenn man sie
> mit ein bisschen Float-Rechnerei in Bewegung hält. Für nicht genutzten
> Flash Speicher gibt es sowie so kein Geld zurück.</ironie>

Nein, das hatte ich schon so gedacht, dass die 0-60 zuerst zu 0-64 
werden und man dann ganzzahlig weiterarbeiten kann.
Man will den uC ja auch nicht zu sehr stressen ;-:

Aufpassen muss man dann aber, was bei 4/64 wirklich herauskommt, dort 
muss man unter Umstaenden noch eine Korrektur einbauen.

wendelsberg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren