Frage, geht es nur mir so oder ist das Thema bekannt?
(Ergänzung: arbeitet derzeit mit der IDE 2 nur mit Arduino Nano ESP32.)
Ich habe recht häufig das Problem das bei neu angelegten Sketches beim Kompilieren der Fehler kommt die inkludierten Libs wären nicht vorhanden. Wiederholtes starten der Kompilierung hilft nicht.
Bsp., hier wird angeblich die ArduinoOTA.h nicht gefunden. Betrifft fast immer den Moment der Programmierung neu inkludierter Libs. Also nicht neu auf dem Rechner sondern die Zeile #include neu im Sketch hinzugefügt.
Alternativen für Wire.h: [Wire@2.0.0]
ResolveLibrary(Wire.h)
-> Kandidaten: [Wire@2.0.0]
C:\Arduino IDE v2.3.2\portable\sketchbook\calibrate_LSM303_001\calibrate_LSM303_001.ino:6:10: fatal error: ArduinoOTA.h: No such file or directory
#include <Wire.h>
^~~~~~~~
compilation terminated.
exit status 1
Compilation error: ArduinoOTA.h: No such file or directory
Die ist aber definitiv vorhanden. Speichere ich den Sketch, schließe die IDE und öffne sie erneut kompiliert es ohne jedes Problem.
C:\users*** \ .arduinoIDE <- der Punkt ist absicht (die Leerzeichen sind wegen den Forum-Editor.
C:\users*** \ app-data\local\arduino15
Er will BEIDE Ordner.
Was Libs angeht. DA kann man den Such-Ordner verstellen.
Dazu unter Einstellungen den Sketchbook-Ordner ändern.
Dies ist der neue Hauptordner.
Darunter legt man ein Ordner mit den Namen seines Projekt an.
z.b. so :
Projektname : baui
C:\meine_projekte\baui\baui
C:\meine_projekte\baui\libraries
In Sketchbook muss stehen : C:\meine_projekte\baui
Projektname : bau2
C:\meine_projekte\bau2\bau2
C:\meine_projekte\bau2\libraries
In Sketchbook muss stehen : C:\meine_projekte\bau2
Durch diese Anordnung gelten für Baui + Bau2 jeweils andere Libs.
Der Vorteil dieser Anordnung ist. Das man das Risiko vermeidet das durch Libary-Update das Projekt nicht mehr Lauffähig ist.
Nachteil:
Wechselt man das Projekt muss man den Sketchbook-Ordner neu einstellen, die IDE beenden, und dann neu starten. Grund: Die IDE liest dann den passenden LIBS Ordner ein, und will sehr wahrscheinlich den Updaten.
Und man hat alle Libs zieg man auf der Festplatte.
Wie man da vorgeht muss jeder selbst entscheiden.
Ich persönlich habe ein Libs-Ordner gezippt und stelle/kopiere mir pro Projekt in den Projekt-Ordner nur die Libs rein die ich wirklich brauche. Was das ganze auch noch minimal schneller macht.
Und der gesamte Rest ist bekannt, aber am Thema vorbei.
Da mit dem Compile-Vorgang die includierten Libs eingesammelt werden, wird hier der Cachemechanismus evtl. einen Streich spielen und nicht bemerkt werden, dass eine lib dazu gekommen ist.
Ich würde in dem Fall in das jeweilige Projektverzeichnis gehen und sehen, was da eingesammelt wurde und beim nächsten Kompilevorgang den Unterschied feststellen.
Sollte das reproduzieren -> Issue
Das Problem ist, wenn libs nicht im "Norm-Ordner" liegen, kommt es vor das Updates/neue Libs nicht "eingebucht" werden. Deshalb muss man dann die IDE beenden und neu starten.
DANN liest er sich alles neu zusammen und das Problem ist weg.
Hatte ich einige Male schon.
In meinen Augen gibt es einige Bugs im Zusammenhang mit Verzeichnissen. Einige davon sollten aber beseitigt sein.
genau, es geht nicht um neu/frisch installierte Libs oder dergleichen. Die Libs sind entweder schon lange installiert, bzw. werden von der IDE selbst mitgebracht. Das Einzige was ich mache ist, die Zeile #include im Sketch frisch zu schreiben von einer Lib, die wie gesagt, schon lange vorher vorhanden ist, auch vor dem Letzten öffnen der IDE. Wenn die IDE dann mit dem frischen #include ein Problem hat, hilft schließen und neu öffnen. Ab dann gibt es kein Problem mehr. Bis ggf. zur nächsten frisch getippten Zeile #include.
Könntest den richtigen Riecher haben, kann mit einem Cache o.ä. zusammenhängen. Ich werde der IDE auch etwas mehr Zeit geben, vielleicht macht die was im Hintergrund. Ich werde noch weiter das Problem provozieren und dann ein Ticket eröffnen.
Wie ich raushöre, bin aktuell nur ich davon betroffen.
Nein.
Zum compilieren werden die libs eingesammelt.
Und jetzt kommt der springende Punkt:
zum einsammeln wird der im Cache befindliche Sketch benutzt.
Danach wird alles im Verzeichnis reingeschrieben, auch der aktuelle Sketch, und dann dem Compiler vorgelegt, der aus dem Verzeichnis kompiliert.
So zumindest meine logische Auffassung.
Es gab doch in der 1er die Möglichkeit der Debugausgaben im Terminalfenster mit einer spezellen angepassten IDE - .exe.
Evtl. gibt es einen Parameter mit dem man das auch in der 2 aktivieren kann.
Dann sieht man die Abfolge.
Nicht unbedingt. Ich glaube , ich hate mal ne ähnliche Situation. Und ich denke auch, es könnte mit dem Cache zusammenzängen. Die IDE2.x.x (ichnutze fast nur noch die 2.3.2 brach ja ofte nach dem ersten Kompiliere wesentlich weniger Zeit, wenn sie wider neu compiliren muss, Weil sie anscheinnd sehr vil aus dem Cache nimmt, nach erstmligem compilieren. Bei mir war es jedoch so, dass ich aus nem anderen grund grad die IDE kurz geschlossen habe, und nacher wieder geöffnet, darum ist mir das dann nicht weiter als fehlf^verhalten aufgefallen und ich bin dem nicht weiter nachgegangen. Dazu kam, dass ich in letzter zeitnicht ganz soviel mit Arduino gemacht habe, darum fiel dieser Fehler bei mir nicht weiter ins Gewicht.
Weil ich recht gerne und inwischen auch fast ausschließlich die 2er IDE verwende hab' ich das eben mit bestehenden Sketchen und installierte Libs probiert:
Debugmöglichkeiten der IDE was diese selbst so treibt sind mir bis heute keine bekannt. Vielleicht wenn man die IDE-CLI verwendet. Theoretisch, ohne das ich es weiß, sollten die gleichen Ausgaben erscheinen wie innerhalb der grafischen IDE wenn man alle Ausgaben auswählt. Mal sehen was noch so möglich ist.
Ein möglichen Ordner :
C:\Arduino IDE v2.3.2\portable\libraries würde ebendfalls durchsucht werden. Und wenn dort eine library drin ist, die im Konflikt mit C:\users\girly\appdata\local\arudino15\libraries steht, gibt es Stress.
Doch ist es.
Ich versuche ja jeden zu verstehen. Aber hier weiß ich nicht was das werden soll. Alle Libs sind im richtigen Ordner. Alle Sketche sind im richtigen Ordner, Standard "sketchbook". Alle nachinstallierten Libs darin im Unterordner "libraries". Wenn das alles nicht so wäre würde nichts funktionieren. Das Eingangsbsp. verwendet sogar eine Standard Lib der IDE, die muss am richtigen Platz sein, was sie auch ist.
Ich denke eher du hast das Problem nicht verstanden.
Jetzt erkläre ich dir nochmal die Fehlermeldung: C:\Arduino IDE 2.3.2\portable\sketchbook\calibrate_LSM303_001\calibrate_LSM303_001.ino:6:10: fatal error: ArduinoOTA.h: No such file or directory
Das hat nichts mit dem Speicherort des Sketches zu tun. Sie besagt nur das die in Zeile 6 in der Datei calibrate_LSM303_001.ino angegebene Lib, die dort inkludiert werden soll nicht gefunden wird. In besagter Zeile 6 steht #include <ArduinoOTA.h>
Warum die nicht gefunden wird steht nicht da. Das kann Hunderttausend Gründe haben.
Die nächste Logik wäre, wenn das was du ansprichst hier zutreffen würde, dann könnte ich die IDE schließen und öffnen bis ich schwarz werden würde und könnte nie kompilieren. Das trifft aber alles nicht zu. Das muss man doch verstehen wollen. Weil ich weiß (wir wissen) das nach schließen und öffnen der Spuk vorbei ist, kann es nicht an irgendwelchen falschen Speicherorten liegen. Das ist doch logisch, oder nicht?
Der offizielle Ordner hat 0,nix mit den Ordner zu tun in den man das Programm installiert.
Schau mal in
C:\users\girly\appdata\local\arudino15\libraries
Girly = dein eingeloggter Username. !!!
DORT sind die Libarys und alles was Normal dabei geliefert wird.
Ich weiß das 1000% weil ich die IDE auch nicht in diese Ordner installiert habe , und den Stress schon hatte. Die Installation ist so flexible wie ein Stahlträger.
Liegt meiner Meinung daran das die hauptsächlich linux-Like sind. Da sind Installationen ab Hauptverzeichnis VERBOTEN.