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
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 ?
Code: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
...nee, macht es nicht - kommt "0" raus, dennoch danke !
Geht das bei Basic etwa nicht!?Zitat von Andree-HB
So viele Treppen und so wenig Zeit!
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
So, geht nun auch soweit, nur möchte ich gerne die Variable "Winkel" auf dem LCD gerne auf nur eine Kommastelle anzeigen lassen....
Wo mache ich denn hier wieder einen Denkfehler ?Code: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
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
Code:'Rundet auf eine Stelle nach dem Komma Dim Gerundet As String * 10 Gerundet = Fusing(winkel , "#.#")
....und wie bekomme ich den Inhalt der als Single definierten Variable "Wert" in eine String-Variable ?
- sorry, bin programmtechnisch echt `ne Nullpe -
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
Code: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
Lesezeichen