hab momentan folgendes Problem: Ich versuch die Lib LiquidCrystal.h in meine eigene Lib (MenuFrame.h) einzubinden. Bekomme allerdings beim compelieren einen Fehler. Jetzt hab ich im Netz schon was über das einbinden von Libs in eigene Libs gelesen und erfahren, dass die Arduino IDE damit wohl nicht ganz klar kommt. Hat jemand ne Lösung um das Problem zubeheben?
Naja, wenn Du die Fehler posten würdest, die Du da bekommst, könnte man sicher versuchen sich einen Reim darauf zu machen.
Aber ohne weitere Infos müssen wir wohl auf die Kristallkugel von Uwe warten
Jetzt hab ich im Netz schon was über das einbinden von Libs in eigene Libs gelesen und erfahren, dass die Arduino IDE damit wohl nicht ganz klar kommt. Hat jemand ne Lösung um das Problem zubeheben?
Und die Lösung, die du da doch auch gelesen haben solltest, geht nicht?
Sieht dein Sketch so aus: #include <LiquidCrystal.h> // auch wenn's eigentlich gar nicht gebraucht wird #include "MenuFrame.h" // hat selbst ein #include <LiquidCrystal.h> , das reicht aber nicht für die IDE
Dein Problem ist nicht, das die Lib nicht gefunden wird, sondern das Du den Konstruktor der LiquidCrystal Klasse falsch aufrufst.
Dieser erwartet, wie die Fehlermeldung auch besagt wenigstens 6 Parameter, nämlich die Pins an denen das Display hängt.
Ein Aufruf von 'LiquidCrystal::LiquidCrystal()' in Deinem Konstruktor der Klasse MenuFrame geht so also nicht. hier solltest Du auch auch die entsprechenden Pins übergeben, bzw. ein fertig initialisiertes Objekt von LiquidCrystal übergeben.
Letzteres wäre taktisch günstiger, da der User ja ggf. das Display auch direkt ansprechen will.
mkl0815:
Ein Aufruf von 'LiquidCrystal::LiquidCrystal()' in Deinem Konstruktor der Klasse MenuFrame geht so also nicht. hier solltest Du auch auch die entsprechenden Pins übergeben, bzw. ein fertig initialisiertes Objekt von LiquidCrystal übergeben.
Letzteres wäre taktisch günstiger, da der User ja ggf. das Display auch direkt ansprechen will.
Daran hab ich auch gedacht. Allerdings muss ich doch dann in meiner Klasse ein LCD Objekt anlegen um das übergeben Objekt dort hinzukopieren oder wie soll ich die sache angehen?
Damit kann beim Erzeugen von MenuFrame das LCD gleich übergeben werden.
Zusätzlich kannst Du das aber auch Deine Klasse machen lassen:
MenuFrame::MenuFrame(uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t e, uint8_t f) {
this->myLCD = new LiquidCrystal(a,b,c,d,e,f);
}
Damit kann der Nutzer selbst entscheiden, ob er Deine Klasse das LCD erzeugen lassen will, oder ob er sein eigenes Objekt übergibt. Ein weiterer Vorteil ist, das im Fall das mehr als ein MenuFrame Objekt erzeugt wird, das gleiche LiquidCrystal Objekt an beide übergeben werden kann, was wieder Speicher spart.
Wichtig ist, das Du innerhalb Deiner Klasse die LCD-Methoden dann mit dem "->" Operator und nicht mehr mit dem "." Operator ansprechen musst.
Es wäre schön, wenn Du die Lib hier vorstellen könntest. Besser noch wäre eine Veröffentlichung unter der GPL oder LGPL, damit jeder der sie verwendet auch "rechtlich" sicher ist. "Public Domain" geht natürlich auch.