-         

Ergebnis 1 bis 5 von 5

Thema: VarSpeedServo Problem beim Kompilieren

  1. #1

    VarSpeedServo Problem beim Kompilieren

    Anzeige

    Hallo zusammen,

    wir benutzen Servomotoren um einen Roboterarm zu bewegen und wollen die Library VarSpeedServo nutzen um die Geschwindigkeit der Servos steuern zu können. Allerdings haben wir ein Problem beim kompilieren des Programmcodes.

    Code:
    #include <VarSpeedServo.h> // hier wird die Servo-Befehls-Bilbliothek eigebunden
                       // diese ist standardmäßig vorhanden und muss nicht extra installiert werden
     
    
    VarSpeedServo servo_armUnten;               
    
    int pos = 0;    // variable to store the servo position 
     
    void setup() // Setup-Funktion die einmalig nach dem Start des Arduino ausgeführt wird.
    { 
    
      servo_armUnten.attach(5);
      
        pos=90;  
        servo_armUnten.slowmove(pos, 1);              // tell servo to go to position in variable 'pos' 
    } // Ende der Serup-Funktion
     
    void loop() // Loop-Funktion, die das Board immer wieder durchläuft
    { 
    
    }
    Unser Board ist das ARM Board Arduino Due. Wenn wir für dieses Board den Code kompilieren wollen bekommen wir folgende Fehlermeldung:

    Arduino: 1.5.6-r2 (Windows 7), Board: "Arduino Due (Programming Port)"

    Build options changed, rebuilding all

    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:158: error: expected constructor, destructor, or type conversion before '(' token
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp: In function 'void initISR(timer16_Sequence_t)':
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:206: error: 'TCCR1A' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:207: error: 'TCCR1B' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:207: error: 'CS11' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:207: error: '_BV' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:208: error: 'TCNT1' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:214: error: 'TIFR1' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:214: error: 'OCF1A' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:215: error: 'TIMSK1' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:215: error: 'OCIE1A' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp: In member function 'void VarSpeedServo::writeMicroseconds(int)':
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:368: error: 'SREG' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:369: error: 'cli' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp: In member function 'void VarSpeedServo::write(int, uint8_t)':
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:414: error: 'SREG' was not declared in this scope
    C:\Users\Stefan\Documents\Arduino\libraries\VarSpe edServo\VarSpeedServo.cpp:415: error: 'cli' was not declared in this scope
    Testweise haben wir das ganze mal für ein beliebiges AVR Board kompilieren lassen, was problemlos funktionierte. Der Fehler liegt also offenbar in der VarSpeedServo Library, da diese anscheinend nur mit AVR Boards funktioniert. Hat jemand eine Idee, wie wir dieses Problem lösen können? Am liebsten wäre es uns, wenn wir die Library einfach irgendwie anpassen könnten, da diese die Geschwindigkeitssteuerung ganz simpel über einen einzigen Parameter ermöglicht.

    Dann viel Spaß beim Grübeln und schonmal vielen Dank für eure Unterstützung.

    Viele Grüße
    Farin

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    falsch : VarSpeedServo servo_armUnten;

    richtig: VarSpeedServo servo_armUnten();

  3. #3
    Danke für den Tipp. Haben wir gerade ausprobiert. Klappt aber leider nicht. Aber die Fehlermeldung ist schonmal kürzer geworden
    Code:
    Arduino: 1.5.6-r2 (Windows 7), Board: "Arduino Due (Programming Port)"
    
    sketch_mar17a.ino: In function 'void setup()':
    sketch_mar17a:12: error: request for member 'attach' in 'servo_armUnten', which is of non-class type 'VarSpeedServo()'
    sketch_mar17a:15: error: request for member 'slowmove' in 'servo_armUnten', which is of non-class type 'VarSpeedServo()'
    Diese Fehlermeldung bekomme ich nun auch, wenn ich das Programm für ein Arduino Uno kompilieren möchte.

    Gruß
    Farin

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.01.2014
    Beiträge
    398
    Blog-Einträge
    3
    Ne, war Schachsinn, die Klammern müssen weg.

    Ich hab mir mal die Library angeschaut und den Fehler festgestellt:
    Die Library Arduino.h wird nicht geladen.
    Also müsstet ihr die Datei VarSpeedServo.h erweitern um den Eintrag:

    #include <Arduino.h>

    Dann steht im dort nachher:
    Code:
    ...
    
    #ifndef VarSpeedServo_h
    #define VarSpeedServo_h
    
    #include <Arduino.h>
    #include <inttypes.h>
    
    ...

  5. #5
    Das hilft leider auch nicht. Die Fehlermeldung bleibt genau die gleiche.
    Wie ich im ersten Beitrag schon geschrieben habe, vermute ich auch keinen grundsätzlichen Fehler im Code, da er ja beim Kompilieren für ein AVR Board fehlerfrei funktioniert. Allerdings besitzen wir ein ARM Board (Arduino Due) und da tritt die oben genannte Fehlermeldung auf. Ich habe mir auch mal die VarSpeedServo.h nochmal angeschaut und denke es liegt an der fehlenden Einbindung von ARM Boards, denn für sämtliche AVR Boards werden diverse Variablen deklariert.
    Nun bin ich allerdings leider auch ziemlicher Anfänger, was Objekt orientierte Programmiersprachen angeht, sodass ich zwar im Groben verstehe, was da in dem Code steht, aber jede einzelne Zeile nachvollziehen bzw. selbst anzupassen, gelingt mir dann eben doch noch nicht.
    Daher hoffe ich noch weiter auf eure Hilfe um das Problem lösen zu können.

    VG
    Farin

Ähnliche Themen

  1. [ERLEDIGT] Problem beim kompilieren mit Programmers Notepad
    Von Delta457 im Forum Robby RP6
    Antworten: 3
    Letzter Beitrag: 24.03.2012, 18:42
  2. Antworten: 10
    Letzter Beitrag: 03.03.2010, 13:21
  3. Problem beim kompilieren!
    Von rp6newbie im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 02.07.2008, 09:31
  4. Problem beim Kompilieren
    Von zizou im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 26.12.2007, 00:01
  5. Problem beim kompilieren:
    Von jagdfalke im Forum C - Programmierung (GCC u.a.)
    Antworten: 21
    Letzter Beitrag: 20.11.2005, 20:44

Berechtigungen

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