- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Arduino Bibliothek soll auf andere Bibliothek zugreifen

  1. #1

    Arduino Bibliothek soll auf andere Bibliothek zugreifen

    Anzeige

    Praxistest und DIY Projekte
    Guten Abend,
    ich bin an einem Programm für den Arduino, dass irgendwie nicht funzen will.
    Der Arduino soll ein Steuereingabegerät mit 2 LCDs, 2 Joysticks und 10 Tastern steuern.
    Da das relativ viel Code wird will ich so viel wie möglich in Bibliotheken auslagern
    Nun habe ich mir ein Programm für den Arduino so gedacht:


    Arduino Programm <inlude> Steuereingabegerät.h <include> LiquidCristal.h
    <include> Taster.h
    <include> Joystick.h

    Also implementiert man in das Arduino Programm nur die Steuereingabegerät.h und diese Bibliothek soll sich dann wiederum um das LCD, die Taster und die Joysticks kümmern. Die Taster.h und die Joystick.h und die dazugehörigen cpp Dateien funktionieren auch schon soweit (wenn ich diese im Arduino Hauptprogramm einbinde und Objekte davon erstelle, giebt es keine Fehler). Aber wenn ich jetzt die Steuereingabegerät.h schreibe und von dieser Bibliothek auf die anderen zugreifen will, klappt es noch nicht so richtig. Und zwar hat er ein problem, wenn ich die Objekte von Taster.h bzw. Joystick.h erstellen will. Wenn ich in die Klammern nach dem Objekt den oben definierten Variablennamen schreibe, kommt:
    'variable' is not a type
    Wenn ich statt dem Variablenname eine Zahl einsetzt (also z.B. 2) dann kommt der Fehler:
    error: expected ',' or '...' before numeric constant und error: expected identifier before numeric constant
    Leider habe ich noch kein Tutorial gefunden, in dem erklärt wird wie eine Bibliothek Variablen definiert und mit diesen dann objekte von anderen Bibliotheken erstellt. Vieleicht könnt ihr mir ja helfen
    Vielen Dank schon mal im Vorraus

    #include <Arduino.h>
    #include <Arduino.h>
    #include <BIB_Taster.h>
    #include <BIB_Joystick.h>


    class BIB_Roboterbedienung{

    private:

    int pin_taster_Mod1_R = 0;
    int pin_taster_Mod1_M = 1;
    int pin_taster_Mod1_L = 0;
    int pin_taster_Mod1_O = 1;
    int pin_taster_Mod1_U = 0;

    int pin_taster_Mod2_R = 0;
    int pin_taster_Mod2_M = 1;
    int pin_taster_Mod2_L = 0;
    int pin_taster_Mod2_O = 1;
    int pin_taster_Mod2_U = 0;

    int pin_joystick_Mod1_button = 2;
    int pin_joystick_Mod1_x = 2;
    int pin_joystick_Mod1_y = 3;

    int pin_joystick_Mod2_button = 2;
    int pin_joystick_Mod2_x = 2;
    int pin_joystick_Mod2_y = 3;


    BIB_Taster taster_Mod1_R(pin_taster_Mod1_R);
    BIB_Taster taster_Mod1_M(pin_taster_Mod1_M);
    BIB_Taster taster_Mod1_L(pin_taster_Mod1_L);
    BIB_Taster taster_Mod1_O(pin_taster_Mod1_O);
    BIB_Taster taster_Mod1_U(pin_taster_Mod1_U);

    BIB_Taster taster_Mod2_R(pin_taster_Mod2_R);
    BIB_Taster taster_Mod2_M(pin_taster_Mod2_M);
    BIB_Taster taster_Mod2_L(pin_taster_Mod2_L);
    BIB_Taster taster_Mod2_O(pin_taster_Mod2_O);
    BIB_Taster taster_Mod2_U(pin_taster_Mod2_U);

    BIB_Joystick joystick_Mod1(pin_joystick_Mod1_button, pin_joystick_Mod1_x, pin_joystick_Mod1_y);
    BIB_Joystick joystick_Mod2(pin_joystick_Mod2_button, pin_joystick_Mod2_x, pin_joystick_Mod2_y);


    public:

    BIB_Roboterbedienung();

    String welcheMethode();

    };

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Hallo,

    also dein Post ist wirklich schwer zu verstehen.

    Nach dreimaligem Durchlesen glaube ich, du willst so was in der Art machen
    Code:
    class BIB_Roboterbedienung
    {
    private:
    
      const int pin_taster_Mod1_R = 0;
    
      BIB_Taster taster_Mod1_R;
    
    public:
    
      BIB_Roboterbedienung() 
        : taster_Mod1_R(pin_taster_Mod1_R)
      {}
    ich bin mir aber nicht sicher.

    Man kann Member nicht so initialisieren, wie du das oben gemacht hast. Das geht nur im Konstuktor, entweder so wie in meinem Code in einer Initialisierungsliste, oder im Code des Konstruktors.
    Geändert von Mxt (10.12.2016 um 18:42 Uhr) Grund: Cppy & Paste Fehler

  3. #3
    Also ich will halt in der Bibliothek "Roboterbedienung.h" objekte von der "Taster.h" bzw. "Joystick.h" machen.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Code:
    class BIB_Roboterbedienung {
    private:
      BIB_Taster taster_Mod1_R {0};
      BIB_Taster taster_Mod1_M {1};
    //...
    
      BIB_Joystick joystick_Mod1 {2, 3, 4};
    //...
    
    public:
      BIB_Roboterbedienung() {}
    //...
    
    };
    oder:
    Code:
    class BIB_Roboterbedienung {
    private:
      BIB_Taster taster_Mod1_R;
      BIB_Taster taster_Mod1_M;
    //...
    
      BIB_Joystick joystick_Mod1;
    //...
    
    public:
      BIB_Roboterbedienung() :
        taster_Mod1_R(0),
        taster_Mod1_M(1),
        //...
        joystick_Mod1(2, 3, 4),
       //...
       {}
    
    //...
    };

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Genau,

    wobei ersteres nur bei neueren Arduino IDEs geht, weil das C++11 ist. Ich glaube ab 1.6.9 ist das eingeschaltet.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ja, ich finde gut, was sich da in C++ getan hat. Ab C++11 ist Initialisierung einheitlich. Alles kann alles mit {} initialisiert werden.
    Beispiel:
    Code:
    class Foo {
    public:
      Foo(char c) : _c(c) {}
      char operator() () { return _c; }
    private:
      char _c;
    };
    
    void setup() {
      byte   myBytes[5]    { }; 
      int    myPoints[][3] { { 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 } };
      String myStr         { "HelloWorld" };
      Foo    myFoo         { 'x' };
    
      Serial.begin(9600);
      Serial.println(myBytes[4]);     // prints '0'
      Serial.println(myPoints[1][2]); // prints '6'
      Serial.println(myStr);          // prints 'HelloWorld'
      Serial.println(myFoo());        // prints 'x'
    }
    
    void loop() { }

  7. #7
    Leute Ich bin einfach nur Beeindruckt dass hier so viel Wissen vorhanden ist und ich bin froh dass es euch gibt!
    Also es hat funktioniert! man darf die Werte bzw. die Variablennamen nich in normale klammern setzen sondern muss sie in geschwungene klammern machen.
    Vielen Vielen Dank für eure schnelle und sehr gute Hilfe!!!

Ähnliche Themen

  1. Tutorial: Erstellen einer Arduino-Bibliothek
    Von Sisor im Forum Arduino -Plattform
    Antworten: 22
    Letzter Beitrag: 07.02.2017, 10:14
  2. Sainsmart 4.3 Inch TFT LCD Bibliothek arduino
    Von simonprein im Forum Arduino -Plattform
    Antworten: 3
    Letzter Beitrag: 17.02.2015, 17:33
  3. LCD über I2C C-Bibliothek für AVR
    Von privatestatic im Forum Open Source Software Projekte
    Antworten: 5
    Letzter Beitrag: 29.05.2014, 22:49
  4. NIBObee: beelib - noch einer andere Bibliothek...
    Von bantyy im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 4
    Letzter Beitrag: 01.06.2010, 23:18
  5. DOS - Bibliothek
    Von hacker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 14.04.2006, 02:54

Stichworte

Berechtigungen

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

12V Akku bauen