![]() |
Formel gesucht
Hallo zusammen,
irgendwie haperts mal wieder an der Erstellung einer Formel. :wall: Ich habe in meinem Programm einen eingestellten Wertebereich von -30..+70. Von einem angeschlossenen Gerät bekomme ich ("nur") digitale Werte im Bereich 0..4095. Es entspricht also übertragenderweise: 0 => -30 4095 => +70 Aus diesem Zusammenhang möchte ich einen aktuellen Wert berechnen und darstellen. Versucht hatte ich: Result:= ( (70 - (-30)) / 4095 ) * {gelieferter Wert}; Nur: Setze ich als gelieferten Wert 2048 an, so ergibt sich nach der Formel da oben folgende Werte gelieferter Wert => berechneter Wert ------------------------------------ 0 => 0 2048 => 50 4095 => 99,97 Das haut irgendwie nicht so ganz hin. :gruebel: Frage: Wie muss die korrekte Formel lauten, dass bei einem gelieferten Wert von 4095 als berechnetes Ergebnis 70 raus kommt? Dank vorab und Gruß, Carsten |
Re: Formel gesucht
Ist es nicht so?
aktuelle Wert = ((gel.Wert * (100/4095)) -30) Grüße Klaus |
Re: Formel gesucht
Hi!
(4095 / 40,95) - 30 Sollte funktionieren |
Re: Formel gesucht
Y = (X - X1) * (Y2 - Y1) / (X2 - X1) + Y1 (allg. Formel: Die Punkte (X1|Y1) und (X2|Y2) dienen als Stützstellen, dazwischen wird interpoliert)
Also: Result := (Wert - 0) * (70 + 30) / (4095 - 0) - 30 <=> Result := Wert * 100 / 4095 - 30 Um zu zeigen, wie man drauf kommt ;) |
Re: Formel gesucht
Zitat:
Wenn ich jedoch meinen Wertebereich verschiebe auf +10..+110, dann ergibt sich bei einem gelieferten Wert von 0 mit Deiner Formel folgende Berechnung: Result:= 0 * (110 + 10) / 4095 - 10 ==> Result = -10 :roll: Es gilt also zumindest darauf zu achten, dass der untere Bereich >= 0 ist, denn wenn er >= 0 ist, dass muss der untere Werte nicht abgezogen, sondern dazu addiert werden. Ferner muss dann der untere Grenzwert vom oberen Grenzwert abgezogen werden. Gruß, Carsten |
Re: Formel gesucht
Öhm nein.
Du hast doch den Prozetwert des Wertebereichs (0..4095). Diesen Prozentwert musst du dann nur noch auf deinen Wertebereich umrechnen. Heißt:
Delphi-Quellcode:
bei 10..110 wäre das dann:
Prozentwert := Wert * 100 / 4095;
MeinWertInMeinemWertebereich := Prozentwert - 30; // Da (0..100) - 30 = (-30..70) :lol:
Delphi-Quellcode:
Result := Wert * 100 / 4095 + 10
|
Re: Formel gesucht
Zitat:
Zitat:
Und am Ende + Y1 ergibt +(-30) ist gleich - 30 Jetzt: Y1 = 10 und Y2 = 110 (Beide male ist X1 gleich 0 und X2 gleich 4095 (Y ist der "Zielbereich" und X ist der "Quellbereich")) Also: Y = (X - 0) * (110 - 10) / (4095 - 0) + 10 Y = X * 100 / 4095 + 10 ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz