Pages: [1]   Go Down
Author Topic: Verständnisfrage zum Thema *.pde / *.cpp / *.h  (Read 5493 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 3
Posts: 71
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

ich frage hier einfach mal mit der Bitte um einen freundlichen Verweis auf eine Quelle.

Mir ist zur Zeit der Zusammenhang der Dateien mit den o.g. Dateiendungen überhaupt nicht klar.

Am Beispiel des "Hello.World" Beispiels ist mir dies bewußt geworden.
Ich hatte die LiquidCrystal-Library aufgrund eines Fehlers geändert.
(ein Fehler, der in meinem Versuchsaufbau mit einem TC1604A-01 LCD-Modul beim Anssprechen der 3. und 4. Reihe sichtbar wurde, nicht zwangsläufig ein grundsätzlicher Fehler!).

Diese besagte originale Library (LiquidCrystal.cpp) liegt bei meinem Linux unter /usr/share/Arduino/libraries/LiquidCrystal.

Für meine Zwecke habe ich eine Kopie dieser Datei und auch die zugehörige Header-Datei in einen Ordner in meinem Sketchkook kopiert, in dem auch mein eigenes Beispiel-Sketch "HalloWelt" liegt.
In meinem "HalloWelt" beschreibe ich die 3. und 4. Zeile meines 16x4 Displays und dafür habe ich die "LiquidCrystal.cpp" in der entscheidenden Routine (setCursor) im Offset geändert und sicherheitshalber umbenannt.

Ergebnis:
massenhaft Compiler-Fehlermeldungen, die ich dahin deute, dass der Compiler meine umbenannte *.cpp Datei nicht findet, demzufolge zahlreiche Bezüge fehlen.

Versuchsweise habe ich, entgegen meiner Überzeugung, die originale "LiquidCrystall.cpp" an den entscheidenden Stellen geändert... und prompt läuft es wie erwünscht!

Daraus muß ich schließen, dass die IDE auch bei einem Sketch aus dem Sketchbook grundsätzlich die Libs aus dem originalen Verzeichnis holt... !?

Dennoch bleibt eine weitere Frage:

mein Sketch "Hallo Welt" / das originale Beispiel "HelloWorld" binden beim Kompilieren per $include die Datei "LiquidCrystal.h" ein,
die "LiquidCrystal.cpp" original oder modifiziert rufen ebenfalls per $include diese Header-Datei auf...
wo, wann wird eigentlich die "LiquidCrystal.cpp" mit den Low- und High-Level-Routinen für das LCD aufgerufen???

Gruß
Manfred
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20182
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

.pde sind die Quellcode C-Files Die Du im Editor des IDE schreibst. Dazu kannst Du auch andere Editoren nehmen.
.ccp und .h sind Files der Bibliothek, wobei der Namen der Bibliothek dem in Include des .pde Files entsprechen muß.
Im Headerfile (.h) Dort sind Definitionen der Funktionen aufgelistet.  
Das Sourcer-File hat die Endung .ccp  Darin sind die Funktionen geschrieben und es enthält ein Include auf das Headerfile. Dises file muß den richtigen Namen haben (der Bibliothek im include), da ansonsten Dein Sketch die Bibiothek nicht finden kann.
http://arduino.cc/en/Hacking/LibraryTutorial beschreibt wie man eine Library schreibt.
Grüße Uwe
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 32
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn Du eine eigene Library (.h und .c) im Sketch-Verzeichnis liegen hast musst Du sie mit

Code:
#include "myLib.h"

einbinden. Dann erwartet der Linker sie im selben Verzeichnis.

Code:
#include <myLib.h>

sucht die Datei im Lib-Ordner.
Logged

0
Offline Offline
Jr. Member
**
Karma: 3
Posts: 71
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für die beiden hilfreichen Tips / Hinweise!

Manfred
Logged

Pages: [1]   Go Up
Jump to: