Bibliothek mit Sketch verknüpfen?

Hallo zusammen. Ich weiß nicht wie ich die Frage anders stellen muss um eine hilfreiche Antwort bei google oder hier angezeigt zu bekommen.
Hoffentlich könnt Ihr mir weiterhelfen.

Wenn ich ein Sketch schreibe und Bibliotheken einbinde, muss eine andere Person auf einem anderen Rechner erst die Bibliotheken installieren. Das ist mir klar.

Ich habe schon mal gesehen, dass wenn man das Sketch öffnet, Bibliotheken etc. als weitere Tabs angezeigt wurden.

Ich würde gerne die verwendeten Bibliotheken im Sketch speichern bzw. jene auch als Tab einbinden, so dass man nichts mehr herunterladen oder installieren muss, wenn der Sketch verwendet wird.
Ich kann in der IDE Bibliothek einbinden machen aber dann habe ich da nur die .h Datei drin. Zu der Bibliothek gehört doch auch die .cpp Datei oder nicht?

Also zusammengefasst: Wie kann ich alle im Sketch aufgeführten und nachträglich installierten Bibliotheken integrieren, so dass man das Sketch theoretisch überall / auf einem anderen Rechner (Arduino IDE) öffnen und ausführen kann, ohne dann man erst noch die Bibliotheken installieren muss?

Vielen Dank vorab für Eure Hilfe.

Wie du schon erkannt hast, als Tabs!
Alternativ, eine portable IDE, z.B. auf einem USB Stick weitergeben.

Ja, durchaus üblich.
Aber was hindert dich daran ein Tab mit einer *.cpp Datei anzulegen?

Also das mit den Tabs ist ja super. Wenn das so funktioniert, perfekt. Das wusste ich halt nicht.
Ich wusste auch nicht was ich da alles einbinden muss (.h, .cpp?) und ob es über Bibliothek einbinden richtig ist.

Muss man im Quellcode was umschreiben bezüglich #include < > oder #include " "?

also du kannst ja wie bereits angesprochen alle notwendigen Datein der library auch lokal im Sketch speichern.

Meines Erachtens ist das aber total kontraproduktiv.
Man erstellt ja eine Library genau zum Zwecke den Code immer wieder verwenden zu können.
Wenn du nun die Dateien lokal beim Sketch hast, müsstest du bei einem anderen Sketch wieder diese Dateien doppelt anlegen.

Ich würde das definitiv so nicht machen.
Lieber einen deutlichen Hinweis im Sketch wo die Library zu finden ist - bzw. einen Downloadlink als Kommentar setzen.

Variante 1:
Arduino - IDE öffnen
DATEI speichern - Namen vergeben "testsketch"
Arduino - IDE beenden

Im Browser z.B. das zip-File für den DallesTemperature-Sensor holen:
https://github.com/milesburton/Arduino-Temperature-Control-Library/archive/refs/heads/master.zip

Das zip-File öffen.
Alle .h und .cpp markieren und entpacken nach: Arduino-SketchOrdner/"testsketch"

Arduino-IDE wieder öffnen und den testsketch öffnen - es gibt 2 neue tabs.

Variante 2:
Arduino-IDE als zip downloaden:
https://downloads.arduino.cc/arduino-1.8.19-windows.zip
und irgendwohin entpacken. Bei mir D:/prog/ArduinoPortable
neuen Ordner anlegen: d:/prog/ArduinoPortable/portable

Arduino - IDE starten
Ganz normal arbeiten.
Neue libraries normal installieren.

Da entstehen noch Ordner "logs" und "sketchbook" sowie da drunter "libraries".
Es liegt jetzt alles im ordner "portable"
Diesen "portable" Ordner kannst Du jetzt von einer Installation zur nächsten übertragen.

Woher soll ich das wissen?
Du hast es vor dir liegen.

Und ja.... höchstwahrscheinlich wirst du umbauen müssen.

Darf ich dich fragen, warum du Fragen stellst, auf die du die Antwort schon weißt?
Glaubst du dir selber nicht?
Warum nicht?

Ich kenne die Antworten nicht. Ich weiß nicht wie man die Bibliotheken mit dem Sketch verknüpft oder was man anpassen muss. Darum die Frage an euch.

Ach das ist ja super, dass das quasi automatisch funktioniert. Danke für den Hinweis.

Jeder Sketch wird in einern Ordner mit dem gleichen Namen der .ino gespeichert.
Sind im Ordner mehrere .ino oder .h Dateien Vorhanden werden diese in mehreren Tabs in der IDE geöffnet.
Du kannst Deinen Sketch auch auf mehrere Tabs verteilen. Manchmal gibt das Probleme weil die Reihenfolge der Funktionsdeklarationen falsch ist und der zusammengesetzte Sketch (Alle .ino Dateien in alfabetischer Reihenfolge) nicht kompiliert.

Zum includieren der Bibliothek:

Die Schreibweise in #include<bibliothek.h> sucht die Bibliotkek in den Bibliothakordnern der IDE.
#include"bibliothek.h" sucht die Bibliothek im lokalen Ordner (Sketchordner bzw in dem Angegebenen Path).

Grüße Uwe

Danke Uwe,
also kopiere ich alle .h und .cpp Dateien in den Sketchordner und schreibe das inkludieren so: #include"bibliothek.h" ?

Habe ich es so richtig verstanden?

Ich glaube schon.

Ja.
Sieht dann so aus:

In meiner einstell.h sind alle Definitionen und Voreinstellungen für Pins, Configs für Netzwerk, Arrays etc.pp.....:wink:

TOP! Das ist super wenn es so leicht funktioniert

Aehm ja, und noch einen Nachtrag:
Du kannst in der .h auch z.B. weitere globale Libs einbinden :wink: Damit bleibt der Code vor dem setup() schön übersichtlich.
Na dann - viel Erfolg.

DANKE und vielen Dank für die Hilfe

Also wenn es darum geht, ein fertiggestelltes Programm von einem anderem Rechner aus auf einen Mikrocontroller zu übertragen dann würde es genügen die complilierte Binärdatei zu übertragen.

Wenn das Programm verändert werden soll dann führt natürlich kein Weg dran vorbei das Programm neu zu compilieren und dazu braucht man dann alle Quelltextdateien.
Manchmal haben Bibliotheken Abhängigkeiten also das Bibliothek "A" intern auch noch ein #inklude <andereBibliothek.h> hat.

Die müssen dann alle auch lokal gespeichert werden.
Deshalb halte ich die Variante portable Arduino-IDE einrichten für die bessere Variante.
Aber alles hat seine Vor- und Nachteile. Wenn du einen anderen Mikrocontroller als Arduino Uno/Mega/Nano verwendest dann muss auf dem anderen Rechner auch noch die Boardunterstützung installiert werden.

Bei ESP8266/ESP32 sind das hunderte Megabyte.

Um was geht es dir am Ende eigentlich?
Willst du bei Bekannten die selber nicht programmieren können Softwareupdates machen?

Besteht dieses Softwareupdate nur aus dem Anpassen einiger Einstellwerte oder wird da die Programmfunktionalität geändert?

Einstellwerte ändern ==> Werte über serielle Schnittstelle eingeben können und im EEPROM speichern

Willst du an einem X-beliebigen Rechner an einem eigenen Programm weiter programmieren?
==> Umsteigen auf portable IDE und die portable IDE auf eine externe USB 3.0 SSD kopieren

vgs