zb. mit Round()
Volt = volt * 100
Volt = Round(volt]
Volt = volt / 100
Aus 4.999999517 wird dann 5.00 was ja auch Sinvoll ist
Hallo zusammen,
folgendes einfaches Beispiel:
Spannung über ADC messen und am LCD anzeigen.
U= (0 - 1023) 'wert vom ADC
Const Ref = 5/1023
Volt = U*Ref
Lcd Volt; "Volt"
Jetzt zeigt mir das LCD "4.999999517 Volt" an. Wie kann ich die Anzeige auf "4.99 Volt" kürzen?
Danke für Eure Hilfe
Gruß
Markus
zb. mit Round()
Volt = volt * 100
Volt = Round(volt]
Volt = volt / 100
Aus 4.999999517 wird dann 5.00 was ja auch Sinvoll ist
Gruß
Ratber
Dim V as String*10
V=Str(Volt)
V=Format(V,"0.00")
Lcd V
Damit hab man zwei Nachkommastellen und immer die gleiche Länge der Zahlen. Und somit nicht das Problem, das vor einer erneuten Ausgabe noch Ziffern der letzten Rechnung auf dem Display gelöscht werden müssen.
schau dir dazu auch mal den befehl "fusing" in der bascom-hilfe an
mfg Markus
Hallo zusammen,
erstmal Danke für die Tips.
@Ratber
leider geht das nur bei dem ADC Wert von 1023, andere Werte werden dann wieder mit den ellenlangen Nachkommastellen ausgegeben.
@Marco78
funktioniert leider auch nicht weil:
ich doch nicht mit versch. dim Variablen rechnen kann.
Gib es da einen Trick oder bin ich zu doof dafür?
Gruß
Markus
Hier nochmal der Ursprungs- Code mit den (leider) festen Dim As Variablen
Die Variable Eu kommt über RS232 rein und kann vom ADC ja von 0 - 1023 sein.Code:Dim Volt As Single Dim Eu As Word Const Ref = 5 / 1023 Eu = 1023 Volt = Eu * Ref LCD Volt; "Volt"
Ich habs mit diesem hier probiert, leider ohne Erfolg: (Fehlermeldung beim Compilern)
Code:Dim Volt as Single Dim V as String*10 Dim Eu as Word Eu = 1023 Volt = Eu*Ref V=Str(Volt) V=Format(v, "0.00") Lcd V ; "Volt"
@Grillmeister Markus
Fusing FUNZT!! Danke das wars was mir hier gefehlt hat! MERCI
Gruß
Markus
@Markus
Stimmt,hab den beknackten Rechenfehler vergessen.leider geht das nur bei dem ADC Wert von 1023, andere Werte werden dann wieder mit den ellenlangen Nachkommastellen ausgegeben.
Gruß
Ratber
Lesezeichen