Archiv verlassen und diese Seite im Standarddesign anzeigen : Berechnung in Bascom - kann man etwas verbessern
Andree-HB
28.01.2005, 22:09
ich möchte den Drehwinkel eines Potis (etwa 300°) durch einen analogen Eingang berechnen lassen.
Klappt auch soweit mit meinem erdachtenCode, nur ist mir die Berechnung zu lang - kann man da etwas verbessern/verkürzen ?
Do
Cls
Dim W As Word
Dim I As Byte
Dim G As Word
Dim E As Word
Dim Channel As Byte
Config Adc = Single , Prescaler = 16 , Reference = Off
Start Adc
Channel = 0
W = Getadc(channel)
I = 3.41 'Faktor -> 1023 max. Analog entspricht max. Drehwinkel von 300 Grad'
G = W * I 'Ergebnis Analogwert * Faktor'
E = G / 10 'geteilt durch 10'
Lcd "Drehwinkel = " ; E ;
Cursor Off
Waitms 100
Loop
End
...wünschenswert wäre so ungefähr
Winkel = (gelesener Analogwert * Faktor) : 10
Hallo,
das gleiche Ergebnis müsstest du mit
W = Getadc(channel)
W=W * 0.341
bekommen.
G, I und E brauchst du nicht.
Hilft dir das ?
Gruß Jan
Andree-HB
28.01.2005, 22:29
...nee, macht es nicht - kommt "0" raus, dennoch danke !
...wünschenswert wäre so ungefähr
Winkel = (gelesener Analogwert * Faktor) : 10
Geht das bei Basic etwa nicht!? :-s
Wenn du "i" als Byte definierst, kannst du nicht 3.41 reinschreiben
Das Produkt Faktor / 10 kannst du vorher vom Kompiler ausrechnen lassen.
Für dezimalzahlen wirst du singles brauchen
und das "DO" is ein bißchen weit vorn
mfg robert
Genau!
Dim W As Single
W = Getadc(channel)
W=W * 0.341
Sollte reichen, habs grad im simulator getestet.
MFG Moritz
Andree-HB
31.01.2005, 10:02
So, geht nun auch soweit, nur möchte ich gerne die Variable "Winkel" auf dem LCD gerne auf nur eine Kommastelle anzeigen lassen....
Cls
Do
Dim W As Word
Dim Winkel As Single
Start Adc
W = Getadc(7)
Winkel = W * 0.341
Upperline
Lcd "Analogwert = " ; W
Lowerline
Lcd "Drehwinkel = " ; Winkel ; " Grad"
Cursor = Off
Loop
End
Wo mache ich denn hier wieder einen Denkfehler ?
Winkel = Format(Winkel , " +000.00")
Lowerline
Lcd "Drehwinkel = " ; Winkel ; " Grad"
....klappt so nämlich leider nicht
Hallo,
das erste mal, dass ich auch jemandem helfen kann!
Der Befehl heisst FUSING (ist auch in der Hilfe beschrieben).
Definiere eine neue Variable als String * 10, nutze den Befehl FUSING,
und lass deine neue Variable auf dem LCD ausgeben.
Die Anzahl der # nach dem #. bestimmt, auf wieviele Stellen nach dem Komma Du runden willst.
Gruss Thomas
'Rundet auf eine Stelle nach dem Komma
Dim Gerundet As String * 10
Gerundet = Fusing(winkel , "#.#")
Andree-HB
31.01.2005, 16:02
....und wie bekomme ich den Inhalt der als Single definierten Variable "Wert" in eine String-Variable ?
- sorry, bin programmtechnisch echt `ne Nullpe -
supairheld
31.01.2005, 20:44
Hallo,
hier nochmal ein Code, den du so direkt im Simulator ausprobieren kannst. Statt deinen ADC-Wert hab ich für W einfach mal den Wert 10 definiert.
Gruss, Thomas
Dim W As Word
Dim Winkel As Single
Dim Winkelgerundet As String * 10
Cls
Cursor Off
Do
W = 10
Winkel = W * 0.341
Winkelgerundet = Fusing(winkel , "#.#")
Locate 1 , 1
Lcd "Original: " ; Winkel
Locate 2 , 1
Lcd "Gerundet: " ; Winkelgerundet
Loop
End
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.