ich heiße Lukas und bin ganz neu hier im Forum. Zum Einstand habe ich gleich mal etwas Kniffliges mitgebracht
Ich habe ein größeres Projekt, dass soweit auch schon sehr gut funktioniert. Jetzt möchte ich das Ganze um mehrere Matrix Anzeigen erweitern, die jedoch alle unterschiedlich sind. Dazu möchte ich mit der Adafruit_NeoMatrix arbeiten. Damit das ganze jetzt aber nicht irgendwann unübersichtlich wird, hatte ich die Idee, alles, was mit der Matrix zu tun hat, in eine Klasse in einem eigenen Tab auszulagern. Ein super Vorhaben, wenn man sowohl mit Matrix, als auch mit externen Klassen noch nie gearbeitet hat
Die Matrix Anzeigen sollen nun verschiedene (fest definierte) Dinge anzeigen können. Das sind sowohl Zahlen und Buchstaben als auch Symbole. Der Zielzustand soll sein, dass ich aus dem Hauptprogramm heraus den Aufruf „Matrix1.show(symbol3)“ starte und die Matrix dann das festgelegte Symbol an der festgelegten Stelle anzeigt.
Wie gehe ich dazu am besten vor? Klar, in der Matrix Klasse müssen die ganzen Methoden definiert werden. Ich müsste dann also in meiner Methode die Methode der Adafruit Bibliothek aufrufen. Funktioniert das problemlos? Wo richte ich die Matrix an sich ein und definiere sie? Kann ich das auch in der Klasse machen, oder muss das im Hauptprogramm geschehen? Bzw. was ist hier am sinnvollsten?
Die Daten der Matrix und der Port sind immer gleich und können fest einprogrammiert werden.
Mach mit einem kleinen Demo-Sketch nur die Ausgabe von "Hello World" oder was auch immer.
Mach dir nur mal eine Anzeige.
Dann bastelst eine Klasse für die Anzeige - im gleichen Tab.
Dann gibst die Klasse in einem separaten Tab.
Wenn das dann funktioniert, dann kannst du das in deinen großen Sketch rüberholen.
wenn ich das richtig verstehe du hast keine Ahnung aber bist dir sicher dass du es unbedingt brauchst.
das Lib hat genug um damit bequem zu arbeiten. Wäre es nicht sinnvoller zuerst den Projekt zu verwirklichen und dann nach Bedarf die Übersichtlichkeit zu verschaffen?
Hier kann ich jetzt nur mit Matrix1 arbeiten, denn nur sie wird im allgemeinen Teil definiert. Ich müsste mir also (korrigiert mich gerne) eine Matrix mit einer Klasse erstmal definieren.
Im Hauptcode erstelle ich dann ein Objekt, dass als erstes diese Funktion zur Definition aufruft. Als Ergebnis bekomme ich dann (im Konkreten Fall hier) Matrix1 zurück. Dieses Matrix1 müsste ich dann an jede aufgerufene Funktion übergeben, damit die Ansteuerung eben auch auf genau dieser funktioniert. Passt das so von meinem Verständnis?
Wenn ja, ist die große Frage: Wie setze ich das um?
Genau das ist ja die Frage. Wie erzeuge ich die verschiedenen Anzeigen?
Jede Anzeige muss ja erstmal "konfiguriert" werden. Kann ich das über eine Methode in der Klasse lösen?
Dieses Matrix1 darf dort meines Erachtens nicht stehen, denn dann bin ich auf genau diese beschränkt. Aber wie bekomme ich das variabel, sodass ich mit verschiedenen Objekten (hinter jedem steckt eine Anzeige) auf die Methode zugreifen kann?
Nimm eine Referenz auf ein Objekt und wenn du das objekt anlegst übergibst du dem objekt die Referenz auf das Objekt. Versteht man nicht, gell? Benenne deine Objekte vernünftig!
Wenn das anzeigen sind, dann benenne deine anzeigen auch anzeigen.
Wenn es zwei Matrixen gibt, lege zwei Matrixen an.
Stell mal einen vollständing kompilierbaren Sketch ein der auch kompiliert. Kommentiere aus, was nicht kompilieren würde! Zeige zwei anzeigen!
Das steht so im Beispiel Sketch, also habe ich das einfach verwendet
Für mich zum Verständnis: Warum wird bei sowas auf Arrays gesetzt? Am Ende kommt das gleiche Ergebnis dabei heraus, welchen Vorteil bieten Arrays und was kann beim durchnummerieren problematisch werden?
Gute Frage, auch das kommt aus dem Sketch.
Ich habe vor einigen Jahren in der Schule einmal etwas mit objektorientierter Programmierung zu tun gehabt, habe das danach aber nie wieder gebraucht.
Danke schon einmal für euren Input bisher. Ich gehe das Thema die Tage noch einmal an und überarbeite dieses Teilprojekt.