- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 10

Thema: Berechnung in Bascom - kann man etwas verbessern

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.806

    Berechnung in Bascom - kann man etwas verbessern

    Anzeige

    E-Bike
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.806
    ...nee, macht es nicht - kommt "0" raus, dennoch danke !

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780

    Re: Berechnung in Bascom - kann man etwas verbessern

    Zitat Zitat von Andree-HB
    ...wünschenswert wäre so ungefähr
    Winkel = (gelesener Analogwert * Faktor) : 10
    Geht das bei Basic etwa nicht!?
    So viele Treppen und so wenig Zeit!

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    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

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Genau!

    Dim W As Single
    W = Getadc(channel)
    W=W * 0.341

    Sollte reichen, habs grad im simulator getestet.

    MFG Moritz

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.806
    So, geht nun auch soweit, nur möchte ich gerne die Variable "Winkel" auf dem LCD gerne auf nur eine Kommastelle anzeigen lassen....



    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
    Wo mache ich denn hier wieder einen Denkfehler ?


    Winkel = Format(Winkel , " +000.00")
    Lowerline
    Lcd "Drehwinkel = " ; Winkel ; " Grad"


    ....klappt so nämlich leider nicht

  8. #8
    Gast
    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 , "#.#")

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.806
    ....und wie bekomme ich den Inhalt der als Single definierten Variable "Wert" in eine String-Variable ?

    - sorry, bin programmtechnisch echt `ne Nullpe -

  10. #10
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress