- SF800 Solar Speicher Tutorial         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: [GELÖST] Kette_l_bwd = Kettenspeedlinks * -1 nicht möglich?

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    34
    Beiträge
    1.080

    [GELÖST] Kette_l_bwd = Kettenspeedlinks * -1 nicht möglich?

    Anzeige

    E-Bike
    Hallo,

    Ich bekomme ein Fehler bei der Operation:

    Kette_l_bwd = Kettenspeedlinks * -1

    Beide Variablen sind Integer.
    Der Error sagt:

    Invald Datatype

    Code Umfeld:
    Code:
       Rechte_entfernung = Srf02_entfernung(srf02_slaveid_rechts)       'US Rechts
       Linke_entfernung = Srf02_entfernung(srf02_slaveid_links) 'US Links
    
       'Ir_front = Getadc(2)                                     'IR vorn
       'Ir_left = Getadc(3)                                      'IR links
       'Ir_right = Getadc(1)                                     'IR rechts
    
    'Berechnung der Kettengeschwindigkeit
       Kettenspeedlinks = Linke_entfernung * Convert            'Kette  = US Entfernung in cm * 2.55
       Kettenspeedrechts = Rechte_entfernung * Convert          'Kette  = US Entfernung in cm * 2.55
    
    
    
       Kette_l_fwd = Kettenspeedlinks
       Kette_l_bwd = Kettenspeedlinks * -1
       Kette_r_fwd = Kettenspeedrechts
       Kette_r_bwd = Kettenspeedrechts * -1
    
       Kette_l_slow_fwd = Kettenspeedlinks - 40
       Kette_r_slow_fwd = Kettenspeedrechts - 40

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    34
    Beiträge
    1.080
    Komisch und wenn ich sowas mache:

    Dim Kette_l_bwd As Integer
    Kette_l_bwd = -100

    sagt er:
    StoreBit error

    Was bedeutet das?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo,
    welche Bascom Version hast du denn?
    Ich kann dies mit der neuesten Version 1.11.9.8 ohne Fehler kompilieren.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Bei Kette_l_bwd = Kettenspeedlinks * -1 kanns sein, dass Bascom (in älteren Versionen) nicht mit den 2 aufeinanderfolgenden Operatoren klarkommt. Das war (ist immer noch?) ein Nachteil bei Bascom, dass so Dinge wie a+3*5-2 nicht gehen (also nur 1 Operator pro Anweisung).
    Über den Umweg x = -1 und danach Kette_l_bwd = Kettenspeedlinks * x müssts mit deiner Version aber gehen.
    #ifndef MfG
    #define MfG

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    34
    Beiträge
    1.080
    Ich hab Version:
    1.11.9.0

    Das kann ich z.b. Problemlos kompilieren:

    Dim a As Integer
    Dim b as Integer

    a= 2.25465

    b = a * -1

    Das funktioniert...

    Das mit dem Umweg war auch mein Tipp werds jetzt testen.

    Was ich noch prbioert hab ist, dass ich zur sicherheit Kettenspeedlinks in ein INteger umwandle mittels:

    Bei Kette_l_bwd = Int(Kettenspeedlinks) * -1
    Da kommt aber wieder StoreBit error, der andere Fehler ist dann weg...

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Schreib mal den kompletten Programmcode.
    Irgendwie hab ich langsam die Vermutung, dass da weiter oben bei irgend ner DIM o.ä. was faul ist.

    edit: jetzt hats irgendwie die Reihenfolge der Beiträge durcheinandergewürfelt...
    #ifndef MfG
    #define MfG

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    34
    Beiträge
    1.080
    Wenn ich das so mache wie du:

    Minus = -1

    'Sensorenabfrage:
    Rechte_entfernung = Srf02_entfernung(srf02_slaveid_rechts) 'US Rechts
    Linke_entfernung = Srf02_entfernung(srf02_slaveid_links) 'US Links

    'Ir_front = Getadc(2) 'IR vorn
    'Ir_left = Getadc(3) 'IR links
    'Ir_right = Getadc(1) 'IR rechts

    'Berechnung der Kettengeschwindigkeit
    Kettenspeedlinks = Linke_entfernung * Convert 'Kette = US Entfernung in cm * 2.55
    Kettenspeedrechts = Rechte_entfernung * Convert 'Kette = US Entfernung in cm * 2.55



    Kette_l_fwd = Kettenspeedlinks
    Kette_l_bwd = Kettenspeedrechts * Minus
    Kette_r_fwd = Kettenspeedrechts
    Kette_r_bwd = Kettenspeedrechts * Minus


    bekomme ich wieder den invalid Datatype Error

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    34
    Beiträge
    1.080
    Okay mein Fehler....

    Also ich habe die Variable Kette_l_fwd schon als alias für ein Port verwendet. Klar konnte das nicht funktionieren.

    Bei so vielen Variablen Aliasen usw verliert man schon schnell den Überblick

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Wäre ein

    Kette_l_bwd = abs(Kettenspeedrechts)
    Kette_r_bwd = abs(Kettenspeedrechts)

    nicht schneller und hübscher ?

    Günter

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    34
    Beiträge
    1.080
    die ABS funktionien liefert doch immer positive Zahlen oder? Ich will ja negative haben.

    Mein Sub lautet nämlich

    Drive(Byval Speed_l As Integer, Byval Speed_r As Integer)

    bei einer negativen Zahl fährt er Rückwärts

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen