Skalenanzeige: runden von Variablen

Gast #4529846
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
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
Pseudo (perl-like):

wert_anz = wert / 16;
string=anz = "";
for(i=1;i<=wert_anz;i++){string_anz = string_anz + "|";};
print string_anz;

wendelsberg
Gast
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
Noch eine Idee:

Du kannst davor auch noch setzen:

Wert = Wert * 1.067;

Damit wird dann Dein Maximalwert 60 zu besser berechenbaren 64 und 
jeweils 4 entsprechen einem Balken.

wendelsberg
Gast
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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.