Anleitung zur Erstellung von eigener Lib

Hallo zusammen, wer kennt ein gutes Tutorial zur Erstellung von eigener Lib. Ich möchte gern eine eigene Lib erstellen. z.B.: für einen Encoder+Taster, so das ich es öfter verwenden kann. Ich habe zwar schon ein paar Bücher aber der Funke ist noch nicht übergesprungen. Kann jemand helfen? ;D

MfG Marco

Encoder sind nicht leicht auszuwerten. Schon garnicht wenn Interupts ins Spiel kommen.

Du könnstest eine vorhandene Lib kopieren und deinen Bedürfnissen anpassen. Dann lernst du auch, wie eine Lib korrekt aufgebaut wird. Durch die Kopie hast du immer einen funktionsfähigen Stand auf den du zurückgreifen kannst, falls es zu Fehlern kommt.

Libraries sind meistens nicht viel mehr als Klassen oder Ansammlungen von Klassen in C++. Ein Einzelfällen sind es auch nur Header, aber normal erstellt man eine Klasse mit .cpp und .h Datei. Da gibt es massig Anleitungen im Internet.

beginner34: Hallo zusammen, wer kennt ein gutes Tutorial zur Erstellung von eigener Lib. Ich möchte gern eine eigene Lib erstellen. z.B.: für einen Encoder+Taster, so das ich es öfter verwenden kann. Ich habe zwar schon ein paar Bücher aber der Funke ist noch nicht übergesprungen. Kann jemand helfen? ;D

Das Tutorial dazu findest Du im Playground.

Da das Schreiben von C++-Klassen allerdings viel mit objektorientierter Programmierung unter C++ zu tun hat, wären gute Kenntnisse in objektorientierter C++-Programmierung dabei sehr vorteilhaft.

Eine Lib muss nicht unbedingt eine C++ Klasse definieren. Das ist zwar bei Arduino üblich und auch ganz praktisch, damit weniger globales Zeug entsteht. ( Die Ozeane sind schon vermüllt genug )

Die Aufteilung in .h und .cpp Datei ist aber in jedem Fall vernünftig.

Man kann auch erstmal innerhalb des Projekts Sachen in eigene Dateien auslagern.

Es kommt immer darauf an, welche Encoder (mechanisch / optisch) du verwendest bei welchen Geschwindigkeiten.

Wenn ich das im anderen Thread richtig gesehen hat, nutzt du die Standard Encoder Libary aus dem Playground. Darüber gab es schon so einige Diskussionen und gut weggekommen ist die soweit ich mich erinnere nie. Denn die Libary ist eigentlich für optische Encoder geschrieben.

Hatte die glaub selbst einmal getestet, ehe ich das aus dem Link unten angewandt hab.

Es reicht, wenn du einfach nach Libary + avr-gcc suchst. Die .cpp Datei Endung, sofern die überhaupt zwingend ist (.cpp anstatt *.c), sollte auch ohne Probleme zu erstellen sein.

http://www.mikrocontroller.net/articles/Drehgeber

Du solltest dir vorab aber im klaren sein, was gehört in einen Header und was nicht. Auch wenn vieles auch nur mit dem Header geht (Variablen initalisieren, Funktionsblöcke schreiben), hat das da nichts zu suchen.

Danke für die schnellen Antworten. Ich möchte den Encoder mit der Hand drehen. Zur Steuerung von einem Menü. Ich habe nun etwas im Arduino Kochbuch geblättert und eine einfache Abfrage für den Encoder gefunden. Diese möchte ich in einer eigene Lib einbringen und so den Encoder für andere Programme auch nutzen, ohne es jedes mal wieder neu zu schreiben. Im Buch von Erik Bartmann ( Kapitel 10) ist eine Anleitung, zur Erstellung eigener Lib. Wäre es so OK? oder gibt es bessere? Ich suche eigentlich ein Video als Anleitung, kennt jemand so was?

Danke ;D

MfG Marco

Das ist Standard C++ und nichts Arduino spezifisches. Du erstellst eine .h Datei und eine .cpp Datei, packst du einen Ordner und platzierst den ins libraries Verzeichnis.

Du musst aber wissen was in den Header gehört und was in die .cpp Datei. Schau dir vielleicht mal das an: http://forum.arduino.cc/index.php?topic=293432.msg2056472#msg2056472 Das ist nicht umfangreich, aber enthält ein paar Variablen und Methoden

Aber da geht auch eine halbwegs gute Anleitung über Klassen in C++, die auf den Unterschied zwischen Header und Implementierung eingeht (das wird öfters unterschlagen). z.B.: http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Klassen

Konstruktoren und Konstruktoren sind nicht unbedingt nötig. Wenn man keine erstellt weil man sie nicht braucht, werden da automatisch leere erzeugt. Es gibt zwar Fälle wo man da auch selbst welche Erstellen muss auch wenn sie leer sind, aber das spielt hier erst mal keine Rolle. Bei dir wirst du aber wahrscheinlich einen Konstruktor wollen um die Pins beim Erstellen des Objekts zu definieren.