- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Tutorial: Erstellen einer Arduino-Bibliothek

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    IRControl.cpp:1:22: fatal error: IRremote.h: No such file or directory
    Der Compiler meckert hier das er diese Datei nicht finden kann, bist du dir sicher das du die Library richtig installiert hast? Funktioniert das einbinden bei anderen Programmen?

  2. #2
    Unregistriert
    Gast

    Rotes Gesicht Einbinden weiterer Header gelöst

    Danke nochmal für die Rückantwort.

    Das Einbinden über <IRremote.h> hat nicht geklappt.

    Habe die IRremote.h und die CPP sowie die zugehörigen Dateien in mein Library-Verzeichnis "IRControl" kopiert.
    In der IRControl.cpp habe ich dann oben gleich diese direkt so eingebunden:

    #include "IRControl.h"
    #include "IRremote.h"
    #include<Arduino.h>

    Dann war es noch wichtig alle weiteren Dateien über Drag&Drop auf die Arduino-IDE zu ziehen damit die gefunden werden.
    Jetzt läuft es soweit.

    Das Einzige was mich noch etwas nervt, ist das im Hauptprogramm das Objekt sofort
    instanziiert wird. In Java kann man es immer erst deklarieren und danach mit 'new' instanziieren.
    Habe es jetzt mit static in den Loop() gesetzt. Da sollte es nur einmal erzeugt werden und ist verfügbar.
    Vorerst ist es aber mal soweit ok. Hatte gegen 2009 aufgehört C++ zu programmieren.

  3. #3
    Unregistriert
    Gast

    Idee Kleine Ergänzung

    in RGBLed.h:
    ---------------

    #define COL_black 0x000000
    #define COL_silver 0xC0C0C0
    #define COL_gray 0x808080
    #define COL_white 0xFFFFFF
    #define COL_maroon 0x800000
    #define COL_red 0xFF0000
    #define COL_purple 0x800080
    #define COL_pink 0x9B000A
    #define COL_fuchsia 0xFF00FF
    #define COL_green 0x008000
    #define COL_lime 0x00FF00
    #define COL_olive 0x808000
    #define COL_yellow 0xFFFF00
    #define COL_navy 0x000080
    #define COL_blue 0x0000FF
    #define COL_teal 0x000015
    #define COL_aqua 0x00FFFF



    public:

    void setRGBhex(unsigned long col) ;

    ---------------

    in RGBLed.cpp

    void RGBLed::setRGBhex(unsigned long col)
    {

    byte r=0, g=0, b=0;
    b = (byte)(col & 0x0000FF);
    g = (byte)((col>> & 0x0000FF);
    r = (byte)((col>>16) & 0x0000FF);

    analogWrite(redPin, r);
    analogWrite(greenPin, g);
    analogWrite(bluePin, b);
    }

  4. #4
    Hallo zusammen,
    ich hab da mal 2 grundsätzliche Fragen:
    wofür sind die beiden ersten Zeilen der h Datei und welche Bedeutung haben die Unterstriche vorn und hinten?
    Wie bekomme ich einen oder mehrere Rückgabewerte aus der Bibliothek in die ino Datei?

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Ich nehme mal an du meinst diese Zeilen:

    Code:
    #ifndef __RGB_LED__
    #define __RGB_LED__
    ...
    #endif
    Die Dinger mit einem # voran heissen Preprozessor-Makros und werden vor dem eigentlichen Compilervorgang bearbeitet. #include file.h heisst ja nichts anderes als das vor dem Compilervorgang der ganze Inhalt des einzubindenden Files an dieser Stelle eingefügt wird. In der dieser Skizze wäre der Inhalt von header1.h im Endeffekt 2 mal eingefügt -> mag der Compiler nicht.

    Klicke auf die Grafik für eine größere Ansicht

Name:	Unbenannt.png
Hits:	16
Größe:	5,4 KB
ID:	30701

    Mit diesen so gennanten "Include Guards" wird das ganze verhindert.

    Mit dem ersten #ifndef __RGB_LED__ wird abgefragt ob __RGB_LED__ bereits irgendwo #definiert wurde (if not defined=wenn noch nicht definiert). Da dies beim ersten Mal noch nicht der Fall ist wird der nachfolgende Code ebenfalls "angeschaut" und __RGB_LED__ in der nächsten Zeile "definiert" und der Code dann ganz normal weiter behandelt. Beim nächsten Einbindevorgang ist __RGB_LED__ aber schon "definiert" und der Code zwischen #ifndef und #endif wird einfach übersprungen.

    Wie bekomme ich einen oder mehrere Rückgabewerte aus der Bibliothek in die ino Datei?
    Wie meinst du das? Die Funktionen aus der Biliothek kannst du ja ganz normal aufrufen und auch Werte z.b. mit return zurückgeben.

  6. #6
    Hallo Chypsylon,
    erstmal herzlichen Dank für das superschnelle Feedback.
    Die Rückgabe habe ich hinbekommen, aber wofür ist denn diese Makrodefinition, es geht doch auch ohne. Gehören die Unterstriche denn zum Namen?
    Meine h Datei sieht jetzt so aus und klappt:

    //#ifndef __uliTesttLib_h__
    //#define __uliTesttLib_h__

    #include <Arduino.h>

    class uliTestLib{
    private:
    byte pin1;
    byte pin2;
    byte pin3;
    public:
    uliTestLib(byte pin1, byte pin2, byte pin3);
    void setRGB(byte r, byte g, byte b);
    void blinken(char color, byte times, unsigned int ms);
    int zurueck();
    };
    //#endif

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Die Unterstriche sind nur Konvention, damit gleich klar ist das es ein Includeguard ist.

    Klar geht es jetzt auch ohne, du includest dein .h file vermutlich auch nur einmal. Aber wenn du jetzt z.b. eine zweites seperate Klasse "LedControl" mit eigenem Header-File machst dann könntest du dort #include uliTesttLib.h machen und die setRGB() Funktion von dort verwenden. Wenn du diese zweite Bibliothek dann aber ebenfalls in deinem main-file (.ino) einbindest (#include) hast du über diese zweite Klasse dann nochmals deine uliTesttLib.h eingebunden und dadurch wäre der Code dann zweimal vorhanden.

    Diese Includeguards in Header-Files einzubauen gehört einfach zum guten Stil und man erspart sich dann selbst später viel Arbeit bei der Fehlersuche. "Richtige" IDEs und gute Editoren fügen Includeguards (und anderes Standardzeugs) automatisch ein, so dass man sich nicht darum kümmern muss.

  8. #8
    aha

    Danke

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    noch eine frage:

    diese funktion wird in der "L293D_V2_fahren.cpp" so definiert:

    Code:
    void vorwaerts(void)
    {
      motor_hl->setSpeed(100);
      motor_hl->run(FORWARD);
      encoder_1_auslesen();
      if (summe_1 >= 100)
      {
        summe_1 = 0;
        vorwaerts_1 = 0;
        motor_stop();
      }
    }
    und ist so deklariert in der "L293D_V2_fahren.h:"

    Code:
    #ifndef L293D_V2_FAHREN_H_
    #define L293D_V2_FAHREN_H_
    
    void vorwaerts(void);
    
    #endif /*L293D_V2_FAHREN_H_*/
    sie wird ganz normal aufgerufen in einer *.ino datei mit "vorwaerts()" und der motor dreht sich so lange, bis die vorgegebene anzahl der ticks, die vom encoder mit "encoder_1_auslesen()" ausgelesen wird, auch erreicht wird. Das funktioniert so auch ganz gut...

    Ich möchte das ganze nun etwas komfortabler, flexibler und auch praxisnäher machen, denn die anzahl der ticks, die zeit in sec. oder was auch immer (die jetzt hier starr vorgegeben sind) soll später von dem auslesen der entfernung zum hindernis (z.b.) abhängig an die funktion weiter gereicht werden...

    Nach unzähligen versuchen und Suche nach "wertübergabe an eine funktion" in unzähligen variationen hier die frage: Wie mache ich das? Es ist anders/komplizierter, als wenn die funktion in der *.ino datei selbst wäre und nicht in der lib ausgelagert, ich muss ja auch die deklaration der funktion in "L293D_V2_fahren.h" anpassen...
    gruß inka

  10. #10
    Unregistriert
    Gast

    Unglücklich Geht nicht!

    Bei mir kann ich es zwar rüberladen, passiert aber nichts...

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. problem bei der verwendung einer twi bibliothek (avr-gcc)
    Von avrrobot im Forum Software, Algorithmen und KI
    Antworten: 18
    Letzter Beitrag: 17.01.2011, 20:13
  2. NIBObee: beelib - noch einer andere Bibliothek...
    Von bantyy im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 4
    Letzter Beitrag: 01.06.2010, 22:18
  3. Einbinden einer Bibliothek in ein Assembler Programm
    Von EGS-3 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 12.07.2006, 21:55
  4. Gibt es eine Bibliothek für das Erstellen von Bildern ?
    Von terny im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 12.09.2005, 08:15
  5. Fragen zur Erstellung einer Eagle Bibliothek
    Von Arme Sau im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 3
    Letzter Beitrag: 18.12.2004, 08:56

Berechtigungen

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

Labornetzteil AliExpress