Noob-Fragen zu Libraries / Regelmäßige Abfolgen in Library?

Hallo,

ich schaue mir gerade Libraries an und bin auf folgende Frage gekommen - bin aber scheinbar zu blöde das auf englisch zu googlen, finde alles mögliche an Ergebnissen, nur nicht die Antwort die ich suche:

Wenn ich regelmäßig bestimmte Programmfolgen in meinen Sketches habe, zum Beispiel:

Serial.print(cm);
Serial.println(" cm");
lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(LCDText);
  lcd.setCursor(0, 1);
  lcd.print(cm);
  lcd.println(Anhangcm);

Servodaten = analogRead(Servoanschluss);
Servodaten = map(Servodaten, 0, 1023, 0, 180);
Abstandsservo.write(Servodaten);

Kann ich mir dann selbst eine Library mit diesen Abfolgen (bzw. kompletten Sketches) schreiben, dem Kind entsprechend einen Namen geben und dann zukünftig nur noch Verweise auf die Library in die Sketches einhängen?

[u]Der Code soll hier wirklich nur als Beispiel dienen, ob es sinnvoll ist diesen Code einzufügen sei wirklich dahingestellt[/u], ich denke hier aber an Beispielsweise Standardrechnungen für den SR-HC04 (Zeit in cm/m/km/Meilen-Rechnungen, etc) und sonstige Sensoren, bei denen meine Rechnungen noch nicht hinterlegt sind, für mich aber u.U. Sinn machen.

Es ist bisher noch eine fiktive Frage, ich bin mir aber sicher an diesen Punkt zu kommen.

Dies würde eine Menge wiederholenden Textes sparen, da ich aktuell bei jedem Neustart eines Projekts ein altes Projekt öffne, den entsprechen Teil mit Copy+Paste wieder einfüge und am Schluss Zeilen habe, die ich Sketch für Sketch immer wieder wiederhole ...

Falls es funktioniert, hätte es sonstige Nachteile?

Stefan

Ja, das geht.

Nachteil: Du musst evtl. mit einem höheren Speicherbedarf rechnen, als wenn du den Code direkt einsetzt.

https://www.arduino.cc/en/Hacking/LibraryTutorial

Danke! Genau so etwas habe ich gesucht, aber nicht gefunden!

Stefan

Du kannst auch eine Funktion schreiben. Grüße Uwe

uwefed: Du kannst auch eine Funktion schreiben. Grüße Uwe

Das war auch mein Gedanke, nur diese muss er ja auch rein kopieren.

hi,

oder Du schreibst alles in einen eigenen tab, den Du dann in den sketch-ordner kopierst.

gruß stefan

HotSystems: Ja, das geht.

Nachteil: Du musst evtl. mit einem höheren Speicherbedarf rechnen, als wenn du den Code direkt einsetzt.

https://www.arduino.cc/en/Hacking/LibraryTutorial

Hallo zusammen,

ich habe mir mal das sehr interessante Tutorial angeschaut und keinen Hinweis auf "evtl. mit einem höheren Speicherbedarf" gefunden ...

Ich nehme mal stark an, dass man auch einfach Funktionen & Konstanten in eine Library packen kann ?!

Der Vorteil einer Library ist ja - das sollte erwähnt werden - dass man auf alles was dort veröffentlicht in jedem (zukünftigen) Sketch zugreifen kann.

Grüße Harry

HarryR: ich habe mir mal das sehr interessante Tutorial angeschaut und keinen Hinweis auf "evtl. mit einem höheren Speicherbedarf" gefunden ...

Ich nehme mal stark an, dass man auch einfach Funktionen & Konstanten in eine Library packen kann ?!

Der Vorteil einer Library ist ja - das sollte erwähnt werden - dass man auf alles was dort veröffentlicht in jedem (zukünftigen) Sketch zugreifen kann.

Da habe ich es auch nicht her, sondern aus einem älteren Thread, leider finde ich es nicht mehr. :sob:

So wie ich mich erinnere, hängt das vom Overhaed der Libs ab, wie groß der zusätzliche Speicherbedarf ist. Bei kleinen (eine Funktion) Librarys fällt das wohl eher ins Gewicht als bei sehr komplexen.

Ich hoffe nicht, dass ich arg daneben liege, dann bitte ich um Berichtigung.

Und ja, Funktionen lassen sich ideal in Libs packen.

Nein, es gibt keinen Library Overhead!

Ob die Funktionen in einer Datei stecken, oder in tausenden, egal. Der Linker macht das selbe draus. Unbenutzte Funktionen, oder Variablen, werden weg optimiert.

Der "evtl. höhere Speicherbedarf" könnte entstehen, wenn eine "allgemeingültige" Library Funktion mehr macht als man im konkreten Fall bräuchte.

Das wäre allerdings auch der Fall, wenn die zugehörigen Dateien statt in libraries im Sketch Ordner selbst stehen.

Solange an einer Bibliotheksfunktion noch genausoviel laufend geändert wird wie am aufrufenden Test-Sketch, ist dies nach meiner Meinung ein passender Kompromiss: - Schreibe deine Funktion(en) in eine eigene .cpp Datei, - schreib die Deklaration in eine .h Datei - packe beide in den sketch-Ordner.

Nun sind alle (3) Dateien in der Arduino IDE gleichzeitig in separaten Tabs zu sehen.

Deine .cpp und .h Datei kann leicht zu anderen Sketchen hinzugefügt werden (wenn sinnvoll, können dies unterschiedliche Versionen sein)

Genauso leicht kannst du sie, wenn ausgetestet, in einen libraries Ordner packen und sparst dir dann das Kopieren der Dateien.

Der erzeugte Code sollte übrigens in jedem Fall gleich groß sein

Ok, vielen Dank für die Antworten. Dann habe ich das falsch interpretiert oder nur falsch gelesen/verstanden.