[erledigt] Denkfehler?

Hallo allerseits!

Kürzlich habe ich ein OLED-Display bestellt. Vorweg habe ich überlegt, eine selbstprogrammierte Bibliothek abzuspecken, um sie zum Erzeugen des Bildes zu verwenden, das das Display anzeigen soll. Abspecken, weil der Speicher eines ATmegas ja nicht sooo riesig ist.

Jetzt fiel mir aber ein, dass sowieso nur diejenigen Teile einer Bibliothek übersetzt (compiliert) werden, die in einem Programm verwendet werden.

Das heißt IMO, dass ich mir die Abspeckerei sparen kann und beim Programmieren nur darauf achten muss, in meinem Code nur ein paar wenige Teile meiner Bibliothek zu verwenden.

Steckt in meinen Überlegungen ein Denkfehler?

Gruß

Gregor

Nachtrag:
Inzwischen bin ich mir sicher, dass meine Überlegungen richtig sind. Und ich muss meine Bibliothek nicht nur nicht abspecken, sondern erweitern (vermutlich sogar neu schreiben): Ursprünglich ist meine Bibliothek nämlich für bunte (RGBA-) Bilder gedacht. D. h. dass es dort die Definition eines Pixels gibt (ein struct, das aus vier uint8 besteht). Das OLED-Display ist aber ein einfarbiges Ding, ein Pixel besteht dort nicht aus vier uint8, sondern aus einem Bit. Ich muss meine Grafikbibliothek also noch um eine Pixeldefinition erweitern und kann den Rest meiner Bibliothek vermutlich neu programmieren (in Form von Templates). Das klingt nach einem Haufen Arbeit, aber das macht nichts, weil ich endlich mal einen superguten Grund habe, Templates zu benutzen.

Ich weiß nicht, wie clever der Linker ist, und ob man ihm vielleicht mit irgendwelchen Optionen auf die Sprünge helfen muß.

Probier doch einfach aus, wieviel Speicher der compilierte Sketch braucht, ohne und mit Verwendung der verdächtigen Funktionen.

DrDiettrich:
Ich weiß nicht, wie clever der Linker ist, und ob man ihm vielleicht mit irgendwelchen Optionen auf die Sprünge helfen muß.

Probier doch einfach aus, wieviel Speicher der compilierte Sketch braucht, ohne und mit Verwendung der verdächtigen Funktionen.

Bislang existiert noch kein Sketch, den ich compilieren könnte. Ich habe ja noch nicht einmal das Display hier. Aber danke für die Idee!

Gruß

Gregor

Compiler brauch auch kein Display.

skorpi08:
Compiler brauch auch kein Display.

-v pls

Nachtrag: Vergiss das „-v“. Ich glaube, ich habe verstanden, was Du meinst.

Gruß

Gregor

gregorss:
Das klingt nach einem Haufen Arbeit, aber das macht nichts, weil ich endlich mal einen superguten Grund habe, Templates zu benutzen.

Für die print() Funktionen? Das macht man eigentlich so dass man von der Arduino Print Klasse erbt. Dann muss man nur eine Funktion write(char c) implementieren die ein einzelnes Zeichen auf das Display schreibt. Danach kann man alle Funktionen aus der Print Klasse verwenden.

Serenifly:
Für die print() Funktionen? Das macht man ...

Nein, ich meine zum Beispiel eine Funktion, die Flächen füllt (Floodfill). Die arbeitet prinzipiell für beide „Pixelsorten“ gleich. Anstatt zwei Varianten zu implementieren, dürfte es besser sein, ein Template zu programmieren.

Gruß

Gregor

Ja, da sind Templates dann angebracht :slight_smile: