Hab nach mehreren Jahren wieder mit dem Programmieren von Mikrocontrollern angefangen und mir einen Arduino Uno und Mega geholt.
Ich möchte mir gerne für das 16x2 Display Funktionen anpassen, da ich nur einzelne Werte Ein- bzw. Ausblenden möchte, quasi die NoDisplay() Funktion für einzelne Bereiche.
Ich dachte, ich vererbe einfach die LiquidCrystal Klasse und ergänze die fehlenden Funktionen. Aber wenn ich ein Objekt der neuen Klasse erzeugen will, kommt ein Fehler beim kompilieren.
Ich habe bisher nicht viel gemacht außer folgende Klasse erstellt und eine einfache Funktion ergänzt:
Wenn ich jetzt folgendermaßen das Objekt erstelle, geht's nicht:
new_LiquidCrystal lcd(34, 35, 36, 37, 38, 39);
Fehler: "no matching function for call to 'new_LiquidCrystal::new_LiquidCrystal(int, int, int, int, int, int)' "
Hab ich da irgendwas falsch verstanden mit der Vererbung?
Hallo, ja das stimmt, allerdings beinhaltet die LiquidCrystal folgendes:
LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
Dass der Kompiler 6 int interpretiert liegt wohl daran, dass er nicht weiß, dass ich die Pins nicht deklariert habe. Ergänze ich jeweils ein (uint_8), dann stehts entsprechend auch im ausgegebenen Fehler. Das ist also nicht das Problem.
Wenn ich aus der vererbten Klasse das Objekt erzeuge, kommt kein Fehler.
Das wohl auch - sonst ist's im Allgemeinen das Unvermögen, 'den Arsch hoch zu bekommen'.
Habe die letzten Tage viel mehr an der Gartenbeleuchtung des Bekannten rumgeschraubt, als eigene Projekte weiter zu verfolgen.
(wird jetzt aber genau so weiter gehen ... Morgen ist 'Abgabetermin')
Was allerdings auch ganz wichtig war und mir noch nicht bekannt:
Aufruf mit runden Klammern nur als globale Variable möglich. Ansonsten wird es nicht als Konstruktor erkannt. Innerhalb von Klasse oder Funktion muss eine geschweifte Klammer verwendet werden, die wohl immer funktioniert.