[gelöst] Sketch mit eigenen Klassen erweitern (ohne Library)

Hallo zusammen,

ich bin an einem Punkt angekommen wo ich gerne parallel zu meinem .ino Projekt Klassen verwenden würde.
Ich hab gelesen dass man über den Tab-Mechanismus in der IDE einfach pro hinzuzufügender Klasse zwei Files erstellt. Eine mit Endung .h und eine mit Endung .cpp.

Dann hab ich 3 Tabs:

Nr. 1: Mein Sketch mit .ino als Dateiendung
Nr. 2+3: Meine .h und .cpp File für die eigene Klasse

Funktioniert nicht. Das includen des Headers in der .ino geht noch gut und liefert keinen Fehler. Aber sobald ich eine Instanz der Klasse ins Leben rufen will bekomme ich:

error: 'Xyz' does not name a type

Um Fehler im eigenen Code auszuschließen und für euch reproduzierbar zu machen, hier das gesamte Szenario basierend auf existierendem Beispielcode der für sich eigentlich funktionieren sollte:

  1. Arduino IDE öffnen
  2. AnalogReadSerial.ino Beispielsketch öffnen
  3. Diesen als "TestAnalogReadSerial" Sketch speichern
    --> Das als erste Grundlage damit überhaupt etwas kompilierbares da ist
  4. Zwei neue Tabs anlegen. Den einen als "Morse.h", den anderen als "Morse.cpp". Den Code hab ich hier her: http://arduino.cc/en/Hacking/LibraryTutorial
  5. Im ersten Tab (TestAnalogReadSerial) oben vor der setup() Methode folgende zwei Zeilen einfügen:

#include <Morse.h>
Morse morse(3);

  1. Überprüfen/Kompilieren

--> Fehler: Siehe Bild im Anhang.

Lasse ich die zweite Zeile weg so dass nur noch der Include da ist, gibts keinen Fehler.
Verändere ich den Include in etwas ungültiges (z.B. "#include <MorseXXX.h>"), dann gibt's wieder einen Fehler.

Für mich heisst das: Der Include funktioniert tendentiell. Aber irgendwas geht noch schief.

Wenn ich die .cpp und .h File in ein eigenes Verzeichnis in den "libraries" Ordner stecke dann funktioniert es. Aber ich möchte gar keine separate Library daraus machen.

Any ideas?

Gruß
Alex

Probier mal statt:

#include <Morse.h>

mal das hier:

#include "Morse.h"

Dann dürfte es gehen
Gruß
DerDani

tuxedo:
Any ideas?

Poste ein (möglichst einfaches) Beispiel als ZIP-Archiv!

volvodani:
Probier mal statt:

#include <Morse.h>

mal das hier:

#include "Morse.h"

Dann dürfte es gehen
Gruß
DerDani

Oh man.. Danke. Das war's. Damit funktioniert obiges Beispiel nun.

Gibt's irgendwo eine Doku zum technischen Hintergrund die ich mir dazu anschauen könnte?

Wie du schon festgestellt hast sucht die IDE bei <> in den Librarie Verzeichnissen org in der IDE oder im Librarie Verzeichnis in deinem Voreingestellten Sketch Ordener. mit "" schaut er in dem Ordner nach wo sich die Sketch befindet.
Gruß
DerDani

Wenn das schon alles ist. Okay. Dachte da gibt's mehr zu diesem Thema in das man sich einlesen kann.

Danke mal soweit.

Gruß
Alex

P.S. hier die gleiche Frage mit gleichem Ergebnis, aber mit ggf. ein paar Details mehr: c++ - What is the difference between #include <filename> and #include "filename"? - Stack Overflow