- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 64

Thema: fahrzeug mit vier motoren und vier encodern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    vielen dank, botty für den code...

    mache Dir bitte keine gedanken über "zu viel erklärender text" und so, lieber mehr als weniger. Und auch wenn mein englisch ausreichend ist um beim lesen technischer texte halbwegs zu verstehen um was es geht - die deutschen kommentare und erklärungen sind richtig wohltuend...

    für meinen "programmierstand" ist der code recht ambitioniert, ich brauche zeit um alles zu verstehen. Ich versuche so zu lernen, dass ich fremden code zuerst zu erfassen versuche, dann starte und durch veränderungen mir verborgen gebliebenes zu verstehen versuche. Dazu brauche ich - wie schon gesagt - zeit und einen funktionierenden sketch ---- ist da evtl. beim copy und paste etwas verloren gegangen? Oder muss ich irgendwo etwas ergänzen/anpassen?

    schon hier:
    Code:
    enum motoren_e {
      M_VL = 0,   // Motor vorne links
      M_HL,
      M_VR,
      M_HR,
      M_MAX
    };
    die reiehnfolge meiner motoren ist durch die lage des mega und des darauf gesteckten motorshilds eine andere (die zahlen entsprechen den motoren 1 bis 4 des motorshields...):
    Code:
    M_Hl = 1
    M_Hr = 2
    M_Vr = 3
    M_Vl = 4
    die eigentliche zuordnung zu den motorbezeichnungen aus der lib findet aber - wenn ich es richtig verstehe - erst hier statt:
    Code:
    /*
     * Hier werden die PWM Channel - Encoder Pin Paare gesetzt.
     * Restliche Elemente muessen ebenfalls initialisiert werden.
     * Werte pruefen ob sie zu den Namen oben passen.
     * Fuer die externen Interrupts sind die Pins 2,5,18-21
     * erlaubt. Hardware anpassen.
     */
    struct motor motoren[M_MAX] = { 
      { AF_DCMotor(1), 18, 0, 0, 0 }, // M_VL
      { AF_DCMotor(2), 19, 0, 0, 0 }, // M_HL
      { AF_DCMotor(3), 20, 0, 0, 0 }, // M_VR
      { AF_DCMotor(4), 21, 0, 0, 0 }  // M_HR
    };

    Beim versuch den sketch zu kompilieren bekomme ich folgende fehlermeldung:

    Code:
    botty_4_motoren_1.ino: In function ‘void setup()’:
    botty_4_motoren_1.ino:70:62: error: ‘digitalPinToInterrupt’ was not declared in this scope
    botty_4_motoren_1.ino: In function ‘void loop()’:
    botty_4_motoren_1.ino:93:13: error: ambiguous overload for ‘operator+=’ (operand types are ‘String’ and ‘double’)
    botty_4_motoren_1.ino:93:13: note: candidates are:
    In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:192:0,
                     from botty_4_motoren_1.ino:9:
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:108:11: note: String& String::operator+=(char)
      String & operator += (char c)   {concat(c); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:109:11: note: String& String::operator+=(unsigned char)
      String & operator += (unsigned char num)  {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:110:11: note: String& String::operator+=(int)
      String & operator += (int num)   {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:111:11: note: String& String::operator+=(unsigned int)
      String & operator += (unsigned int num)  {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:112:11: note: String& String::operator+=(long int)
      String & operator += (long num)   {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:113:11: note: String& String::operator+=(long unsigned int)
      String & operator += (unsigned long num) {concat(num); return (*this);}
               ^
    botty_4_motoren_1.ino: In function ‘void setupMulti()’:
    botty_4_motoren_1.ino:116:62: error: ‘digitalPinToInterrupt’ was not declared in this scope
    botty_4_motoren_1.ino: In function ‘void loopMulti()’:
    botty_4_motoren_1.ino:157:15: error: ambiguous overload for ‘operator+=’ (operand types are ‘String’ and ‘double’)
    botty_4_motoren_1.ino:157:15: note: candidates are:
    In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:192:0,
                     from botty_4_motoren_1.ino:9:
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:108:11: note: String& String::operator+=(char)
      String & operator += (char c)   {concat(c); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:109:11: note: String& String::operator+=(unsigned char)
      String & operator += (unsigned char num)  {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:110:11: note: String& String::operator+=(int)
      String & operator += (int num)   {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:111:11: note: String& String::operator+=(unsigned int)
      String & operator += (unsigned int num)  {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:112:11: note: String& String::operator+=(long int)
      String & operator += (long num)   {concat(num); return (*this);}
               ^
    /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:113:11: note: String& String::operator+=(long unsigned int)
      String & operator += (unsigned long num) {concat(num); return (*this);}
               ^
    an der verstehe ich nur, dass ‘digitalPinToInterrupt’ nicht deklariert wurde, deshalb die frage ob es beim kopieren passiert sein könnte, oder ob ich woanders suchen muss?
    gruß inka

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    19.05.2015
    Beiträge
    69
    Hallo inka,
    es tut mir leid, dass sich das bei Dir nicht kompilieren läßt und Dich unnötig Zeit kostet.
    Die einzige Erklärung die ich habe ist, das wir unterschiedliche Arduino IDE Versionen benutzen.

    Ich habe das Ganze unter Version 1.6.5 sowohl in meinen Nano hineinbekommen als auch gegen das Mega 2560 er Board fehlerfrei kompilieren können.

    Ich meine das mit dem String ließe sich mit direkter Ausgabe auf Serial umgehen. Was aber an "attachInterrupt()" als Parameter übegeben werden muß wenn "digitalPinToInterrupt()" nicht da ist müßte ich nachschlagen (oder weiß daß jemand anderes hier aus dem Kopf?).

    Die andere Variante, wenn Du 'ne ältere IDE Version benutzt, wäre die neueste Version zu installieren. Das würde ich aber nur machen, wenn andere Projekte von Dir dadurch nicht gefährdet werden, was nur Du abschätzen kannst.

    Zu den Einstellungen:

    Wenn das
    Code:
    M_Hl = 1
    M_Hr = 2
    M_Vr = 3
    M_Vl = 4
    Deine PWM Kanäle sind, sieht die Initialisierung so aus:
    Code:
    struct motor motoren[M_MAX] = { 
      { AF_DCMotor(4), 18, 0, 0, 0 }, // M_VL
      { AF_DCMotor(1), 19, 0, 0, 0 }, // M_HL
      { AF_DCMotor(3), 20, 0, 0, 0 }, // M_VR
      { AF_DCMotor(2), 21, 0, 0, 0 }  // M_HR
    };
    testen kannst Du das indem Du erstmal die Funktionen loopMulti, setupMulti, loop und setup auskommentierst oder löscht.

    der Test ob die Zuordnung stimmt ohne Encoder/Interrupt geraffel sähe dann so aus:

    Code:
    void setup() {
    }
    
    void loop() {
       motoren[M_VL].mot.setSpeed(128);
       motoren[M_VL].mot.run(FORWARD);
    
       delay(1000);
    
       motoren[M_VL].mot.setSpeed(0);
       motoren[M_VL].mot.run(RELEASE);
    }
    und synonym mit den anderen Symbolen aus "enum motor_e" für "M_VL".

    Grüße

    Chris
    Geändert von botty (12.11.2015 um 14:57 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo botty,
    Zitat Zitat von botty Beitrag anzeigen
    Zu den Einstellungen:

    Wenn das
    Code:
    M_Hl = 1
    M_Hr = 2
    M_Vr = 3
    M_Vl = 4
    Deine PWM Kanäle sind, sieht die Initialisierung so aus:
    Code:
    struct motor motoren[M_MAX] = { 
      { AF_DCMotor(4), 18, 0, 0, 0 }, // M_VL
      { AF_DCMotor(1), 19, 0, 0, 0 }, // M_HL
      { AF_DCMotor(3), 20, 0, 0, 0 }, // M_VR
      { AF_DCMotor(2), 21, 0, 0, 0 }  // M_HR
    };
    kann es sein, dass wir hier beide von etwas anderen voraussetzungen ausgehen? Ich habe keine PWM kanäle/pins wie es sie direkt auf dem mega gibt, sondern schliesse meine vier motoren am motorshield (M1 bis M4) an...
    gruß inka

Ähnliche Themen

  1. Vier PWM-Lüfter steuern
    Von Bammer im Forum AVR Hardwarethemen
    Antworten: 22
    Letzter Beitrag: 22.10.2010, 10:21
  2. Vier Servos steuern
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 14.04.2008, 23:17
  3. Wie vier Motoren ansteuern???
    Von cinhcet im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 9
    Letzter Beitrag: 29.06.2006, 12:37
  4. vier L297 und VREF
    Von schmek im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 01.12.2005, 19:47
  5. Bot mit vier Rädern
    Von themaddin im Forum Mechanik
    Antworten: 17
    Letzter Beitrag: 06.11.2005, 21:39

Berechtigungen

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

LiFePO4 Speicher Test