- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oratus sum
    Registriert seit
    25.12.2006
    Ort
    Wien
    Alter
    33
    Beiträge
    1.080
    Blog-Einträge
    1

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

    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
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    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
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    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
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    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
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    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
    33
    Beiträge
    1.080
    Blog-Einträge
    1
    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
  •  

Labornetzteil AliExpress