Hilfestellkung bei einer Lib.

Ich habe mir die MAX 72** Library angepasst damit man echtes SPI nutzen kann,(für den MAX7221) damit man das flacken der LED minimiert. Jetzt habe ich aber folgendes Problem. Wenn die Zeilen #include <SPI.h> bzw. #include "SPI.h" in den header mit reinbringe bekomme ich immer beim Komplieren des Fehler ähnlich "no such file in the directory", wenn ich jetzt die beiden Files der SPI Lib mit in meinen Ordner packe kann ich ohne Fehler komplieren. Hat den jeman ein IDEE wie ich dies lösen kann. Würde das gerne auch in den Playground packen habe aber keinen Schimmer wie. Wenn ich an der entsprechenden Stelle auf edit drücke habe ich zwar das Edit fenster kann aber absolut nichts damit anfangen.
Ich packe mal meine Lib als anhang dran

LedControlSPI.zip (5.99 KB)

Das ist ein Fehler in der IDE. Ich sag ja schon immer, daß die IDE suboptimal ist. Du kannst den Pfad vollständig angeben, aber das funktioniert dann nur bei Dir bzw. bei allen die genau die eine ähnliche Direktorystruktur haben wie Du.

Irgendwo (unter Linux wäre es /usr/share/arduino) gibt es ein arduino-Verzeichnis, in dem sich auch die bereits enthaltenen Standardbibliotheken im Unterverzeichnis "libraries" befinden, also z.B. libraries/SoftwareSerial/SoftwareSerial.h und ...cpp.

In diesem libraries-Verzeichnis ein neues Verzeichnis "SPI" anlegen, dort dann SPI.h und SPI.cpp reinkopieren.

Wichtig ist, daß das Unterverzeichnis genauso heissen muß, wie die .h und .cpp Dateien, in diesem Fall also "SPI/SPI.h". Groß-/Kleinschreibung beachten.

So funktioniert es hier problemlos mit Linux.

Gruß, mmi.

auch mit Win.
Grüße Uwe

Hallo,

ich habe Deine Lib mal ausprobiert, aber SPI.h + SPI.cpp aus dem Ordner genommen - so bekomme ich den gleichen Fehler wie Du. Dann habe ich in Deinen Dateien etwas rumgepfuscht:
LedControlSPI.h : #include "SPI.h" auskommentiert
LedControlSPI.cpp : #include "SPI.h" über #include "LedControlSPI.h" hinzugefügt
dann muss die SPI-Bib noch im Sketch aufgerufen werden..mein Test-Sketch sieht so aus:

#include "SPI.h"
#include "LedControlSPI.h"

void setup(){
}

void loop(){
  LedControl(9,1);
}

und wird fehlerfrei übersetzt.
Du kannst den Fehler so umgehen und musst die SPI-Lib nicht extra mitliefern. Ich halte das für eine bessere Lösung als das rumkopieren der Bibliothek wie es mmi vorschlägt, weil dies ev. für weniger Computer-affine Leute wieder zu kompliziert wird und das auch nicht auf jedem OS so funktioniert. Ich habe zwar auch ein *nix, aber keinen Ordner /usr/share/arduino.

Ich hatte es so verstanden, daß die Bibliotheken anwendungsübergreifend, also global zur Verfügung stehen sollen. Dann wäre es aber wie von mir beschrieben der empfehlenswerte Weg: Man hat alle Bibliotheken übersichtlich an einem Ort und muß keine extra Pfade setzen.

Naja, Hauptsache es funktioniert! :wink:

Gruß, mmi.

P.S.:
Was Linux betrifft: Entweder man installiert die Arduino IDE über einen Paketmanager (sofern möglich) oder manuell. Das Hauptverzeichnis kann im ersteren Fall je nach Distribution dann auch (etwas) unterschiedlich ausfallen.

mmi:
Ich hatte es so verstanden, daß die Bibliotheken anwendungsübergreifend, also global zur Verfügung stehen sollen. Dann wäre es aber wie von mir beschrieben der empfehlenswerte Weg: Man hat alle Bibliotheken übersichtlich an einem Ort und muß keine extra Pfade setzen.

So habe ich das ebenfalls verstanden, normalerweise heisst es aber immer, man solle Bibliotheken in den Order für Sketche/libraries/ kopieren. Libraries - Arduino Reference
Wenn man sie zu den original libraries kopiert, so wie Du das vorschlägst, ist das zwar eine elegante Lösung, aber was wenn man die IDE neuinstalliert?
Wird seine Bibliothek dann gelöscht? Ich weiss es nicht, habe kein Arduino unter Win, ein Linux-System hab ich gar nicht.
Auf Mac OS X ist es ganz anders, da stecken die (original) Bibliotheken im Programm mit drin, wenn ich da etwas hinein kopiere ist es 100% bei nächsten Arduino-Update weg, wenn ich nicht aufpasse und die Sachen vorher wieder raus hole....und ich bin sicher nicht der einzige vergessliche Mensch :wink:
Nachher fragt man sich dann "Wie hiess das Ding noch mal?" und "Wo war es bloss her?"
Mein Vorschlag war dazu gut, um das zu vermeiden und halt um den "normalen" Ort zum Ablegen der Bibliotheken beizubehalten. Dein Vorschlag ist zweifellos der elegantere :wink:

Beim Deinstallieren müsste man dann aufpassen - da hast Du natürlich völlig recht.

Wenn es arduinoseitig anders vorgesehen ist, sollte das natürlich auch die vorzuziehende Lösung sein - ich habe das ehrlich gesagt nie so genau gelesen - als Linuxer hat man sich ans "Hacken" gewöhnt. :wink:

Gruß, mmi.

Der IDE wird unter Windows nicht installiert sondern entkomrimiert. Es ist kein problem mehrere Versionen nebeneinender zu haben. Die Bibliotheken kann man einfach von der alten Version zur neuen in die LIBRARIES-ordner kopieren.
Viele Grüße Uwe

@UweF.

Ist das bei der 1.0 denn auch so ? Mich hat die automatische Software Update Warnung in der 022 mißtrauisch gemacht. Habe ich das richtig verstanden, dass keinerlei Pfade in den WIN Konfigurationsdateien geschrieben werden, ich also wirklich nebenan eine 1.0 haben kann und die 022 funzt weiter ? dummfrag :wink: Ich trau mich nicht das auszuprobieren :.

df6ih:
Ich trau mich nicht das auszuprobieren

Feigling! :wink: Ich habe auch mehrere Arduino-IDEs nebeneinander, klappt prima. Immer eine alte 0022er und die neue 1.0, dazu noch bei mir ein "Arduino 1.0 Testgelände" zum probieren. Selbst auf meinem Bürorechner ist trotz eingeschränkter Rechte die 1.0 drauf, eben weil nichts installiert werden muss, sondern wie angesprochen nur entpackt wird.

Ja so muss das sein!!!!
Ein Frage und innerhalb kurzer Zeit antworten. Ich habe fast alle Varianten ausprobiert nur diese von Mime nicht. Aber danke schön!
So wie bekomme ich das noch in den Playground, ich denke es wäre schön diese richtig Lib andern zur verfügung zu stellen.