Hallo Ich möchte mit der Arduino-IDE 1.8.10 ein file kompilieren, das ich bislang mit AVRStudio 4.18 kompiliert habe (für dieses file habe ich mir ein paar eigene libs mit entsprechenden Header-files geschrieben). Ich habe dieses file mit den zugehörigen selbsgeschriebenen libs und den Header-files in ein Arduino Directory kopiert (Name des Directory und Name des C-files stimmen natürlich überein). Das C-file ist in AVRStudio - Art geschrieben (mit main()) - mein C-file enthält also kein Arduino spezifisches loop() oder setup()). (file aufgebaut wie in https://www.mikrocontroller.net/articles/Umstieg_von_Arduino_auf_AVR) Wenn ich nun das file mittels "Überprüfen/Kompileren" checke, erhalte ich sehr viele Fehlermeldungen, die sich auf meine libs beziehen - siehe Anhang "Fehlermeldungen.txt" ("...undefined reference to..") Im AVRStudio läßt sich mein file problemlos kompilieren. Ich würde es aber gerne mittels Arduino-IDE kompilieren und dann mittels "Hochladen" auf das UNO Board laden. Frage also: wohin müssen die libs und die Header files? Vielen Dank
Ich hab meine im Unterverzeichnis " libraries " des Hauptprogramm von Arduino. Also "c:\Arduino\Arduino.exe" <- Hauptprogramm "c:\Arduino\libraries\" <- libraries "c:\Arduino\libraries\LiquidCrystal" <- libraries LiquidCrystal Darin befindet sich das alles was in den Zip-Päckchen drin war von Github. inkl. Paket-zugewiesene Unterorder. funktioniert so einwandfrei unter Win-7.
Egonwalter M. schrieb: > Das C-file ist in AVRStudio > - Art geschrieben (mit main()) - mein C-file enthält also kein Arduino > spezifisches loop() oder setup()). Die Arduino IDE verwendet selber einen File mit der Funktion main(), die du normalerweise aber nicht zu sehen bekommst. Aus dieser heraus werden loop() und setup() die du in einem Arduino Sketch findest, aufgerufen. Dein Code darf also kein zusätzliches main() enthalten, wenn du ihn in der Arduino IDE übersetzen willst. Sonst bekommst du ein Problem.
Kleiner Nachtrag: Aus vielen Gründen besonders inkompatibel unter Versionen, habe ich für JEDE Arduino-Version ein eigenes Verzeichnis mit eigenen Unterverzeichnissen. Ich habe einige Prg. geschrieben die unter der 1 Arduino-Version 1a laufen und unter den Nachfolger mir die Fehlermeldung um die Ohren fliegen. Deshalb mein Tipp. Dokumentiere am besten im Header als Kommentar mit welcher Version du das erstellt und getestet hast. Ist übrigens mit ein Grund wieso ich auf B4X umgestiegen bin.
Egonwalter M. schrieb: > Frage also: wohin müssen die libs Die eigenen Libs gehören in sketchbook/libraries Dieser Platz ist dafür vorgesehen. Schlaumaier schrieb: > Ich hab meine im Unterverzeichnis " libraries " des Hauptprogramm von > Arduino. Das ist für die mitgelieferten unspezifischen Libraries vorgesehen, und sollte man auch so belassen. Dazu gibt es Hardwarespezifische Libs in den jeweiligen Ordnern mit den Hardware Definitionen. z.B. für AVR ESP STM32 SAM Wolfgang schrieb: > Dein Code darf also kein zusätzliches main() enthalten, wenn du ihn in > der Arduino IDE übersetzen willst. Sonst bekommst du ein Problem. Das ist so konsequent nicht wahr! Wenn man setup() und loop() weg lässt, kann man sehr wohl eine eigene main() verwenden. Muss dann allerdings auch auf einige Arduino Features verzichten. Egonwalter M. schrieb: > (für dieses file habe ich mir > ein paar eigene libs mit entsprechenden Header-files geschrieben). Lesestoff: https://arduino.github.io/arduino-cli/latest/library-specification/ evtl. auch: https://arduino.github.io/arduino-cli/latest/platform-specification/
Schlaumaier schrieb: > Aus vielen Gründen besonders inkompatibel unter Versionen, habe ich für > JEDE Arduino-Version ein eigenes Verzeichnis mit eigenen > Unterverzeichnissen. Das macht man sinnvollerweise portabel, legt also manuell den Ordner \portable\ an, damit die IDE die Finger von den Benutzerordnern lässt. In dem Falle gehören zusätzliche Libs nach ..\Arduino_IDE_189\portable\sketchbook\libraries > Ich habe einige Prg. geschrieben die unter der 1 Arduino-Version 1a > laufen und unter den Nachfolger mir die Fehlermeldung um die Ohren > fliegen. Das Problem kenne ich, dessen Ursache konnte ich nicht ergründen.
Manfred schrieb: > Das Problem kenne ich, dessen Ursache konnte ich nicht ergründen. Dann sind wir schon 2. ;) Aber wie bereits erwähnt, bin ich auf b4x umgestiegen, da habe ich dann eher das Problem eine Arduino-Libs "anzupassen" für b4x. Aber was lüpt das lüpt.
Schlaumaier schrieb: > Deshalb mein Tipp. Dokumentiere am besten im Header als Kommentar mit > welcher Version du das erstellt und getestet hast. Mein Vorschlag: nimm PlatformIO mit VisualStudio Code. Die Versionen der verwendeten Platform (z.B. Arduino) und der Libraries definierst du fest in der platformio.ini Du verwendest die selben Libraries und schreibst denselben Code, nur die Verwaltung und der Editor ist besser. Sieht dann z.B. so aus:
1 | lib_deps_generic_external = |
2 | lsatan/SmartRC-CC1101-Driver-Lib @ 2.5.6 |
3 | joaolopesf/RemoteDebug @ 3.0.5 |
4 | |
5 | #platform_version_esp32 = platformio/espressif32@1.11.1 ; using Arduino core 1.0.4 |
6 | platform_version_esp32 = platformio/espressif32@3.2.0 |
Das ganze funktioniert dann auch auf jedem anderen Rechner, die
entsprechenden Lib Versionen werden beim build automatisch runtergeladen
(Projektspezifisch).
Die Arduino IDE installiert die Libs immer global. Wenn du zwei Projekte
hast welche unterschiedlichen Library Versionen wollen oder das auf
einem anderen Rechner oder 6 Monate reproduzieren willst, hast du viel
Spass.
> Ist übrigens mit ein Grund wieso ich auf B4X umgestiegen bin.
Kenne ich nicht, den Grund kann ich aber gut nachvollziehen!
Michael
:
Bearbeitet durch User
Michael D. schrieb: > Kenne ich nicht, den Grund kann ich aber gut nachvollziehen! www.b4x.com Basiert auf Visual-Basic Technik. Der Trick ist, man kann Arduinos, Raspberry, Android + IOS mit ein und der selben Grundlagen-Software programmieren. Man muss halt nur die passende IDE nehmen und logoweis die passenden Libs einbinden. Das geniale an der Idee ist, man muss NICHT 4 verschiedene Programmiersprachen lernen. Die IDE/Compiler rechnet den Code in die passende Sprache um. Was eigentlich der Hauptgrund war wieso ich umgestiegen bin, BASIC kann ich im Schlaf, C geht so, Java-Zeug nicht wirklich. Ergo nur wie üblich ein paar neue Befehle/Aufrufe lernen und das war's. Kannst dir die HP mal ansehen. Ist alles außer IOS (da will apple kohle) Kostenlos.
Michael D. schrieb: > Die Arduino IDE installiert die Libs immer global. Nur dann, wenn man sie sie lässt. Manfred schrieb: > Das macht man sinnvollerweise portabel, legt also manuell den Ordner > \portable\ an, damit die IDE die Finger von den Benutzerordnern lässt. > > In dem Falle gehören zusätzliche Libs nach > ..\Arduino_IDE_189\portable\sketchbook\libraries > Wenn du zwei Projekte hast welche unterschiedlichen Library Versionen wollen Dann hat man heftigen Ärger. > oder das auf einem anderen Rechner Ich betreibe mehrere PCs und habe kein Problem, die komplette IDE zu kopieren und zu nutzen. > oder 6 Monate reproduzieren willst, hast du viel Spass. Das kann ich bestätigen: Ein Gerät nach zwei Jahren nochmal anfassen, eine simple Korrektur - und schon war der Nachmittag um :-(
Hallo Vielen Dank für Eure Tipps - speziell die von Arduino Fanboy D. (ufuf); mit den von Dir aufgeführten links: Lesestoff: https://arduino.github.io/arduino-cli/latest/library-specification/ evtl. auch: https://arduino.github.io/arduino-cli/latest/platform-specification/ müsste ich wohl in der Lage sein, das mit den libs funktionsfähig zu bekommen.
:
Bearbeitet durch User
Manfred schrieb: > Ich betreibe mehrere PCs und habe kein Problem, die komplette IDE zu > kopieren und zu nutzen. Es gibt auch Projekte wo mehrere Personen zusammenarbeiten (z.B. luftdaten.info). Dort werden builds auch auf einem Build-Server ausgeführt. Da möchte man schon gerne die Library und Platform Versionen im Projekt festgelegt haben. Ich möchte das nicht mehr missen. Michael
Egonwalter M. schrieb: > müsste ich wohl in der Lage sein, das mit den libs funktionsfähig zu > bekommen. Das denke ich auch. Und wenn es damit Probleme gibt, dann lass mir den Kram doch mal zukommen.
Hallo Arduino Fanboy D (ufuf) Arduino Fanboy D. schrieb: > Und wenn es damit Probleme gibt, dann lass mir den Kram doch mal > zukommen. Vielen Dank für Dein Angebot; dank Deiner links habe ich es geschafft - und es funktioniert!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.